透视表和交叉表

 
 
 
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
 
df = DataFrame({'sex':['man','man','women','women','man','women','man','women','women'],
               'age':[15,23,25,17,35,57,24,31,22],
               'smoke':[True,False,False,True,True,False,False,True,False],
               'height':[168,179,181,166,173,178,188,190,160]})
df
 
 
Out[3]:
 ageheightsexsmoke
0 15 168 man True
1 23 179 man False
2 25 181 women False
3 17 166 women True
4 35 173 man True
5 57 178 women False
6 24 188 man False
7 31 190 women True
8 22 160 women False
 

透视表

各种电子表格程序和其他数据分析软件中一种常见的数据汇总工具。它根据一个或多个键对数据进行聚合,并根据行和列上的分组键将数据分配到各个矩形区域中

 

行分组透视表 设置index参数

 
 
 
# 默认得到一个平均值
df.pivot_table(index=[df.sex,df.smoke])
 
 
Out[4]:
  ageheight
sexsmoke  
manFalse 23.500000 183.5
True 25.000000 170.5
womenFalse 34.666667 173.0
True 24.000000 178.0
 

列分组透视表 设置columns参数

 
df.pivot_table(columns=df.smoke)
 
 
Out[5]:
smokeFalseTrue
age 30.2 24.50
height 177.2 174.25
 

行列分组的透视表 同时设定index、columns参数

In [9]:
 
 
 
 
 
df.pivot_table(index=df.sex,columns=df.smoke)
 
 
Out[9]:
 ageheight
smokeFalseTrueFalseTrue
sex    
man 23.500000 25.0 183.5 170.5
women 34.666667 24.0 173.0 178.0
 

aggfunc:设置应用在每个区域的聚合函数,默认值为np.mean

In [10]:
 
 
 
 
 
df.pivot_table(index=df.sex,aggfunc=np.sum)
 
 
Out[10]:
 ageheightsmoke
sex   
man 97 708 2.0
women 152 875 2.0
 

fill_value:替换结果中的缺失值

 

交叉表

是一种用于计算分组频率的特殊透视图,对数据进行汇总

 

pd.crosstab(index,colums)

  • index:分组数据,交叉表的行索引
  • columns:交叉表的列索引
 
pd.crosstab(index=df.sex,columns=df.smoke)
 
 
Out[6]:
smokeFalseTrue
sex  
man 2 2
women 3 2
posted @   所有的遗憾都是成全  阅读(1397)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示