成為領導的秘密
- 運用python中的numpy、pandas,matplotlib、seaborn等包,可以進行數據統計、數據分析,數據可視化。本文就是通過成為領導的秘密這個案例來簡單做一下展示。
- 數據分析的基本過程一般分為以下幾個部分:提出問題、理解數據、數據清洗、數據分析、數據可視化。
現在從第一步開始著手。
一.提出問題
在數據分析之前,我們先要明確分析目標是什麼,這樣可以避免我們像無頭蒼蠅一樣拿著數據無從下手,也可以幫助我們更高效的選取數據,進行分析研究。
主要研究問題如下:
1、性別構成2、年齡情況3、專業情況二.理解數據
1.導入數據包,提取數據文件
# numpy:科學計算工具包# pandas:數據分析工具包# malplotlib:圖表繪製工具包import numpy as np import pandas as pd import matplotlib.pyplot as pltimport seaborn as snssns.set(stylex="white", context="talk",font="Vera") #解決中文亂碼問題# 導入數據data=pd.read_csv(C:/Users/Administrator/Desktop/地市級黨委書記資料庫(2000-10).csv,encoding=gbk)
2.查看導入數據的基本狀況
- 查看導入數據的類型
print(type(data)#輸出:pandas.core.frame.DataFrame
- 查看數據的基本大小
print(data.shape)#輸出:(3663, 23)
- 查看開頭幾行數據,看看數據是否讀取正確
print(data.head())
輸出前5條數據
- 用描述函數describ來查看一下整個數據的基本狀況
print(data.describe(include=[np.object]))print(data.describe(include=[np.number]))
文本數據類型數據情況
describe(include=[np.object])函數是對文本數據統計每個欄位的有效數據數量count,唯一值數量unique,出現頻次最高的文本值top,以及最高頻次文本值的出現頻次freq句號.
數值型數據類型數據情況
describe(include=[np.number])函數是對數值型數據是統計每個欄位的有效數據量count,平均值mean,標準差std,最小值min,最大值max,四分位數25%,中位數50%,四分之三分位數75%.
三.問題研究
1.性別構成
- 市委書記性別比例
# 市委書記性別比例data_gender = data[性別]# 刪除所有缺失值(NaN),生成新的數據data_gender_redata_gender_re = data_gender[data_gender.notnull()]count = len(data_gender_re)count_m = len(data_gender_re[data_gender_re == 男])count_w = len(data_gender_re[data_gender_re == 女])rate_m = count_m/countrate_w = count_w/countprint(樣本量: + str(count) + "
", 男性樣本量: + str(count_m) + "
", 女性樣本量: + str(count_w) + "
", 男性比例: + str(rate_m*100)[:4] + % + "
", 女性比例: + str(rate_w*100)[:4] + % )# 輸出結果:# 樣本量:2708 # 男性樣本量:2633 # 女性樣本量:75 # 男性比例:97.2% # 女性比例:2.76%
男女比例
數據顯示在我們所選取的2708位市委書記中,男性佔97.2%,而女性比例僅佔2.76%。可見,「中國女性撐起半邊天」的說法在我國市委書記界顯得不現實啊。
- 按省份分析市委書記女性比例
data_gender2 = data[[省級政區名稱,性別]]data_gender2_re = data_gender2[data_gender2[性別].notnull()] # 去除缺失值# 按照省份統計出男女人數# crosstab(行,列)用於針對字元串數據的透視(類似excel的數據透視)pt = pd.crosstab(data_gender2_re[省級政區名稱], data_gender2_re[性別])# 計算出女性佔比# 這裡直接在pt數據中添加了一個新的欄位「女性佔比」# sort_values()排序,ascending = False表示降序pt[女性佔比] = pt[女] / (pt[女] + pt[男])pt2 = pt.sort_values(by = [女性佔比], ascending = False)print(pt2.head(15))
前15省份分析市委書記女性比例
- 柱狀圖展示:不同省份女性市委書記佔比
代碼如下:
import seaborn as snssns.set(stylex="white", context="talk",font="Vera")x = [女性市委書記佔比結構]y = pt2[女性佔比].tolist()fig = plt.figure(figsize=(6,4))sns.boxplot(data = y,palette="Greens")plt.title(女性市委書記佔比結構)plt.ylabel(女性佔比)sns.despine(bottom=True)plt.show()
結果輸出如下:
前15省份分析市委書記女性比例
雖然從全國整體範圍內看,女性想要成為市委書記的難度係數比較大,但是某些省份也存在一些相對比較大的機會,例如,山西、吉林、遼寧。
2.年齡情況、專業情況
# 年齡情況:整體年齡分布 / 入職年齡分布 / 卸任年齡分布# 新建變數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()
- 整體年齡分布
整體年齡分布
俗話說,姜還是老的辣,我們國家領導班子就印證這個道理,主要年齡分布在60-70歲之間。
- 入職年齡分布
入職年齡分布
上圖可見要想成為一位市委書記,都不得不接受漫長的等待和歷練。
*專業分布專業分布
看來專業對成為領導的影響也是很大的,50%領導人是社科專業出身,其次就是人文專業了,農科和醫科希望渺茫啊,所以建議有志於從政的小夥伴在選專業的時候就得注意了,選擇社科專業將來成為領導人的機會大一點喔。
推薦閱讀:
※簡單數據的處理、分析的學習與實踐筆記
※當excel不夠用時,如何利用Access進行數據分析?
※數據分析的三板斧
※數據分析 | 想入門數據分析要先了解這些才行
TAG:數據分析 |