pandas常用功能_5:数据透视表pivot_table

pandas的pivot_table与excel的数据透视表非常相近,实现的是一致的功能

一、pivot

先看看基本的pivot方法,主要功能是重塑数据

创建示例数据

import pandas as pd

df = pd.DataFrame({'id': [1, 2, 3, 4, 5, 6],
                   'level': ['A', 'B', 'C', 'A', 'B', 'C'],
                   'sex': ['F', 'M', 'F', 'F', 'M', 'F'],
                   'score': [60, 80, 75, 70, 85, 65],
                   })
In [42]: df
Out[42]: 
   id level sex  score
0   1     A   F     60
1   2     B   M     80
2   3     C   F     75
3   4     A   F     70
4   5     B   M     85
5   6     C   F     65

重塑为sex为行, level为列,score为分数

df = pd.DataFrame({'id': [1, 2, 3, 4, 5, 6],
                   'level': ['A', 'B', 'C', 'A', 'B', 'C'],
                   'sex': ['F', 'F', 'F', 'M', 'M', 'M'],
                   'score': [60, 80, 75, 70, 85, 65],
                   })
df.pivot(index='sex', columns='level', values='score')

Out[54]: 
level   A   B   C
sex              
F      60  80  75
M      70  85  65

如果不指定value,会对剩余的列都进行展示

df.pivot(index='sex', columns='level')

Out[55]: 
      id       score        
level  A  B  C     A   B   C
sex                         
F      1  2  3    60  80  75
M      4  5  6    70  85  65

二、pivot_table

pivot_table的操作更加类似excel的数据透视表

In [56]: pd.pivot_table(df, index=['level', 'sex'])
Out[56]: 
           id  score
level sex           
A     F     1     60
      M     4     70
B     F     2     80
      M     5     85
C     F     3     75
      M     6     65

类似上面的pivot

In [57]: pd.pivot_table(df, index=['sex'], columns='level', values='score')
Out[57]: 
level   A   B   C
sex              
F      60  80  75
M      70  85  65

aggfunc可以执行聚合运算,支持自定义的函数

pd.pivot_table(df, index=['sex'], columns='level', values='score', aggfunc=lambda e: e/2)

Out[58]: 
level     A     B     C
sex                    
F      30.0  40.0  37.5
M      35.0  42.5  32.5

三、pivot和pivot_table的区别

最主要的区别在于:
pivot:仅支持数据重塑
pivot_table:支持数据重塑外,还支持数据聚合

未完待续~~~

你可能感兴趣的:(python数据分析,pandas,python,数据分析)