zoukankan      html  css  js  c++  java
  • Pandas:透视表(pivotTab)和交叉表(crossTab)

    import numpy as np

    import pandas as pd

    from pandas import Series,DataFrame

    一、透视表(pivotTab)

    透视表就是将指定原有DataFrame的列分别作为行索引和列索引,然后对指定的列应用聚集函数(默认情况下式mean函数)。

    df = DataFrame({'类别':['水果','水果','水果','蔬菜','蔬菜','肉类','肉类'],
                    '产地':['美国','中国','中国','中国','新西兰','新西兰','美国'],
                    '水果':['苹果','梨','草莓','番茄','黄瓜','羊肉','牛肉'],
                   '数量':[5,5,9,3,2,10,8],
                   '价格':[5,5,10,3,3,13,20]})
    print(df)
    

      

        产地  价格  数量  水果  类别
    0   美国   5   5  苹果  水果
    1   中国   5   5   梨  水果
    2   中国  10   9  草莓  水果
    3   中国   3   3  番茄  蔬菜
    4  新西兰   3   2  黄瓜  蔬菜
    5  新西兰  13  10  羊肉  肉类
    6   美国  20   8  牛肉  肉类
    

      

    1.按‘产地’和‘类别’重新索引,然后在‘价格’和‘数量’上执行mean函数

    print(df.pivot_table(index=['产地','类别']))
              价格    数量
    产地  类别            
    中国  水果   7.5   7.0
        蔬菜   3.0   3.0
    新西兰 肉类  13.0  10.0
        蔬菜   3.0   2.0
    美国  水果   5.0   5.0
        肉类  20.0   8.0
    
    
    print(df.pivot_table(columns=['产地','类别']))
        产地   类别
    价格  中国   水果     7.5
             蔬菜     3.0
        新西兰  肉类    13.0
             蔬菜     3.0
        美国   水果     5.0
             肉类    20.0
    数量  中国   水果     7.0
             蔬菜     3.0
        新西兰  肉类    10.0
             蔬菜     2.0
        美国   水果     5.0
             肉类     8.0
    dtype: float64
    ————————————————

    2.行索引为‘产地’,列索引为‘类别’,

    对‘价格’应用‘max’函数,并提供分项统计,缺失值填充0

    print(df.pivot_table('价格',index='产地',columns='类别',aggfunc='max',margins=True,fill_value=0))
    类别     水果    肉类   蔬菜   All
    产地                        
    中国   10.0   0.0  3.0  10.0
    新西兰   0.0  13.0  3.0  13.0
    美国    5.0  20.0  0.0  20.0
    All  10.0  20.0  3.0  20.0

    二、交叉表(crossTab)

    交叉表是用于统计分组频率的特殊透视表

    print(pd.crosstab(df['类别'],df['产地'],margins=True)) # 按类别分组,统计各个分组中产地的频数
    产地   中国  新西兰  美国  All
    类别                   
    水果    2    0   1    3
    肉类    0    1   1    2
    蔬菜    1    1   0    2
    All   3    2   2    7
  • 相关阅读:
    递归函数及Java范例
    笔记本的硬盘坏了
    “References to generic type List should be parameterized”
    配置管理软件(configuration management software)介绍
    WinCE文件目录定制及内存调整
    使用Silverlight for Embedded开发绚丽的界面(3)
    wince国际化语言支持
    Eclipse IDE for Java EE Developers 与Eclipse Classic 区别
    WinCE Heartbeat Message的实现
    使用Silverlight for Embedded开发绚丽的界面(2)
  • 原文地址:https://www.cnblogs.com/liunaiming/p/12079033.html
Copyright © 2011-2022 走看看