小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

像Excel一樣使用python進(jìn)行數(shù)據(jù)分析-(3)

 昵稱QAb6ICvc 2017-05-11

像Excel一樣使用python進(jìn)行數(shù)據(jù)分析-(3)

藍(lán)鯨的網(wǎng)站分析筆記 2017-04-21 14:02

像Excel一樣使用python進(jìn)行數(shù)據(jù)分析-(3)

Excel是數(shù)據(jù)分析中最常用的工具,本篇文章通過(guò)python與excel的功能對(duì)比介紹如何使用python通過(guò)函數(shù)式編程完成excel中的數(shù)據(jù)處理及分析工作。在Python中pandas庫(kù)用于數(shù)據(jù)處理,我們從1787頁(yè)的pandas官網(wǎng)文檔中總結(jié)出最常用的36個(gè)函數(shù),通過(guò)這些函數(shù)介紹如何通過(guò)python完成數(shù)據(jù)生成和導(dǎo)入,數(shù)據(jù)清洗,預(yù)處理,以及最常見(jiàn)的數(shù)據(jù)分類,數(shù)據(jù)篩選,分類匯總,透視等最常見(jiàn)的操作。

這個(gè)系列文章內(nèi)容共分為9個(gè)部分。已由人民郵電出版社出版,感興趣的朋友可以在異步社區(qū)獲取完整版。

像Excel一樣使用python進(jìn)行數(shù)據(jù)分析-(3)

這是第三篇,介紹第7-9部分的內(nèi)容,數(shù)據(jù)匯總,數(shù)據(jù)統(tǒng)計(jì),和數(shù)據(jù)輸出。

像Excel一樣使用python進(jìn)行數(shù)據(jù)分析-(3)

7,數(shù)據(jù)匯總

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

分類匯總

Excel的數(shù)據(jù)目錄下提供了“分類匯總”功能,可以按指定的字段和匯總方式對(duì)數(shù)據(jù)表進(jìn)行匯總。Python中通過(guò)Groupby函數(shù)完成相應(yīng)的操作,并可以支持多級(jí)分類匯總。

像Excel一樣使用python進(jìn)行數(shù)據(jù)分析-(3)

Groupby是進(jìn)行分類匯總的函數(shù),使用方法很簡(jiǎn)單,制定要分組的列名稱就可以,也可以同時(shí)制定多個(gè)列名稱,groupby按列名稱出現(xiàn)的順序進(jìn)行分組。同時(shí)要制定分組后的匯總方式,常見(jiàn)的是計(jì)數(shù)和求和兩種。

#對(duì)所有列進(jìn)行計(jì)數(shù)匯總

df_inner.groupby('city').count()

像Excel一樣使用python進(jìn)行數(shù)據(jù)分析-(3)

可以在groupby中設(shè)置列名稱來(lái)對(duì)特定的列進(jìn)行匯總。下面的代碼中按城市對(duì)id字段進(jìn)行匯總計(jì)數(shù)。

#對(duì)特定的ID列進(jìn)行計(jì)數(shù)匯總

df_inner.groupby('city')['id'].count()

city

beijing 2

guangzhou 1

shanghai 2

shenzhen 1

Name: id, dtype: int64

在前面的基礎(chǔ)上增加第二個(gè)列名稱,分布對(duì)city和size兩個(gè)字段進(jìn)行計(jì)數(shù)匯總。

#對(duì)兩個(gè)字段進(jìn)行匯總計(jì)數(shù)

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

除了計(jì)數(shù)和求和外,還可以對(duì)匯總后的數(shù)據(jù)同時(shí)按多個(gè)維度進(jìn)行計(jì)算,下面的代碼中按城市對(duì)price字段進(jìn)行匯總,并分別計(jì)算price的數(shù)量,總金額和平均金額。

#對(duì)city字段進(jìn)行匯總并計(jì)算price的合計(jì)和均值。

df_inner.groupby('city')['price'].agg([len,np.sum, np.mean])

像Excel一樣使用python進(jìn)行數(shù)據(jù)分析-(3)

數(shù)據(jù)透視

Excel中的插入目錄下提供“數(shù)據(jù)透視表”功能對(duì)數(shù)據(jù)表按特定維度進(jìn)行匯總。Python中也提供了數(shù)據(jù)透視表功能。通過(guò)pivot_table函數(shù)實(shí)現(xiàn)同樣的效果。

像Excel一樣使用python進(jìn)行數(shù)據(jù)分析-(3)

數(shù)據(jù)透視表也是常用的一種數(shù)據(jù)分類匯總方式,并且功能上比groupby要強(qiáng)大一些。下面的代碼中設(shè)定city為行字段,size為列字段,price為值字段。分別計(jì)算price的數(shù)量和金額并且按行與列進(jìn)行匯總。

#數(shù)據(jù)透視表

pd.pivot_table(df_inner,index=["city"],values=["price"],columns=["size"],aggfunc=

[len,np.sum],fill_value=0,margins=True)

像Excel一樣使用python進(jìn)行數(shù)據(jù)分析-(3)

8,數(shù)據(jù)統(tǒng)計(jì)

第九部分為數(shù)據(jù)統(tǒng)計(jì),這里主要介紹數(shù)據(jù)采樣,標(biāo)準(zhǔn)差,協(xié)方差和相關(guān)系數(shù)的使用方法。

數(shù)據(jù)采樣

Excel的數(shù)據(jù)分析功能中提供了數(shù)據(jù)抽樣的功能,如下圖所示。Python通過(guò)sample函數(shù)完成數(shù)據(jù)采樣。

像Excel一樣使用python進(jìn)行數(shù)據(jù)分析-(3)

Sample是進(jìn)行數(shù)據(jù)采樣的函數(shù),設(shè)置n的數(shù)量就可以了。函數(shù)自動(dòng)返回參與的結(jié)果。

#簡(jiǎn)單的數(shù)據(jù)采樣

df_inner.sample(n=3)

像Excel一樣使用python進(jìn)行數(shù)據(jù)分析-(3)

Weights參數(shù)是采樣的權(quán)重,通過(guò)設(shè)置不同的權(quán)重可以更改采樣的結(jié)果,權(quán)重高的數(shù)據(jù)將更有希望被選中。這里手動(dòng)設(shè)置6條數(shù)據(jù)的權(quán)重值。將前面4個(gè)設(shè)置為0,后面兩個(gè)分別設(shè)置為0.5。

#手動(dòng)設(shè)置采樣權(quán)重

weights = [0, 0, 0, 0, 0.5, 0.5]

df_inner.sample(n=2, weights=weights)

像Excel一樣使用python進(jìn)行數(shù)據(jù)分析-(3)

從采樣結(jié)果中可以看出,后兩條權(quán)重高的數(shù)據(jù)被選中。

像Excel一樣使用python進(jìn)行數(shù)據(jù)分析-(3)

Sample函數(shù)中還有一個(gè)參數(shù)replace,用來(lái)設(shè)置采樣后是否放回。

#采樣后不放回

df_inner.sample(n=6, replace=False)

像Excel一樣使用python進(jìn)行數(shù)據(jù)分析-(3)

#采樣后放回

df_inner.sample(n=6, replace=True)

像Excel一樣使用python進(jìn)行數(shù)據(jù)分析-(3)

描述統(tǒng)計(jì)

Excel中的數(shù)據(jù)分析中提供了描述統(tǒng)計(jì)的功能。Python中可以通過(guò)Describe對(duì)數(shù)據(jù)進(jìn)行描述統(tǒng)計(jì)。

像Excel一樣使用python進(jìn)行數(shù)據(jù)分析-(3)

Describe函數(shù)是進(jìn)行描述統(tǒng)計(jì)的函數(shù),自動(dòng)生成數(shù)據(jù)的數(shù)量,均值,標(biāo)準(zhǔn)差等數(shù)據(jù)。下面的代碼中對(duì)數(shù)據(jù)表進(jìn)行描述統(tǒng)計(jì),并使用round函數(shù)設(shè)置結(jié)果顯示的小數(shù)位。并對(duì)結(jié)果數(shù)據(jù)進(jìn)行轉(zhuǎn)置。

#數(shù)據(jù)表描述性統(tǒng)計(jì)

df_inner.describe().round(2).T

像Excel一樣使用python進(jìn)行數(shù)據(jù)分析-(3)

標(biāo)準(zhǔn)差

Python中的Std函數(shù)用來(lái)接算特定數(shù)據(jù)列的標(biāo)準(zhǔn)差。

#標(biāo)準(zhǔn)差

df_inner['price'].std()

1523.3516556155596

協(xié)方差

Excel中的數(shù)據(jù)分析功能中提供協(xié)方差的計(jì)算,python中通過(guò)cov函數(shù)計(jì)算兩個(gè)字段或數(shù)據(jù)表中各字段間的協(xié)方差。

像Excel一樣使用python進(jìn)行數(shù)據(jù)分析-(3)

Cov函數(shù)用來(lái)計(jì)算兩個(gè)字段間的協(xié)方差,可以只對(duì)特定字段進(jìn)行計(jì)算,也可以對(duì)整個(gè)數(shù)據(jù)表中各個(gè)列之間進(jìn)行計(jì)算。

#兩個(gè)字段間的協(xié)方差

df_inner['price'].cov(df_inner['m-point'])

17263.200000000001

#數(shù)據(jù)表中所有字段間的協(xié)方差

df_inner.cov()

像Excel一樣使用python進(jìn)行數(shù)據(jù)分析-(3)

相關(guān)分析

Excel的數(shù)據(jù)分析功能中提供了相關(guān)系數(shù)的計(jì)算功能,python中則通過(guò)corr函數(shù)完成相關(guān)分析的操作,并返回相關(guān)系數(shù)。

像Excel一樣使用python進(jìn)行數(shù)據(jù)分析-(3)

Corr函數(shù)用來(lái)計(jì)算數(shù)據(jù)間的相關(guān)系數(shù),可以單獨(dú)對(duì)特定數(shù)據(jù)進(jìn)行計(jì)算,也可以對(duì)整個(gè)數(shù)據(jù)表中各個(gè)列進(jìn)行計(jì)算。相關(guān)系數(shù)在-1到1之間,接近1為正相關(guān),接近-1為負(fù)相關(guān),0為不相關(guān)。

#相關(guān)性分析

df_inner['price'].corr(df_inner['m-point'])

0.77466555617085264

#數(shù)據(jù)表相關(guān)性分析

df_inner.corr()

像Excel一樣使用python進(jìn)行數(shù)據(jù)分析-(3)

9,數(shù)據(jù)輸出

第九部分是數(shù)據(jù)輸出,處理和分析完的數(shù)據(jù)可以輸出為xlsx格式和csv格式。

寫(xiě)入excel

#輸出到excel格式

df_inner.to_excel('excel_to_python.xlsx', sheet_name='bluewhale_cc')

像Excel一樣使用python進(jìn)行數(shù)據(jù)分析-(3)

寫(xiě)入csv

#輸出到CSV格式

df_inner.to_csv('excel_to_python.csv')

在數(shù)據(jù)處理的過(guò)程中,大部分基礎(chǔ)工作是重復(fù)和機(jī)械的,對(duì)于這部分基礎(chǔ)工作,我們可以使用自定義函數(shù)進(jìn)行自動(dòng)化。以下簡(jiǎn)單介紹對(duì)數(shù)據(jù)表信息獲取自動(dòng)化處理。

#創(chuàng)建數(shù)據(jù)表

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'])

#創(chuàng)建自定義函數(shù)

def table_info(x):

shape=x.shape

types=x.dtypes

colums=x.columns

print("數(shù)據(jù)維度(行,列):\n",shape)

print("數(shù)據(jù)格式:\n",types)

print("列名稱:\n",colums)

#調(diào)用自定義函數(shù)獲取df數(shù)據(jù)表信息并輸出結(jié)果

table_info(df)

數(shù)據(jù)維度(行,列):

(6, 6)

數(shù)據(jù)格式:

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進(jìn)行數(shù)據(jù)分析》系列文章的最后一篇。在這個(gè)系列中我們列舉了python中36個(gè)簡(jiǎn)單的函數(shù)來(lái)實(shí)現(xiàn)excel中最常見(jiàn)的一些功能。感興趣的朋友可以下載并閱讀pandas官方文檔,里面有更詳細(xì)的函數(shù)說(shuō)明。也歡迎給我留言進(jìn)行交流。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多