当前位置:   article > 正文

Python如何构造数据透视表_python数据透视表

python数据透视表

数据透视表是一种分类汇总数据的方法。在 Python 中,我们可以使用 Pandas 库中的pivot_table 函数来创建和操作数据透视表,相比Excel,Python可以更多更快的处理数据。

一、数据

首先,引入几个重要的包:

import pandas as pd
import numpy as np
from pandas import DataFrame,Series
  • 1
  • 2
  • 3

通过代码构造数据集,创建一个DataFrame对象,作为数据源:

data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily'],
        'Gender': ['Female', 'Male', 'Male', 'Male', 'Female'],
        'Age': [25, 30, 35, 40, 45],
        'City': ['Beijing', 'Shanghai', 'Beijing', 'Shanghai', 'Beijing'],
        'Salary': [5000, 6000, 7000, 8000, 9000]}
df = pd.DataFrame(data)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

得到数据如下:

Name  Gender  Age      City  Salary
0    Alice  Female   25   Beijing    5000
1      Bob    Male   30  Shanghai    6000
2  Charlie    Male   35   Beijing    7000
3    David    Male   40  Shanghai    8000
4    Emily  Female   45   Beijing    9000
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

二、pivot_table

首先,介绍一下pivot_table 函数

函数:
pivot_table(data, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All')
  • 1
  • 2

看一下参数主要的作用:

data:DataFrame

values:被计算的数据项,设定需要被聚合操作的列(需要显示的列)

index:每个pivot_table必须拥有一个index,必选参数,设定数据的行索引,可以设置多层索引,多次索引时按照需求确定索引顺序。

columns:必选参数,设定列索引,用来显示字符型数据,和fill_value搭配使用。

aggfunc:聚合函数, pivot_table后新dataframe的值都会通过aggfunc进行运算。默认numpy.mean求平均。

fill_values:填充NA值(设定缺失值)。默认不填充,可以指定。

margins:添加行列的总计,默认FALSE不显示。TRUE显示。

dropna:如果整行都为NA值,则进行丢弃,默认TRUE丢弃。FALSE时,被保留。

margins_name:margins = True 时,设定margins 行/列的名称。‘all’ 默认值

三、按照不同类进行计数统计

为了结算每个城市不同性别的平均收入,我们可以利用pivot_table函数进行统计:

pt1 = df.pivot_table(index='City', columns='Gender', values='Salay', aggfunc='mean')
  • 1

结果如下:

Gender    Female    Male
City                    
Beijing   7000.0  7000.0
Shanghai     NaN  7000.0
  • 1
  • 2
  • 3
  • 4

如果要知道每个城市不同性别的总收入,只需要设定aggfunc函数为sum进行求和:

pt2 = df.pivot_table(index='City', columns='Gender', values='Salary', aggfunc='sum')
  • 1

结果如下:

Gender     Female     Male
City                      
Beijing   14000.0   7000.0
Shanghai      NaN  14000.0
  • 1
  • 2
  • 3
  • 4

可以看到这两个数据透视表是有缺失值的,pivot_table有一个参数fill_value,就是用来填充这些缺失值的。而pivot_table方法还支持对透视表进行统计计算,而且会新建一个列来存放计算结果。这个统计需要用到以下两个参数:

● margins,设定是否添加汇总列,一般设置为True。

● margins_name,汇总列的名称。

代码示例:

pt3 = df.pivot_table(index='City', columns='Gender', values='Salary', fill_value=0, aggfunc='sum', margins=True, margins_name="汇总")
  • 1

结果如下:

Gender    Female   Male     汇总
City                          
Beijing    14000   7000  21000
Shanghai       0  14000  14000
汇总         14000  21000  35000
  • 1
  • 2
  • 3
  • 4
  • 5

四、筛选数据透视表中的数据

pivot_table的运算结果是一个DataFrame类型,所以可以用DataFrame截取数据的方法筛选数据透视表中的数据。本节用于示例的数据透视表如下:

Gender    Female   Male     汇总
City                          
Beijing    14000   7000  21000
Shanghai       0  14000  14000
汇总         14000  21000  35000
  • 1
  • 2
  • 3
  • 4
  • 5

(1)仅保留汇总列的数据。

pt['汇总']
  • 1

结果是一个Series,如下所示。

City
Beijing     21000
Shanghai    14000
汇总          35000
Name: 汇总, dtype: int64
  • 1
  • 2
  • 3
  • 4
  • 5

(2)获取男性和女性的汇总数据。

pt[['Female', 'Male']]
  • 1

结果如下:

Gender    Female   Male
City                   
Beijing    14000   7000
Shanghai       0  14000
汇总         14000  21000
  • 1
  • 2
  • 3
  • 4
  • 5

五、使用字段列表排列数据透视表中的数据

数据透视表是一个DataFrame,所以可以用sort_values方法来按某列排序,示例代码如下:

pt3 = df.pivot_table(index='City', columns='Gender', values='Salary', fill_value=0, aggfunc='sum', margins=True, margins_name="汇总")
pt3.sort_values(by="汇总")
  • 1
  • 2

结果如下:

Gender    Female   Male     汇总
City      
Shanghai       0  14000  14000              
Beijing    14000   7000  21000
汇总         14000  21000  35000
  • 1
  • 2
  • 3
  • 4
  • 5

以上就是用Python构造数据透视表的内容介绍。数据透视表是数据分析中非常重要的工具,掌握它可以让你更加高效地进行数据处理和可视化呈现。

感兴趣的小伙伴,如果你对Python数据分析还有其他问题或者想要了解更多内容,具体看下方。

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/686421
推荐阅读
相关标签
  

闽ICP备14008679号