crosstab交叉表_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.0dtype: 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.0All10.0 20.0 3.0 20.0

二、交叉表(crossTab)

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

print(pd.crosstab(df['类别'],df['产地'],margins=True)) #按类别分组,统计各个分组中产地的频数

产地 中国 新西兰 美国 All

类别

水果2 0 1 3肉类 01 1 2蔬菜1 1 0 2All3 2 2 7

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值