家族战队|pandas | DataFrame中的排序与汇总方法
今天是pandas数据处理专题的第六篇文章 , 我们来聊聊DataFrame的排序与汇总运算 。
在上一篇文章当中我们主要介绍了DataFrame当中的apply方法 , 如何在一个DataFrame对每一行或者是每一列进行广播运算 , 使得我们可以在很短的时间内处理整份数据 。 今天我们来聊聊如何对一个DataFrame根据我们的需要进行排序以及一些汇总运算的使用方法 。
排序
排序是我们一个非常基本的需求 , 在pandas当中将这个需求进一步细分 , 细分成了根据索引排序以及根据值排序 。 我们先来看看Series当中的排序方法 。
Series当中的排序方法有两个 , 一个是sort_index , 顾名思义根据Series中的索引对这些值进行排序 。 另一个是sort_values , 根据Series中的值来排序 。 这两个方法都会返回一个新的Series:
索引排序
对于DataFrame来说也是一样 , 同样有根据值排序以及根据索引排序这两个功能 。 但是由于DataFrame是一个二维的数据 , 所以在使用上会有些不同 。 最简单的差别是在于Series只有一列 , 我们明确的知道排序的对象 , 但是DataFrame不是 , 它当中的索引就分为两种 , 分别是行索引以及列索引 。 所以我们在排序的时候需要指定我们想要排序的轴 , 也就是axis 。
默认的情况我们是根据行索引进行排序 , 如果我们要指定根据列索引进行排序 , 需要传入参数axis=1 。
我们还可以传入ascending这个参数 , 用来指定我们想要的排序顺序是正序还是倒序 。
值排序
DataFrame的值排序有所不同 , 我们不能对行进行排序 , 只能针对列 。 我们通过by参数传入我们希望排序参照的列 , 可以是一列也可以是多列 。
排名
有的时候我们希望得到元素的排名 , 我们会希望知道当前元素在整体当中排第几 , pandas当中也提供了这个功能 , 它就是rank方法 。
我们可以发现我们随手输入的一串数字当中 , 包含两个7 , 7是Series当中最大的数字 , 但是它们的排名为什么是6.5呢?
其实很简单 , 因为7出现了两次 , 分别是第6位和第7位 , 这里对它所有出现的排名取了平均 , 所以是6.5 。 如果我们不希望它取平均 , 而是根据出现的先后顺序给出排名的话 , 我们可以用method参数指定我们希望的效果 。
method的合法参数并不止first这一种 , 还有一些其他稍微冷门一些的用法 , 我们一并列出 。
如果是DataFrame的话 , 默认是以行为单位 , 计算每一行中元素占整体的排名 。 我们也可以通过axis参数指定以列为单位计算:
推荐阅读
- 【】家族势力把控基层政权 河南一“村官”涉黑团伙32人获刑
- 大河客户端|布局战队,导师各有妙招,《2020中国好声音》收视率蝉联第一
- 周到|“好声音”蝉联省级卫视综艺节目收视第一,首迎抢位战导师布局战队各有妙招
- 卡戴珊家族|卡戴珊家族钟爱黑人?63岁“武则天”选上小25岁男友,NBA球星窃喜
- 通天战队|A股最励志闻泰科技!给华为小米打工到半导体巨头,半年赚17亿
- 明星八卦|盘点娱乐圈富二代,家族企业不可怕,就怕太低调
- |《街舞3》火舞台battle开启 钟汉良战队团魂之力势不可挡
- |《这!就是街舞》第三季火舞台热力喷发,队长领衔齐舞大秀燃炸战队之魂
- 尤尤爱八卦|杨颖侧颜优越,李晨状态好,看到郭麒麟:厉害了!,奔跑吧家族生图
- 《龙船调》唱出土苗儿女新生活——湖北省恩施土家族苗族自治州利川市的脱贫之路