像Excel一樣使用python進行數據分析(1)
像Excel一樣使用python進行數據分析(2)
7,數據匯總
第七部分是對數據進行分類匯總,Excel中使用分類匯總和數據透視可以按特定維度對數據進行匯總,python中使用的主要函數是groupby和pivot_table。下面分別介紹這兩個函數的使用方法。
分類匯總
Excel的數據目錄下提供了“分類匯總”功能,可以按指定的字段和匯總方式對數據表進行匯總。Python中通過Groupby函數完成相應的操作,並可以支持多級分類匯總。
Groupby是進行分類匯總的函數,使用方法很簡單,制定要分組的列名稱就可以,也可以同時制定多個列名稱,groupby按列名稱出現的順序進行分組。同時要制定分組后的匯總方式,常見的是計數和求和兩種。
# 對所有列進行計數匯總 df_inner.groupby('city').count()

可以在groupby中設置列名稱來對特定的列進行匯總。下面的代碼中按城市對id字段進行匯總計數。
#對特定的ID列進行計數匯總 df_inner.groupby('city')['id'].count() city beijing 2 guangzhou 1 shanghai 2 shenzhen 1 Name: id, dtype: int64
在前面的基礎上增加第二個列名稱,分布對city和size兩個字段進行計數匯總。
#對兩個字段進行匯總計數 df_inner.groupby(['city','size'])['id'].count() city size beijing A 1 F 1 guangzhou A 1 shanghai A 1 B 1 shenzhen C 1 Name: id, dtype: int64
除了計數和求和外,還可以對匯總后的數據同時按多個維度進行計算,下面的代碼中按城市對price字段進行匯總,並分別計算price的數量,總金額和平均金額。
#對city字段進行匯總並計算price的合計和均值。 df_inner.groupby('city')['price'].agg([len,np.sum, np.mean])

數據透視
Excel中的插入目錄下提供“數據透視表”功能對數據表按特定維度進行匯總。Python中也提供了數據透視表功能。通過pivot_table函數實現同樣的效果。
數據透視表也是常用的一種數據分類匯總方式,並且功能上比groupby要強大一些。下面的代碼中設定city為行字段,size為列字段,price為值字段。分別計算price的數量和金額並且按行與列進行匯總。
#數據透視表 pd.pivot_table(df_inner,index=["city"],values=["price"],columns=["size"],aggfunc=[len,np.sum],fill_value=0,margins=True)

8,數據統計
第九部分為數據統計,這里主要介紹數據采樣,標准差,協方差和相關系數的使用方法。
數據采樣
Excel的數據分析功能中提供了數據抽樣的功能,如下圖所示。Python通過sample函數完成數據采樣。
Sample是進行數據采樣的函數,設置n的數量就可以了。函數自動返回參與的結果。
#簡單的數據采樣 df_inner.sample(n=3)
Weights參數是采樣的權重,通過設置不同的權重可以更改采樣的結果,權重高的數據將更有希望被選中。這里手動設置6條數據的權重值。將前面4個設置為0,后面兩個分別設置為0.5。
#手動設置采樣權重 weights = [0, 0, 0, 0, 0.5, 0.5] df_inner.sample(n=2, weights=weights)
從采樣結果中可以看出,后兩條權重高的數據被選中。
Sample函數中還有一個參數replace,用來設置采樣后是否放回。
#采樣后不放回 df_inner.sample(n=6, replace=False)
#采樣后放回 df_inner.sample(n=6, replace=True)
描述統計
Excel中的數據分析中提供了描述統計的功能。Python中可以通過Describe對數據進行描述統計。
Describe函數是進行描述統計的函數,自動生成數據的數量,均值,標准差等數據。下面的代碼中對數據表進行描述統計,並使用round函數設置結果顯示的小數位。並對結果數據進行轉置。
#數據表描述性統計 df_inner.describe().round(2).T
標准差
Python中的Std函數用來接算特定數據列的標准差。
#標准差 df_inner['price'].std() 1523.3516556155596
協方差
Excel中的數據分析功能中提供協方差的計算,python中通過cov函數計算兩個字段或數據表中各字段間的協方差。
Cov函數用來計算兩個字段間的協方差,可以只對特定字段進行計算,也可以對整個數據表中各個列之間進行計算。
#兩個字段間的協方差 df_inner['price'].cov(df_inner['m-point']) 17263.200000000001
#數據表中所有字段間的協方差 df_inner.cov()

相關分析
Excel的數據分析功能中提供了相關系數的計算功能,python中則通過corr函數完成相關分析的操作,並返回相關系數。
Corr函數用來計算數據間的相關系數,可以單獨對特定數據進行計算,也可以對整個數據表中各個列進行計算。相關系數在-1到1之間,接近1為正相關,接近-1為負相關,0為不相關。
#相關性分析 df_inner['price'].corr(df_inner['m-point']) 0.77466555617085264
#數據表相關性分析 df_inner.corr()

9,數據輸出
第九部分是數據輸出,處理和分析完的數據可以輸出為xlsx格式和csv格式。
寫入excel
#輸出到excel格式 df_inner.to_excel('excel_to_python.xlsx', sheet_name='bluewhale_cc')
寫入csv
#輸出到CSV格式 df_inner.to_csv('excel_to_python.csv')
在數據處理的過程中,大部分基礎工作是重復和機械的,對於這部分基礎工作,我們可以使用自定義函數進行自動化。以下簡單介紹對數據表信息獲取自動化處理。
#創建數據表 df = pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006], "date":pd.date_range('20130102', periods=6), "city":['Beijing ', 'SH', ' guangzhou ', 'Shenzhen', 'shanghai','BEIJING '], "age":[23,44,54,32,34,32], "category":['100-A','100-B','110-A','110-C','210-A','130-F'], "price":[1200,np.nan,2133,5433,np.nan,4432]}, columns =['id','date','city','category','age','price'])
#創建自定義函數 def table_info(x): shape=x.shape types=x.dtypes colums=x.columns print("數據維度(行,列):\n",shape) print("數據格式:\n",types) print("列名稱:\n",colums)
#調用自定義函數獲取df數據表信息並輸出結果 table_info(df) 數據維度(行,列): (6, 6) 數據格式: id int64 date datetime64[ns] city object category object age int64 price float64 dtype: object 列名稱: Index(['id', 'date', 'city', 'category', 'age', 'price'], dtype='object')
本篇是《像Excel一樣使用python進行數據分析》系列文章的最后一篇。在這個系列中我們列舉了python中36個簡單的函數來實現excel中最常見的一些功能。感興趣的朋友可以下載並閱讀pandas官方文檔,里面有更詳細的函數說明。