寫在前面
如果你忘記了前面的文章,可以看看加深印象:
Pandas數據處理
Python數據分析實戰:缺失值處理
Python數據分析實戰:獲取數據
然後可以進入今天的正文
一、描述性統計分析
Excel裏可以用【數據分析】功能裏的【描述統計】功能來查看數據集常用的統計指標,但這裏只能是對數值型的數據進行統計。
pandas裏可以用describe方法對整個數據集做一個描述性統計分析,當然這裏也只是對數值型數據纔可以出結果,非數值型數據不在統計範圍內。
# 描述性統計分析
df_list.describe()
得到結果如下,可以看到count(計數)、mean(均值)、std(標準差)、min(最小值)、max(最大值)、25%、50%、75%分別表示3/4位數、中位數和1/4位數。
行列轉置
由於字段太多了,所以這裏可以轉置一下,方便查看,用.T轉置
# 行列轉置
df_list.describe().T
結果如圖,更符合一個表格的習慣,可以看到能夠被統計出來的只有數值型數據,字符型的數據是統計不出來的。
觀察到最小入住天數(minimum_nights)這個字段最小值、1/4位數、中位數、3/4位數都是1,說明大部分房源對最小入住天數的要求都是1天。同樣的結論適用於每月評論數(reviews_per_month)這個字段
二、分組分析
Excel裏用數據透視表可以實現數據分組計算的功能。
看下neighborhood_new字段都有哪些值,用value_counts方法對出現次數計數
# 數值計數
df_list["neighborhood_new"].value_counts()
結果可以看到neighborhood_new字段下總共有多少個區縣分類及其出現的次數按降序排列下來了,可以看到朝陽區的房源最多,平谷區的房源最少。
還可以用groupby方法實現分組計數
# 分組
df_list.groupby("neighborhood_new")["neighborhood_new"].count()
得到的結果是一樣的
對room_type_new一列也可以分組看下結果
df_list["room_type_new"].value_counts()
可以看到房間類型上有3種分類,整套房源(Entire home)最多,合租型的房源(Shared room)最少。
三、交叉分析
分組
對區域分組,統計不同區域房價的水平,同樣用groupby方法分組,但是可以用agg方法一次使用多種彙總方式。
df_list.groupby("neighborhood_new")["price"].agg(["max","min","mean","count"])
結果如圖,對neighborhood_new字段分組,對分組後的價格求最大最小平均值並計數,可以看到懷柔區的房價平均值最高,豐臺區最低。
對房間類型分組,並將結果按均值降序排列
r_p = df_list.groupby("room_type_new")["price"].agg(["max","min","mean","count"]).reset_index()
r_p.sort_values("mean",ascending = False)
結果如圖,整租的房價均值最高,合租最低,很合理的結果。
透視
對房間類型和區域做一個透視,使用pivot_table方法,和Excel裏的數據透視表是一種類型的操作,第一個參數是要透視的數據,values參數是Excel透視表中的值區域,即要進行彙總的字段,index參數是Excel透視表中的行區域,columns參數是列區域,aggfuc參數是要對values進行彙總的類型。
pd.pivot_table(df_list,values = "price",index = "neighborhood_new",
columns = "room_type_new",aggfunc = "mean",margins = True)
結果如圖,可以看到整租、合租、單間在各個區域中的價格分佈。
四、相關性分析
相關性分析是用來描述變量之間相關關係的結果,用相關係數r來表示,r>0表示正相關,r<0表示負相關,r的絕對值越接近1,表示越高度相關。 Excel裏用【數據分析】工具裏的【相關係數】功能可以直接計算出各個字段的相關係數。
python裏可以用corr函數計算數據間的相關係數,對整個數據表計算,並對結果取小數點後4位
# 計算相關係數
df_list.corr().round(4)
結果如下,就可以得到各個列之間的相關係數。
但是這裏我們其實最關注的是他們同價格之間的相關性,也就是圖中標紅的部分,可以對這列的數值排個序。
數值排序
數值排序就是讓整個數據表按照指定列升序或降序排列,用到sort_values方法。對求完相關係數後的數據框選擇其price列進行降序,第一個參數是對哪一列進行排序,第二個參數ascending = False是降序排列,默認是True升序。
# 數值排序
corr_p = df_list.corr().round(4)
corr_p["price"].sort_values(ascending = False)
結果如下,可以看到,房價和經緯度(latitude、longitude)的相關性是最高的,除此以外相比其他變量,可預定天數(availability_365)和價格最正相關的,其次每月評論數量(reviews_per_month)和價格呈負相關。
猜你喜歡:
數據分析實戰:母嬰商品分析
@ 作者:可樂
@ 公衆號/知乎專欄/頭條/簡書:可樂的數據分析之路
@ 個人微信:data_cola