开发者学堂课程【Python 常用数据科学库:数据透视表】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/546/detail/7486
数据透视表
如何做数据透视表
(一)
这是一份消费数据,在每个月份都有一些花费,比如在交通上的花费,在娱乐上、在家庭上的花费,这里都有花费的指标。
要对这个数据做一个统计,只不过这次统计不单单是两个变量之间,而是要考虑三个变量之间,或者说要考虑一个像数据透视表之类的结构。
1、先写一下 example 的表格,要执行这样的操作,需要指定几个关键的属性,第一个叫做 index,index 是需要自己指定的,相当于以谁为键,现在要统计的是不同种类的花销,以它建写出来,还需要一个列,把列指定成月份,相当于是统计一个指标,然后按照什么方式去统计。最后有个 values,相当于你要统计这个指标的什么属性,这里只有一个属性,就是花费,把花费再挪过来
example_pivot = example.pivot(index ='Category', columns='Month',values='Amount'
example_pivot
然后打印一下,这样就得到一个表格,这就是数据透视表。这就完成了第一件事——先做出来一个最基本的数据透视表。
这里重要的一点是有个 index 值,有个列名,有一个数值,这个就是根据你想统计的指标,自己指定就可以了。
2、基于这个表还可以再去执行一些操作,比如说可以求它的和
example_pivot.sum(axit=1)
当指定成零的时候,example_pivot.sum(axit=1)
运行
就是不同的月份又进行了一个指定,也就是说统计了不同月份的花销分别是多少。统计完这些指标之后,现在按行按列都能统计,这就是最基本的一个数据透视表。
(二)
1、可以自己来指定一下统计指标,比如说想看不同的性别在不同的船舱等级,以及它的一个平均船票价格是什么样的,也就是男性在一等舱平均的花费,女性在一等舱平均话费以及在二等舱、三等舱。Index 值指定成性别 Sex,第二列写的是船舱的等级 Pclass,再把要统计的数值给指定出来,这里统计的是价格 Fare。
df.pivot_table (index ='Sex',columns='Pclass',values='Fare')
执行一下
就得到这个结果,性别有女性有男性,女性在一等舱、二等舱、三等舱平均的船票价格,男性在一等舱、二等舱、三等舱平均的船票价格,这个就是数据透视表。
刚刚是统计平均的价格,但是没有去指定平均,所以说这里是默认求平均值,但如果需求变了,要求男性和女性在123等舱当中最大的船费花销是多少,就需要再加上一个参数, 把它指定成 max
df.pivot_table(index ='Sex',columns='Pclass' values='Fare',aggfunc=' max')
运行看到结果
2、求人数,女性在一等舱的人数,男性在一等舱的人数
指定 Count,相当于计数,这样就能得到人数分别是多少。除了这种方法,还有一个叫做 crosstab,
执行后的结果和上一个一样
pd.crosstab (index =df['Sex'],columns=df['Pclass']
如果要统计某一个键的一个指标,在某个列上它的分布情况,我们就可以用crosstable 来进行指定。
3、再来统计一些其他指标。看船舱的等级,在不同的性别上获救的情况,求它的均值
df['Underaged'] = df[' Age'] <= 18
df.pivot_table( index='Underaged’,columns= 'Sex',values='Survived',aggfunc='mean'),
执行一下得到这样一个表格
在这个表格当中统计了两个量。第一个就是对于不同的船舱等级,女性和男性平均获救几率是有多大的,结果显示一等舱里女性获救几率96%,男性36%,相对来说比较贵的船舱等级,获救几率会比较高,二等舱和三等舱也是一样。在年龄里还可以进行划分,有一类是一个未成年的,看一下未成年人当中,对于性别来说,获救与否的情况。
df.pivot_table(index = 'Pclass', columns= 'Sex',values=' Survived', aggfunc='mean')
然后执行一下就算出来了。可以对数据执行很多种操作,这几个值都是常用的,一个是以什么为建,然后看哪几个列,看列当中的某一个属性能按照什么样的方式去计算,这个就是数据透视表。用起来是很方便的,尤其是在做数据分析统计的时候。