前言

嗨喽~大家好呀,这里是魔王呐 !

闲的无聊的得我又来倒腾代码了~

今天给大家分享得是——122万人的生活工作和死亡数据分析

准备好了嘛~现在开始发车喽!!

@TOC

所需素材

获取素材点击

代码

import pandas as pddf = pd.read_csv('.\data\AgeDatasetV1.csv')df.info()df.describe().to_excel(r'.\result\describe.xlsx')df.isnull().sum().to_excel(r'.\result\nullsum.xlsx')df[df.duplicated()].to_excel(r'.\result\duplicated.xlsx')df.rename(columns=lambda x: x.replace(' ', '_').replace('-', '_'), inplace=True)print(df.columns)print(df[df['Birth_year'] < 0].to_excel(r'.\result\biryear0.xlsx'))  # 出生负数表示公元前
import pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns
plt.rcParams['font.sans-serif'] = ['SimHei']  # 显示中文标签plt.rcParams['axes.unicode_minus'] = Falsedf1 = pd.read_csv('./data/AgeDatasetV1.csv')# 列名规范化 重命名df1.rename(columns=lambda x: x.replace(' ', '_').replace('-', '_'), inplace=True)print(df1.columns)# print(Data.corr()) # 相关性# print(df1['Gender'].unique())  # 性别
# # 按不同年龄范围的死亡率百分比plt.figure(figsize=(12, 10))count = [df1[df1['Age_of_death'] > 100].shape[0],         df1.shape[0] - df1[(df1['Age_of_death'] <= 100) & (df1['Age_of_death'] > 90)].shape[0],         df1[(df1['Age_of_death'] <= 90) & (df1['Age_of_death'] > 70)].shape[0],         df1[(df1['Age_of_death'] <= 70) & (df1['Age_of_death'] > 50)].shape[0],         df1.shape[0] - (df1[df1['Age_of_death'] > 100].shape[0] +                         df1[(df1['Age_of_death'] <= 100) & (df1['Age_of_death'] > 90)].shape[0]                         + df1[(df1['Age_of_death'] <= 70) & (df1['Age_of_death'] > 50)].shape[0]                         + df1[(df1['Age_of_death'] <= 90) & (df1['Age_of_death'] > 70)].shape[0])         ]age = ['> 100', '> 90 & <= 100', '> 70 & <= 90', '> 50 & <= 70', '< 50']explode = [0.1, 0, 0.02, 0, 0]  # 设置各部分突出palette_color = sns.color_palette('pastel')plt.rc('font', family='SimHei', size=16)plt.pie(count, labels=age, colors=palette_color,        explode=explode, autopct='%.4f%%')plt.title("按不同年龄范围的死亡率百分比")plt.savefig(r'.\result\不同年龄范围的死亡率百分比.png')plt.show()

# 死亡人数前20的职业Occupation = list(df1['Occupation'].value_counts()[:20].keys())Occupation_count = list(df1['Occupation'].value_counts()[:20].values)plt.rc('font', family='SimHei', size=16)plt.figure(figsize=(14, 8))# sns.set_theme(style="darkgrid")p = sns.barplot(x=Occupation_count, y=Occupation)p.set_xlabel("人数", fontsize=20)p.set_ylabel("职业", fontsize=20)plt.title("前20的职业", fontsize=20)plt.subplots_adjust(left=0.18)plt.savefig(r'.\result\死亡人数前20的职业.png')plt.show()

# 死亡人数前10的死亡方式top_causes = df1.groupby('Manner_of_death').size().reset_index(name='count')top_causes = top_causes.sort_values(by='count', ascending=False).iloc[:10]fig = plt.figure(figsize=(10, 6))plt.barh(top_causes['Manner_of_death'], top_causes['count'], edgecolor='black')plt.title('死亡人数前10的死因.png')plt.xlabel('人数')plt.ylabel('死因')plt.tight_layout()  # 自动调整子图参数,使之填充整个图像区域plt.savefig(r'.\result\死亡人数前10的死因.png')plt.show()

# 死亡人数前20的出生年份birth_year = df1.groupby('Birth_year').size().reset_index(name='count')birth_year = birth_year.sort_values(by='count', ascending=False).iloc[:20]fig = plt.figure(figsize=(10, 6))plt.barh(birth_year['Birth_year'], birth_year['count'])plt.title('死亡人数前20的出生年份')plt.xlabel('人数')plt.ylabel('出生年份')plt.tight_layout()  # 自动调整子图参数,使之填充整个图像区域plt.savefig(r'.\result\死亡人数前20的出生年份.png')plt.show()
# 死亡人数前20的去世年份death_year = df1.groupby('Death_year').size().reset_index(name='count')# print(death_year)death_year = death_year.sort_values(by='count', ascending=False).iloc[:20]fig = plt.figure(figsize=(10, 10))plt.barh(death_year['Death_year'], death_year['count'])plt.title('死亡人数前20的去世年份')plt.xlabel('人数')plt.ylabel('去世年份')plt.tight_layout()plt.savefig(r'.\result\死亡人数前20的去世年份.png')plt.show()

# 按性别分列的死亡年龄趋势data = pd.DataFrame(    df1.groupby(['Gender', 'Age_of_death']).size().reset_index(name='count').sort_values(by='count', ascending=False))fig = plt.figure(figsize=(10, 10))sns.lineplot(data=data, x='Age_of_death', y='count', hue='Gender', linewidth=2)plt.legend(fontsize=8)plt.title('按性别分列的死亡年龄趋势')plt.xlabel('死亡年龄')plt.ylabel('人数')plt.tight_layout()plt.savefig(r'.\result\死亡人数前20的去世年份.png')plt.show()

# 前10的职业中 男性与女性的人数occupation = pd.DataFrame(df1['Occupation'].value_counts())top10_occupation = occupation.head(10)top_index = [i for i in top10_occupation.index]age_data = df1[df1['Occupation'].isin(top_index)]age_data = age_data[age_data['Gender'].isin(['Male', 'Female'])]sns.catplot(data=age_data, x='Occupation', kind='count', hue='Gender', height=10)plt.xticks(rotation=20)plt.xlabel('职业')plt.ylabel('人数')plt.tight_layout()plt.savefig(r'.\result\前10的职业中男女性人数.png')plt.show()

尾语

读书多了,容颜自然改变,许多时候,

自己可能以为许多看过的书籍都成了过眼云烟,不复记忆,其实他们仍是潜在的。

在气质里,在谈吐上,在胸襟的无涯,当然也可能显露在生活和文字里。

——三毛《送你一匹马》

本文章到这里就结束啦~感兴趣的小伙伴可以复制代码去试试哦 ?