import numpy as np import pandas as pd import matplotlib.pyplot as plt data = pd.read_csv('D:\\myfiles\\study\\python\\analyse\\數據團\\城市數據團_數據分析師_體驗課_課程資料\\數據資料\\地市級黨委書記數據庫(2000-10).csv', encoding='gbk') # 新建變量data_age,賦值包括年份、出生年份字段內容 # 清除缺失值 data_age = data[['出生年份','黨委書記姓名','年份']] data_age_re = data_age[data_age['出生年份'].notnull()] # 計算出總體年齡數據 df1 = 2017 - data_age_re['出生年份'] # 計算出入職年齡數據 df_yearmin = data_age_re[['黨委書記姓名','年份']].groupby(data_age_re['黨委書記姓名']).min() df2 = df_yearmin['年份'].groupby(df_yearmin['年份']).count() df_yearmax = data_age_re[['黨委書記姓名','年份']].groupby(data_age_re['黨委書記姓名']).max() df3 = df_yearmax['年份'].groupby(df_yearmax['年份']).count() # 專業狀況:專業結構 / 專業總體狀況 / 專業大類分佈 # 新建變量data_major,賦值包括年份、專業等字段內容,其中1表明是,0表明否 # 清除缺失值 data_major = data[['黨委書記姓名','年份','專業:人文','專業:社科','專業:理工','專業:農科','專業:醫科']] data_major_re = data_major[data_major['專業:人文'].notnull()] # 統計每一個人的專業 data_major_re['專業'] = data_major_re[['專業:人文', '專業:社科', '專業:理工', '專業:農科', '專業:醫科']].idxmax(axis=1) # 去重 data_major_st = data_major_re[['專業','黨委書記姓名']].drop_duplicates() # 計算出學歷結構數據 df4 = data_major_st['專業'].groupby(data_major_st['專業']).count() # 計算每一年專業總體狀況數據 df5 = pd.crosstab(data_major_re['年份'], data_major_re['專業']) # 計算每一年專業大類分佈數據 df5['社科比例'] = df5['專業:社科'] / (df5['專業:理工'] + df5['專業:醫科'] + df5['專業:社科'] + df5['專業:農科'] + df5['專業:人文']) df5['人文比例'] = df5['專業:人文'] / (df5['專業:理工'] + df5['專業:醫科'] + df5['專業:社科'] + df5['專業:農科'] + df5['專業:人文']) df5['理工農醫比例'] = (df5['專業:理工'] + df5['專業:醫科'] + df5['專業:農科'])/ (df5['專業:理工'] + df5['專業:醫科'] + df5['專業:社科'] + df5['專業:農科'] + df5['專業:人文']) # 年齡狀況:圖表繪製 # 建立一個圖表,大小爲12*8 fig_q2 = plt.figure(figsize = (14,12)) # 建立一個3*2的表格矩陣 ax1 = fig_q2.add_subplot(2,3,1) ax2 = fig_q2.add_subplot(2,3,2) ax3 = fig_q2.add_subplot(2,3,3) ax4 = fig_q2.add_subplot(2,3,4) ax5 = fig_q2.add_subplot(2,3,5) ax6 = fig_q2.add_subplot(2,3,6) # 繪製第一個表格 ax1.hist(df1,bins = 11,color = 'gray', alpha=0.9) ax1.set_title('總體年齡分佈') ax1.grid(True) # 繪製第二個表格 ax2.plot(df2,color = 'r',marker = 'o',alpha=0.9) ax2.set_title('入職年齡分佈') ax2.set_xticks(range(2000,2011,2)) ax2.grid(True) # 繪製第三個表格 ax3.plot(df3,color = 'g',marker = 'o',alpha=0.9) ax3.set_title('卸任年齡分佈') ax3.set_xticks(range(2000,2011,2)) ax3.grid(True) # 繪製第四個表格 ax4.bar(range(len(df4)),df4,color = 'y') ax4.set_xticklabels(['人文','農科','醫科','理工','社科']) ax4.grid(True) ax4.set_title('專業結構') # 繪製第五個表格 ax5.plot(df5.index,df5[['專業:人文','專業:農科','專業:醫科','專業:理工','專業:社科']]) ax5.grid(True) ax5.set_title('專業總體狀況') # 繪製第六個表格 ax6.bar(df5.index,df5['社科比例'],color = 'darkred',alpha=0.7) ax6.bar(df5.index,df5['人文比例'],color = 'darkred',bottom = df5['社科比例'],alpha=0.5) ax6.bar(df5.index,df5['理工農醫比例'],color = 'darkred',bottom = df5['人文比例'] + df5['社科比例'],alpha=0.3) ax6.grid(True) ax6.set_title('專業大類分佈:社科、人文、理工農醫') plt.show() import numpy as np import pandas as pd import matplotlib.pyplot as plt data = pd.read_csv('D:\\myfiles\\study\\python\\analyse\\數據團\\城市數據團_數據分析師_體驗課_課程資料\\數據資料\\地市級黨委書記數據庫(2000-10).csv', encoding='gbk') # 新建變量data_age,賦值包括年份、出生年份字段內容 # 清除缺失值 data_age = data[['出生年份','黨委書記姓名','年份']] data_age_re = data_age[data_age['出生年份'].notnull()] # 計算出總體年齡數據 df1 = 2017 - data_age_re['出生年份'] # 計算出入職年齡數據 df_yearmin = data_age_re[['黨委書記姓名','年份']].groupby(data_age_re['黨委書記姓名']).min() df2 = df_yearmin['年份'].groupby(df_yearmin['年份']).count() df_yearmax = data_age_re[['黨委書記姓名','年份']].groupby(data_age_re['黨委書記姓名']).max() df3 = df_yearmax['年份'].groupby(df_yearmax['年份']).count() # 專業狀況:專業結構 / 專業總體狀況 / 專業大類分佈 # 新建變量data_major,賦值包括年份、專業等字段內容,其中1表明是,0表明否 # 清除缺失值 data_major = data[['黨委書記姓名','年份','專業:人文','專業:社科','專業:理工','專業:農科','專業:醫科']] data_major_re = data_major[data_major['專業:人文'].notnull()] # 統計每一個人的專業 data_major_re['專業'] = data_major_re[['專業:人文', '專業:社科', '專業:理工', '專業:農科', '專業:醫科']].idxmax(axis=1) # 去重 data_major_st = data_major_re[['專業','黨委書記姓名']].drop_duplicates() # 計算出學歷結構數據 df4 = data_major_st['專業'].groupby(data_major_st['專業']).count() # 計算每一年專業總體狀況數據 df5 = pd.crosstab(data_major_re['年份'], data_major_re['專業']) # 計算每一年專業大類分佈數據 df5['社科比例'] = df5['專業:社科'] / (df5['專業:理工'] + df5['專業:醫科'] + df5['專業:社科'] + df5['專業:農科'] + df5['專業:人文']) df5['人文比例'] = df5['專業:人文'] / (df5['專業:理工'] + df5['專業:醫科'] + df5['專業:社科'] + df5['專業:農科'] + df5['專業:人文']) df5['理工農醫比例'] = (df5['專業:理工'] + df5['專業:醫科'] + df5['專業:農科'])/ (df5['專業:理工'] + df5['專業:醫科'] + df5['專業:社科'] + df5['專業:農科'] + df5['專業:人文']) # 年齡狀況:圖表繪製 # 建立一個圖表,大小爲12*8 fig_q2 = plt.figure(figsize = (14,12)) # 建立一個3*2的表格矩陣 ax1 = fig_q2.add_subplot(2,3,1) ax2 = fig_q2.add_subplot(2,3,2) ax3 = fig_q2.add_subplot(2,3,3) ax4 = fig_q2.add_subplot(2,3,4) ax5 = fig_q2.add_subplot(2,3,5) ax6 = fig_q2.add_subplot(2,3,6) # 繪製第一個表格 ax1.hist(df1,bins = 11,color = 'gray', alpha=0.9) ax1.set_title('總體年齡分佈') ax1.grid(True) # 繪製第二個表格 ax2.plot(df2,color = 'r',marker = 'o',alpha=0.9) ax2.set_title('入職年齡分佈') ax2.set_xticks(range(2000,2011,2)) ax2.grid(True) # 繪製第三個表格 ax3.plot(df3,color = 'g',marker = 'o',alpha=0.9) ax3.set_title('卸任年齡分佈') ax3.set_xticks(range(2000,2011,2)) ax3.grid(True) # 繪製第四個表格 ax4.bar(range(len(df4)),df4,color = 'y') ax4.set_xticklabels(['人文','農科','醫科','理工','社科']) ax4.grid(True) ax4.set_title('專業結構') # 繪製第五個表格 ax5.plot(df5.index,df5[['專業:人文','專業:農科','專業:醫科','專業:理工','專業:社科']]) ax5.grid(True) ax5.set_title('專業總體狀況') # 繪製第六個表格 ax6.bar(df5.index,df5['社科比例'],color = 'darkred',alpha=0.7) ax6.bar(df5.index,df5['人文比例'],color = 'darkred',bottom = df5['社科比例'],alpha=0.5) ax6.bar(df5.index,df5['理工農醫比例'],color = 'darkred',bottom = df5['人文比例'] + df5['社科比例'],alpha=0.3) ax6.grid(True) ax6.set_title('專業大類分佈:社科、人文、理工農醫') plt.show()