官术网_书友最值得收藏!

3.2.5 數(shù)據(jù)透視表和交叉表

數(shù)據(jù)透視表和交叉表是我們常用的數(shù)據(jù)統(tǒng)計方法,數(shù)據(jù)透視表可以快速聚合我們需要的數(shù)據(jù),交叉表可以用于數(shù)據(jù)分組統(tǒng)計,兩者在實際的數(shù)據(jù)分析任務(wù)中都是非常實用的。

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

相信大家對Excel中的數(shù)據(jù)透視表功能都比較熟悉,它根據(jù)一個或者多個列對數(shù)據(jù)進行聚合,并結(jié)合行、列分組將數(shù)據(jù)分配到各個矩形區(qū)域內(nèi)。該功能可以幫助我們快速完成數(shù)據(jù)的統(tǒng)計工作。在Pandas中可以通過pivot_table方法實現(xiàn)數(shù)據(jù)透視表功能。pivot_table的參數(shù)如表3-8所示。

表3-8 pivot_table函數(shù)的參數(shù)

下面是一個pivot_table應(yīng)用實例,具體如下:


In [95]: df.pivot_table(index='Sex')
Out[95]:
         Date        Num
Sex
F    20200107  46.166667
M    20200107  56.142857
未知  20200107  24.750000

pivot_table默認聚合函數(shù)是mean,顯示結(jié)果為所有數(shù)值列的均值,我們也可以指定多個index以及其他聚合函數(shù),如下所示:


In [98]: df.pivot_table(index=["System","Sex"],aggfunc=sum)
Out[98]:
                  Date   Num
System  Sex
android F    727203852  1759
        M    444402354  1148
iOS     F    363601926   734
        M    404002140  1210
        未知  80800428     99

同時也可以指定分組的列,代碼如下:


In [99]: df.pivot_table(index =["Sex"],columns=['System'],aggfunc="mean")

Out[99]:
              Date                    Num
System     android         iOS    android        iOS
Sex
F       20200107.0  20200107.0  48.861111  40.777778
M       20200107.0  20200107.0  52.181818  60.500000
未知           NaN  20200107.0        NaN  24.750000

2.交叉表

交叉表主要用于統(tǒng)計分組頻率,使用情況比較單一,是數(shù)據(jù)透視表的一種特殊情況。在Pandas中可以通過crosstab函數(shù)來實現(xiàn),其參數(shù)及用法與pivot_table函數(shù)基本一致。


In [100]: pd.crosstab(index = df['Sex'],columns=df['Age'])
Out[100]:
Age  0~18歲  19~25歲  26~35歲  36~45歲  未知
Sex
F        9      27      14       4   0
M        6      15      18       3   0
未知     0       0       0       0   4

In[101]:df.pivot_table(index=["Sex"],columns='Age',values='Num',aggfunc = "count")
Out[101]:
Age  0~18歲  19~25歲  26~35歲  36~45歲   未知
Sex
F      9.0    27.0    14.0     4.0  NaN
M      6.0    15.0    18.0     3.0  NaN
未知   NaN     NaN     NaN     NaN  4.0

主站蜘蛛池模板: 元阳县| 承德县| 拉萨市| 麦盖提县| 古蔺县| 临朐县| 德令哈市| 庆元县| 呈贡县| 滦南县| 阿拉善右旗| 海原县| 石狮市| 仁寿县| 陇川县| 蓝田县| 宜兴市| 冀州市| 集贤县| 利辛县| 盘山县| 奈曼旗| 牙克石市| 桓台县| 沙河市| 于田县| 双流县| 铅山县| 南昌县| 靖安县| 东城区| 汉源县| 永昌县| 新兴县| 扶余县| 仁寿县| 黄陵县| 包头市| 平谷区| 汤原县| 清镇市|