草庐IT

python入门——Pandas透视表(pivot_table)

joy在学习 2023-06-18 原文

透视表是一种可以对数据动态排布并且分类汇总的表格格式。pivot_table是pandas中数据透视表的函数。

官方文档关于pivot_table函数体的介绍:

pandas.pivot_table — pandas 1.5.1 documentation

pivot_table的官方定义如下所示:

pandas.pivot_table(datavalues=Noneindex=Nonecolumns=Noneaggfunc='mean'fill_value=Nonemargins=Falsedropna=Truemargins_name='All'observed=Falsesort=True)

看一下参数主要的作用:

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' 默认值

接下来用泰塔尼克号数据做一个简单的实践。

数据来自:Titanic - Machine Learning from Disaster | Kaggle

首先导入numpy和pandas库

import numpy as np
import pandas as pd

其次读取文件

data = pd.read_csv(r"D:\A USTC\CSDN\kaggle\Titanic - Machine Learning from Disaster\train.csv") 

可以通过data直接看一下读取的文件

接着实践一下各个参数的作用。

  • index
#index:按Pclass进行索引,aggfunc默认按平均值聚合,values默认只显示可以按平均值聚合的列
data.pivot_table(index = 'Pclass')  

 可以看到聚合之后的结果:对于非整型和浮点型等不可以按平均值聚合的数据没有显示

 我们也可以通过dtypes看一下每一列的类型

#index可以进行多层索引,比如先按舱位后按性别索引
data.pivot_table(index = ['Pclass','Sex'])  

#index索引注意顺序不同达到目标不同
data.pivot_table(index = ['Sex','Pclass'])  

  •  values
#values:筛选需要显示的列,这里显示Survived列,因此我们可以看到不同等级舱位的平均生存率
data.pivot_table(index = 'Pclass',values='Survived')  

  •  Columns
#columns:列索引,统计不同等级舱位男性和女性的平均生存率,列索引为Sex
data.pivot_table(index = 'Pclass',columns='Sex',values='Survived') 

#columns可以对字符串数据设定列索引,比如这里的Embarked
data.pivot_table(index = 'Pclass',columns='Embarked',values='Survived') 

  •  aggfunc
#aggfunc:聚合方式,比如下面把name列按len聚合
data.pivot_table(index = 'Pclass',aggfunc={'Name':len})  

#甚至可以把name列按sum聚合查看不同舱位的乘客姓名
data.pivot_table(index = 'Pclass',aggfunc={'Name':sum})  

  • fill_value
#先看一下不用fill_value不设定缺省值的情况,空值显示的是NAN
data.pivot_table(columns='Cabin') 

#fill_value:设定缺省值为0后,NAN替代为0
data.pivot_table(columns='Cabin',fill_value=0) 

  •  margins
#margins=True,true会添加行/列的总计,可以看到最后有个all行
#默认FALSE。columns对应右侧的总计,index对应底部的总计。
data.pivot_table(index = 'Pclass',columns='Sex',margins=True) 

 比较常用的参数介绍完之后,我们看一下两个小的plus。

#plus1:得到不同年龄段的生存概率,未成年和成年
age = pd.cut(data['Age'], [0, 18, 80]) 
data.pivot_table(values='Survived', index=['Sex', age],columns= 'Pclass')
#这样就得到了不同性别、年龄组、舱位等级的乘客的生存率

#plus2:不同列采用不同聚合方式
data.pivot_table(columns='Sex', index='Pclass',aggfunc={'Survived':sum, 'Fare':'mean'})

有关python入门——Pandas透视表(pivot_table)的更多相关文章

  1. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  2. ruby-on-rails - Prawn PDF : I need to generate nested tables - 2

    我需要一个表,其中行实际上是2行表,一个嵌套表是..我怎样才能在Prawn中做到这一点?也许我需要延期..但哪一个? 最佳答案 现在支持子表:Prawn::Document.generate("subtable.pdf")do|pdf|subtable=pdf.make_table([["sub"],["table"]])pdf.table([[subtable,"original"]])end 关于ruby-on-rails-PrawnPDF:Ineedtogeneratenested

  3. Python 相当于 Perl/Ruby ||= - 2

    这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。

  4. java - 什么相当于 ruby​​ 的 rack 或 python 的 Java wsgi? - 2

    什么是ruby​​的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht

  5. 华为OD机试用Python实现 -【明明的随机数】 2023Q1A - 2

    华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o

  6. python - 如何读取 MIDI 文件、更改其乐器并将其写回? - 2

    我想解析一个已经存在的.mid文件,改变它的乐器,例如从“acousticgrandpiano”到“violin”,然后将它保存回去或作为另一个.mid文件。根据我在文档中看到的内容,该乐器通过program_change或patch_change指令进行了更改,但我找不到任何在已经存在的MIDI文件中执行此操作的库.他们似乎都只支持从头开始创建的MIDI文件。 最佳答案 MIDIpackage会为您完成此操作,但具体方法取决于midi文件的原始内容。一个MIDI文件由一个或多个音轨组成,每个音轨是十六个channel中任何一个上的

  7. 「Python|Selenium|场景案例」如何定位iframe中的元素? - 2

    本文主要介绍在使用Selenium进行自动化测试或者任务时,对于使用了iframe的页面,如何定位iframe中的元素文章目录场景描述解决方案具体代码场景描述当我们在使用Selenium进行自动化测试的时候,可能会遇到一些界面或者窗体是使用HTML的iframe标签进行承载的。对于iframe中的标签,如果直接查找是无法找到的,会抛出没有找到元素的异常。比如近在咫尺的例子就是,CSDN的登录窗体就是使用的iframe,大家可以尝试通过F12开发者模式查看到的tag_name,class_name,id或者xpath来定位中的页面元素,会抛出NoSuchElementException异常。解决

  8. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  9. 微信小程序开发入门与实战(Behaviors使用) - 2

    @作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors    1、什么是behaviors    2、behaviors的工作方式    3、创建behavior    4、导入并使用behavior    5、behavior中所有可用的节点    6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors    1、什么是behaviorsbehaviors是小程序中,用于实现

  10. python ffmpeg 使用 pyav 转换 一组图像 到 视频 - 2

    2022/8/4更新支持加入水印水印必须包含透明图像,并且水印图像大小要等于原图像的大小pythonconvert_image_to_video.py-f30-mwatermark.pngim_dirout.mkv2022/6/21更新让命令行参数更加易用新的命令行使用方法pythonconvert_image_to_video.py-f30im_dirout.mkvFFMPEG命令行转换一组JPG图像到视频时,是将这组图像视为MJPG流。我需要转换一组PNG图像到视频,FFMPEG就不认了。pyav内置了ffmpeg库,不需要系统带有ffmpeg工具因此我使用ffmpeg的python包装p

随机推荐