像Excel一樣使用python進行數據分析(3)


像Excel一樣使用python進行數據分析(1)

像Excel一樣使用python進行數據分析(2)

7,數據匯總

第七部分是對數據進行分類匯總,Excel中使用分類匯總和數據透視可以按特定維度對數據進行匯總,python中使用的主要函數是groupby和pivot_table。下面分別介紹這兩個函數的使用方法。

分類匯總

Excel的數據目錄下提供了“分類匯總”功能,可以按指定的字段和匯總方式對數據表進行匯總。Python中通過Groupby函數完成相應的操作,並可以支持多級分類匯總。


Groupby是進行分類匯總的函數,使用方法很簡單,制定要分組的列名稱就可以,也可以同時制定多個列名稱,groupby按列名稱出現的順序進行分組。同時要制定分組后的匯總方式,常見的是計數和求和兩種。

# 對所有列進行計數匯總
df_inner.groupby('city').count()

 

 
像Excel一樣使用python進行數據分析(3)-數據分析網

可以在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進行數據分析(3)-數據分析網

數據透視

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)

 

 
像Excel一樣使用python進行數據分析(3)-數據分析網

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

 

 

像Excel一樣使用python進行數據分析(3)-數據分析網
標准差
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進行數據分析(3)-數據分析網

相關分析
Excel的數據分析功能中提供了相關系數的計算功能,python中則通過corr函數完成相關分析的操作,並返回相關系數。

 

Corr函數用來計算數據間的相關系數,可以單獨對特定數據進行計算,也可以對整個數據表中各個列進行計算。相關系數在-1到1之間,接近1為正相關,接近-1為負相關,0為不相關。

#相關性分析
df_inner['price'].corr(df_inner['m-point'])
0.77466555617085264
#數據表相關性分析
df_inner.corr()

 

 
 
像Excel一樣使用python進行數據分析(3)-數據分析網

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官方文檔,里面有更詳細的函數說明。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM