第七部分是對數據進行分類彙總,Excel中使用分類彙總和數據透視能夠按特定維度對數據進行彙總,python中使用的主要函數是groupby和pivot_table。下面分別介紹這兩個函數的使用方法。html
Excel的數據目錄下提供了「分類彙總」功能,能夠按指定的字段和彙總方式對數據表進行彙總。Python中經過Groupby函數完成相應的操做,並能夠支持多級分類彙總。python
Groupby是進行分類彙總的函數,使用方法很簡單,制定要分組的列名稱就能夠,也能夠同時制定多個列名稱,groupby按列名稱出現的順序進行分組。同時要制定分組後的彙總方式,常見的是計數和求和兩種。函數
# 對全部列進行計數彙總 df_inner.groupby('city').count()
能夠在groupby中設置列名稱來對特定的列進行彙總。下面的代碼中按城市對id字段進行彙總計數。post
#對特定的ID列進行計數彙總 df_inner.groupby('city')['id'].count() city beijing 2 guangzhou 1 shanghai 2 shenzhen 1 Name: id, dtype: int64
在前面的基礎上增長第二個列名稱,分佈對city和size兩個字段進行計數彙總。spa
#對兩個字段進行彙總計數 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的數量,總金額和平均金額。3d
#對city字段進行彙總並計算price的合計和均值。 df_inner.groupby('city')['price'].agg([len,np.sum, np.mean])
Excel中的插入目錄下提供「數據透視表」功能對數據表按特定維度進行彙總。Python中也提供了數據透視表功能。經過pivot_table函數實現一樣的效果。
數據透視表也是經常使用的一種數據分類彙總方式,而且功能上比groupby要強大一些。下面的代碼中設定city爲行字段,size爲列字段,price爲值字段。分別計算price的數量和金額而且按行與列進行彙總。excel
#數據透視表 pd.pivot_table(df_inner,index=["city"],values=["price"],columns=["size"],aggfunc=[len,np.sum],fill_value=0,margins=True)
第九部分爲數據統計,這裏主要介紹數據採樣,標準差,協方差和相關係數的使用方法。code
Excel的數據分析功能中提供了數據抽樣的功能,以下圖所示。Python經過sample函數完成數據採樣。htm
Sample是進行數據採樣的函數,設置n的數量就能夠了。函數自動返回參與的結果。blog
#簡單的數據採樣 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()
第九部分是數據輸出,處理和分析完的數據能夠輸出爲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官方文檔,裏面有更詳細的函數說明。