一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Pandas | 數(shù)據(jù)透視表

 微笑如酒 2018-09-11

往期回顧

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

數(shù)據(jù)透視表就是將數(shù)據(jù)的每一列作為輸入,輸出將數(shù)據(jù)不斷細分成多個維度累計信息的二維數(shù)據(jù)表,簡單來說,數(shù)據(jù)透視表更像是一種多維的GroupBy累計操作。

示例數(shù)據(jù)

本例使用了泰坦尼克號的乘客信息,這份數(shù)據(jù)包含性別(gender)、年齡(age)、船艙等級(class)和船票信息(fare paid)等等:

import numpy as np
import pandas as pd
import seaborn as sns
titanic = sns.load_dataset('titanic')
titanic.head()
泰坦尼克數(shù)據(jù)

手工制作數(shù)據(jù)透視表

可以使用之前學(xué)過的GroupBy來手工制作數(shù)據(jù)透視表,比如我們要統(tǒng)計不同性別乘客的生還率:

titanic.groupby('sex')[['survived']].mean()
不同性別乘客的生還率

可以看出有四分之三的女性被救,但只有五分之一的男性被救!

要是我們還想同時觀察不同性別與船艙等級的生還情況,根據(jù)GroupBy的操作流程,可以先將船艙等級(class)與性別(sex)分組,然后選擇生還狀態(tài)(survived)列,應(yīng)用均值(mean)累計函數(shù),再將結(jié)果組合,最后通過unstack來轉(zhuǎn)換多級索引:

titanic.groupby(['sex''class'])['survived'].aggregate('mean').unstack()
不同性別與船艙等級的生還情況

這樣的代碼是不是看起來有些復(fù)雜?所以 Pandas 提供了pivot_table方式來快速解決這種多維的累計分析任務(wù)。

數(shù)據(jù)透視表語法

使用pivot_table來實現(xiàn)上面的代碼:

titanic.pivot_table('survived', index='sex', columns='class')
不同性別與船艙等級的生還情況

GroupBy方法相比,這樣的代碼可讀性更強,結(jié)果也完全一樣??梢园l(fā)現(xiàn)生還率最高的是船艙等級最高的女性,一等艙的女性幾乎全部生還,而三等艙男性的生還率僅為十分之一。

多級數(shù)據(jù)透視表

還可以把年齡作為第三個維度,并用pd.cut對年齡進行分段:

age = pd.cut(titanic['age'], [01880])
titanic.pivot_table('survived', ['sex', age], 'class')
多級數(shù)據(jù)透視表-1

pd.qcut會根據(jù)船票價格的頻率等分為兩份,把它加入數(shù)據(jù)透視表看看:

fare = pd.qcut(titanic['fare'], 2)
titanic.pivot_table('survived', ['sex', age], [fare, 'class'])
多級數(shù)據(jù)透視表-2

其他數(shù)據(jù)透視表選項

DataFrame 的pivot_table選項如下:

# call signature as of Pandas 0.18
DataFrame.pivot_table(data, values=None, index=None, columns=None,
                      aggfunc='mean', fill_value=None, margins=False,
                      dropna=True, margins_name='All')

aggfunc用于設(shè)置累計函數(shù)類型,默認(rèn)是均值(還可以是'sum''mean''count''min''max'等等,也可以用np.sum()min()sum()等)。另外,可以通過字典為不同的列指定不同的累計函數(shù):

titanic.pivot_table(index='sex', columns='class',
                    aggfunc={'survived':sum, 'fare':'mean'})
通過字典指定不同的累計函數(shù)

值得注意的是,上面的代碼省去了values因為,在aggfunc的字典中已經(jīng)指定了。

當(dāng)需要計算每一組的總數(shù)時,可使用magins參數(shù):

titanic.pivot_table('survived', index='sex', columns='class', margins=True)
使用 magins 添加 All 列

magins的標(biāo)簽可以通過margins_name參數(shù)進行自定義,默認(rèn)值是All

筆記整理自《Python數(shù)據(jù)科學(xué)手冊》,本書的英文版以及一些資料已在Github開源(https://github.com/jakevdp/PythonDataScienceHandbook ),中文版可點擊下方鏈接購買~


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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    精品一区二区三区免费看| 日韩精品一级一区二区| 尹人大香蕉中文在线播放| 少妇被粗大进猛进出处故事| 日本理论片午夜在线观看| 成人精品国产亚洲av久久| 免费亚洲黄色在线观看| 粗暴蹂躏中文一区二区三区| 日韩偷拍精品一区二区三区| 空之色水之色在线播放| 中文字幕精品一区二区三| 男人和女人干逼的视频| 少妇淫真视频一区二区| 五月综合婷婷在线伊人| 五月天六月激情联盟网| 能在线看的视频你懂的| 精品日韩欧美一区久久| 高清不卡视频在线观看| 欧洲一区二区三区蜜桃| 美女被草的视频在线观看| 日韩精品区欧美在线一区| 亚洲国产精品久久综合网| 国产精品国产亚洲区久久| 我要看日本黄色小视频| 91人人妻人人爽人人狠狠| 日韩免费国产91在线| 亚洲精品国男人在线视频| 国产毛片对白精品看片| 高潮少妇高潮久久精品99| 激情丁香激情五月婷婷| 丰满人妻熟妇乱又乱精品古代| 国产欧美高清精品一区| 色丁香之五月婷婷开心| 在线免费国产一区二区三区| 国产精品午夜性色视频| 日韩精品小视频在线观看| 日韩精品视频香蕉视频| 日本女人亚洲国产性高潮视频 | 日本道播放一区二区三区| 亚洲中文字幕在线综合视频| 男人操女人下面国产剧情|