我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Pandas如何实现DataFrame运算、统计与排序操作

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Pandas如何实现DataFrame运算、统计与排序操作

这篇文章主要介绍Pandas如何实现DataFrame运算、统计与排序操作,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

由于DataFrame的数据结构中包含了多行、多列,所以DataFrame的计算与统计可以是用行数据或者用列数据。为了更方便我们的使用,Pandas为我们提供了常用的计算与统计方法:

操作方法操作方法
求和sum最大值max
求均值mean最小值min
求方差var标准差std
中位数median众数mode
分位数quantile  

一.运算

接上文的例子,我们已经有了N个学生的数学、语文、英语的成绩表,现在,我们要算出每个学生的总成绩,那么我们就可以用以下的方法:

'''行的求和以下演示两种方法:方法1:先把待求和的列数据删选出来(剔除掉name列),然后使用sum函数求和方法2:把待求和的列一个一个选出来然后使用运算符求和两种方法最后的结果为像原有的DataFrame中新增一列,数据为每行数据的求和'''df['sum'] = df[['chinese', 'math', 'english']].sum(1)#方法1df['sum'] = df['chinese'] + df['math'] + df['english']#方法2Output:        name  chinese  english  math  sum0   XiaoMing       99      100    80  2791      LiHua      102       79    92  2732  HanMeiNei      111      130   104  345

在sum方法中我们传入了参数1,代表的是我们使用的轴(axis)为行(对行数据进行求和),如果想要计算出每列的求和我们只用传入0即可(sum函数默认参数为0,所以也可不传):

df[['chinese', 'math', 'english']].sum(0)Output:chinese    312math       276english    309dtype: int64

现在有了总成绩,那么数学老师或者语文老师就会关心本班学生的数据平均分是多少,同样的,我们可以非常快速的计算出来:

df['math'].mean()#方法一:直接使用Pandas提供的mean求均值方法df['math'].sum() / df.shape[0]#方法二:使用求和方法算出总和后除以总人数(行数)Output:92.0

本????中使用了DataFrame的shape方法,这个方法是用来显示DataFrame的行数和列数的,行数为0,列数1。需要注意的是输出的列数值是不含索引列的。

上述????只计算了数学的平均分,感兴趣的小伙伴可以自行基础出英语和语文的平均分哦~

二.统计

这个时候数学老师又有新的需求了,他想查看本班学生数学成绩的最高分、最低分、中位数等统计数据,那么根本不慌,Pandas统统可以帮我们搞定:

df['math'].min()  # math列的最小值Output:80df['math'].max()  # math列的最大值Output:104df['math'].quantile([0.3, 0.4, 0.5])  # math列的30%、40%、50%分位数Output:0.3    87.20.4    89.60.5    92.0Name: math, dtype: float64df['math'].std() # math列的标准差Output:12df['math'].var() # math列的方差Output:144df['math'].mean() # math列的平均数Output:92df['math'].median() # math列的中位数Output:92df['math'].mode() # math列的众数,返回一个Series对象(有可能出现并列的情况,例子中众数为1,所以都返回)Output:0     801     922    104dtype: int64

我们也可以使用DataFrame的describe方法对DataFrame查看基本的统计情况:

df.describe()Outprint:          chinese     english   math         sumcount    3.000000    3.000000    3.0    3.000000mean   104.000000  103.000000   92.0  299.000000std      6.244998   25.632011   12.0   39.949969min     99.000000   79.000000   80.0  273.00000025%    100.500000   89.500000   86.0  276.00000050%    102.000000  100.000000   92.0  279.00000075%    106.500000  115.000000   98.0  312.000000max    111.000000  130.000000  104.0  345.000000

三.排序

一般来讲我们的成绩表都是按照总分从高到低进行排序:

df = df.sort_values(by='sum', ascending=False)Output:        name  chinese  english  math  sum2  HanMeiNei      111      130   104  3450   XiaoMing       99      100    80  2791      LiHua      102       79    92  273

可以看到我们使用了sort_values方法对DataFrame进行排序,同时by参数传入‘sum’指定按照‘sum’字段进行排序,ascending用来设置是降序(False)还是升序(True,默认值)排序。使用sort_values排序后默认会返回一个新的DataFrame对象,也就是说并不会影响原有的DataFrame对象,所以例子中我们才会把排序后的对象赋值给原有的DataFrame对象,如果不想排序后创建新的对象也是可以的,只需要传入inplace=True即可(在原有的DataFrame基础上修改):

df.sort_values(by='sum', ascending=False, inplace=True)print(df)Output:        name  chinese  english  math  sum2  HanMeiNei      111      130   104  3450   XiaoMing       99      100    80  2791      LiHua      102       79    92  273

细心的小伙伴可能会发现当我们进行排序后,如果DataFrame中的行数据有调整的话,其行的索引值是不会更改的,上述例子中因为我们用了默认的递增数列索引,所以排序后看起来并不是很友好,不过不用担心,我们还是可以重置索引值的:

df = df.sort_values(by='sum', ascending=False).reset_index()Output:   index       name  chinese  english  math  sum0      2  HanMeiNei      111      130   104  3451      0   XiaoMing       99      100    80  2792      1      LiHua      102       79    92  273

使用reset_index重设索引后我们的DataFrame对象的索引列确实被重置成了递增的序列,同时也多了列名为index的一列数据。当然我们可以传入drop=True将原有的索引列不插入到新的DataFrame中:

df = df.sort_values(by='sum', ascending=False).reset_index(drop=True)        name  chinese  english  math  sum0  HanMeiNei      111      130   104  3451   XiaoMing       99      100    80  2792      LiHua      102       79    92  273

为了更直观的展示排名情况,我们可以索引值+1这样就展示出了学生的排名情况:

df.index += 1        name  chinese  english  math  sum1  HanMeiNei      111      130   104  3452   XiaoMing       99      100    80  2793      LiHua      102       79    92  273

以上是“Pandas如何实现DataFrame运算、统计与排序操作”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Pandas如何实现DataFrame运算、统计与排序操作

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Pandas如何实现DataFrame运算、统计与排序操作

这篇文章主要介绍Pandas如何实现DataFrame运算、统计与排序操作,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!由于DataFrame的数据结构中包含了多行、多列,所以DataFrame的计算与统计可以是用行
2023-06-29

操作系统容器编排与云计算:如何将容器编排技术应用到云端,发挥更强大的威力

容器编排技术已经成为云计算中的一种重要技术,本文将介绍如何将容器编排技术应用到云端,以发挥更为强大的威力。
操作系统容器编排与云计算:如何将容器编排技术应用到云端,发挥更强大的威力
2024-02-12

操作系统容器编排与微服务架构:如何实现完美结合,让你的应用程序更加灵活

本文将深入探讨操作系统容器编排与微服务架构的完美结合,并通过演示代码,详细介绍如何在实际应用中实施,从而让应用程序更加灵活、高效。
操作系统容器编排与微服务架构:如何实现完美结合,让你的应用程序更加灵活
2024-02-11

操作系统容器编排的最佳实践:如何避免常见的陷阱,让你的应用程序运行更顺畅

操作系统容器编排是实现应用程序现代化和提高可移植性的关键技术。本文分享了在操作系统容器编排实践中常见的陷阱,并提供了避免这些陷阱的最佳实践,帮助您构建更可靠、更可扩展的应用程序。
操作系统容器编排的最佳实践:如何避免常见的陷阱,让你的应用程序运行更顺畅
2024-02-11

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录