分布分析在實際數據分析實踐中應用廣泛,如性別分布、年齡分布、消費分布等。
本文將講解以下幾個知識點:
1.數據類型的修改
2.新的場生成方法
3.數據有效性檢查
4.性別和年齡分布
分布分析
1.導入相關的庫和包
進口熊貓作為pd
將matplotlib.pyplot作為plt導入
導入數學
2.數據處理
& gt& gt& gtdf = pd.read_csv('UserInfo.csv ')
& gt& gt& gtdf.info()
RangeIndex: 1000000個條目,0到999999
數據列(共4列):
UserId 1000000非空int64
CardId 1000000非空int64
LoginTime 1000000非空對象
DeviceType 1000000非空對象
dtypes: int64(2),object(2)
內存使用量:30.5 MB以上
因為接下來需要做年齡分布分析,但是從源數據info()方法,我們知道沒有年齡字段,需要自己生成。
#檢查年齡範圍並進行分區。
& gt& gt& gtdf['年齡']。max(),df['年齡']。最小值()
# (45, 18)
& gt& gt& gtbin =[0,18,25,30,35,40,100]
& gt& gt& gt標簽= ['18歲及以下',' 19歲至25歲',' 26歲至30歲',' 31歲至35歲',' 36歲至40歲',' 41歲及以上']
& gt& gt& gtDf['年齡分層'] = pd.cut (df ['年齡'],箱,標簽=標簽)
計算年齡
因為數據來自線下,所以數據的有效性還沒有得到驗證。在計算年齡之前,應該對數據進行識別和驗證。
#選擇出生日期:月日
& gt& gt& gtdf[['月','日']] = df['日期出生'].str.split('-',expand=True)。位置[:,1:2]
#選擇流產看看有沒有31。
& gt& gt& gtdf_small_month = df[df['月']。isin(['02 ',' 04 ',' 06 ',' 09 ',' 11'])]
#無效數據,如圖所示。
& gt& gt& gtdf _ small _ month[df _ small _ month[' day ']= = ' 31 ']
#全部刪除,全部為無效數據。
& gt& gt& gtdf . drop(df _ small _ month[df _ small _ month[' day ']= = ' 31 ']。index,inplace=True)
#同理,查二月。
& gt& gt& gtdf_2 = df[df['月']= ' 02 ']
#可以仔細做2月份的校準,判斷是否運行年份再刪除。
& gt& gt& gtdf_2[df_2['日']。isin(['29 ',' 30 ',' 31'])]
#全部刪除
& gt& gt& gtdf.drop(df_2[df_2['日']。isin(['29 ',' 30 ',' 31'])]。index,inplace=True)
#計算年齡
#方法1
& gt& gt& gtdf['年齡'] = df['出生日期']。apply(lambda x:math . floor((PD . datetime . now()-PD . to _ datetime(x))。天/365))
#方法2
& gt& gt& gtdf['出生日期']。apply(lambda x : pd.datetime.now()。year - pd.to_datetime(x)。年份)
4.年齡分布
#檢查年齡範圍並進行分區。
& gt& gt& gtdf['年齡']。max(),df['年齡']。最小值()
# (45, 18)
& gt& gt& gtbin =[0,18,25,30,35,40,100]
& gt& gt& gt標簽= ['18歲及以下',' 19歲至25歲',' 26歲至30歲',' 31歲至35歲',' 36歲至40歲',' 41歲及以上']
& gt& gt& gtDf['年齡分層'] = pd.cut (df ['年齡'],箱,標簽=標簽)
因為這個數據記錄了用戶登錄信息,所以肯定有重復的數據。Python如此強大,以至於可以使用nunique()方法進行重復數據刪除統計。
#檢查是否有重復值
& gt& gt& gtdf.duplicated('UserId ')。sum() #47681
#總數據輸入
& gt& gt& gtdf.count() #980954
雖然分組後也可以用count()方法計算分布,但僅限於沒有重復數據的情況。Python是如此的不可戰勝,它提供了nunique()方法,可以用來計算有重復值的情況。