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

原文地址:https://www.cnblogs.com/liunaiming/p/12079033.html

时间: 2024-08-30 01:06:49

Pandas:透视表(pivotTab)和交叉表(crossTab)的相关文章

数据透视表和数据交叉表

一.数据透视表 pivot_table(self, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All') 类比excel的数据透视表进行理解,可使用pd.pivot_table( df , ...),也可直接使用df/pivot_table( ... ) values:透视后对哪一列进行计算 index:按照哪一

交叉表与透视变

交叉表与透视表什么作用 分析两个离散值值间得相关性 探究股票的涨跌与星期几有关? 以下图当中表示,week代表星期几,1,0代表这一天股票的涨跌幅是好还是坏,里面的数据代表比例 可以理解为所有时间为星期一等等的数据当中涨跌幅好坏的比例 使用crosstab(交叉表)实现上图 交叉表:交叉表用于计算一列数据对于另外一列数据的分组个数(寻找两个列之间的关系) pd.crosstab(value1, value2) DataFrame.pivot_table([], index=[]) 原文地址:ht

数据分析处理——透析表和交叉表

1透视表 数据透视表(Pivot Table)是一种交互式的表,可以进行某些计算,如求和与计数等.所进行的计算与数据跟数据透视表中的排列有关. 之所以称为数据透视表,是因为可以动态地改变它们的版面布置,以便按照不同方式分析数据,也可以重新安排行号.列标和页字段. 数据分析中的透析表十分强大,甚至可以说是相当于分组聚合外加哑变量三个步骤了.但有个前提就是:在使用透析表之前,你必须明确知道自己想要的是什么,需要做什么! 当然,有时候你很难直接看出需求.这时候我们就得添加项目和检查每一步来验证我们一步

实验8-SPSS交叉表分析

SPSS---交叉表分析 除了对单个变量的分析,在实际研究中,还需要对多个变量在不同取值情况下的数据分布情况,从而进一步分析变量之间的相互影响和关系,这就要用到交叉表分析. 交叉表是一种行列交叉的分类汇总表格,行和列上至少各有一个分类变量,行和列的交叉处可以对数据 进行多种汇总计算,如求和.平均值.计数等. 交叉表分析是用于分析两个或两个以上分组变量之间的关联关系,以交叉表格的形式进行分组变量间关系的对比分析.它的原理是从数据的不同角度综合进行分组细分,以进一步了解数据的构成.分布特征,它也是描

2018.03.29 python-pandas 数据透视pivot table / 交叉表crosstab

1 #透视表 pivot table 2 #pd.pivot_table(data,values=None,index=None,columns=None, 3 import numpy as np 4 import pandas as pd aggfunc='mean',fill_value=None,margins=False,dropna=True,margins_name='ALL') 5 date = ['2017-5-1','2017-5-2','2017-5-3']*3 6 rng

DevExpress XtraReports 入门六 控件以程序方式创建一个 交叉表 报表

原文:DevExpress XtraReports 入门六 控件以程序方式创建一个 交叉表 报表 本文只是为了帮助初次接触或是需要DevExpress XtraReports报表的人群使用的,为了帮助更多的人不会像我这样浪费时间才写的这篇文章,高手不想的看请路过 本文内容来DevExpress XtraReports帮助文档,如看过类似的请略过. 废话少说 开始正事 在继续本示例之前,要把所有 必需的程序集 添加到项目的 引用 列表中,并且把一个按钮拖放到窗体上. 然后,以下列方式接管此按钮的

DevExpress XtraReports 入门五 创建交叉表报表

原文:DevExpress XtraReports 入门五 创建交叉表报表 本文只是为了帮助初次接触或是需要DevExpress XtraReports报表的人群使用的,为了帮助更多的人不会像我这样浪费时间才写的这篇文章,高手不想的看请路过 本文内容来DevExpress XtraReports帮助文档,如看过类似的请略过. 废话少说 开始正事 一.准备数据绑定 XRPivotGrid 控件 启动 MS Visual Studio (2005.2008 或 2010),并且新建一个或者打开一个现

【原创】POSTGRESQL交叉表的实现

这里我来演示下在POSTGRESQL里面如何实现交叉表的展示,至于什么是交叉表,我就不多说了,度娘去哦. 原始表数据如下: t_girl=# select * from score;  name  | subject | score  -------+---------+-------  Lucy  | English |   100  Lucy  | Physics |    90  Lucy  | Math    |    85  Lily  | English |    95  Lily 

POSTGRESQL交叉表的实现

这里我来演示下在POSTGRESQL里面如何实现交叉表的展示,至于什么是交叉表,我就不多说了,度娘去哦.原始表数据如下: t_girl=# select * from score; name | subject | score -------+---------+------- Lucy | English | 100 Lucy | Physics | 90 Lucy | Math | 85 Lily | English | 95 Lily | Physics | 81 Lily | Math