当前位置:   article > 正文

Pandas 数据排序,人人都能学会的几种方法

pandas 排序

8a95100cde286c398185f2d34d3adbe1.gif

作者 | 阳哥

来源 | Python数据之道

Pandas 可以说是 在Python数据科学领域应用最为广泛的工具之一。

Pandas是一种高效的数据处理库,它以 dataframeseries 为基本数据类型,呈现出类似excel的二维数据。

在数据处理过程中,咱们经常需要将数据按照一定的要求进行排序,以方便展示。

这里,来给大家分享下 在 Pandas 中排序的几种常用方法,主要包括 sort_index  和 sort_values

01 按索引排序

数据准备

文中主要使用了 pandasnumpy ,首先导入 Python 库,如下:

  1. import pandas as pd
  2. import numpy as np
  3. print(f'pandas version: {pd.__version__}'
  4. # pandas version 1.3.2

本次使用的数据如下:

  1. data = {
  2.     'brand':['Python数据之道','价值前瞻','菜鸟数据之道','Python','Java'],
  3.     'B':[4,6,8,12,10],
  4.     'A':[10,2,5,20,16],
  5.     'D':[6,18,14,6,12],
  6.     'years':[4,1,1,30,30],
  7.     'C':[8,12,18,8,2],
  8. }
  9. index = [9,3,4,5,2]
  10. df = pd.DataFrame(data=data,index=index)
  11. df

55face7514561747d4f00183e822061d.png

按行索引排序

sort_index() 是 pandas 中按索引排序的函数,默认情况下, sort_index 是按行索引来排序。

055487c3cb17b99da7a4c491d97dcc3d.png

通过设置参数 ascending 可以设置升序或降序排列,默认情况下是 ascending=True ,为升序排列。

设置 ascending=False 时,为降序排列,如下:

a094b8d0dccb97a49fb03f88f35a82f6.png

按列的名称排序

通过设置参数 axis=1 可实现按列的名称排序,如下:

cbcd8e836408a534b347a1b8646c8afd.png

同样的,可以设置 参数 ascending 的值,如下:

086b69c0b0bbfe7f3a0574a77fe8ff0c.png

关于按列的名称排序,更多的方法,可以参考下面的内容:

02 按数值排序

sort_values() 是 pandas 中按数值排序的函数。

按单个列的值排序

sort_values() 中设置单个列的列名称,可以对单个列进行排序,通过设置参数 ascending 可以设置升序或降序排列,如下:

8b0edd537397730a099f605e0bd2c9cc.pnga832709d0d31fd9de7d04db9b13343b5.png

按多个列的值排序

同时,sort_values() 可以对多个列进行不同的排序,通过设置列明和排序方式组合来实现,如下:

2ec8a0247ae2aa18ec3673cd04fe9d9a.png

设置参数 ascendingyears 列为升序,B 列为降序,如下:

096947d46d093009630a166cbf750fcd.png

选择排序算法

选择排序算法,参数 kind 默认是 'quicksort',其他算法有 mergesort, heapsort, stable。

该参数只针对单个列时才有效。

639957ce4905bd21099dd14729e310da.png

在 numpy 的 sort文档中,对几种排序的特点进行了描述,主要是程序运行时占用的资源和运行速度有差异。

numpy 文档地址:

https://numpy.org/doc/stable/reference/generated/numpy.sort.html#numpy.sort

20d081901f2aca6ae83bb83967ca261c.png

示例如下:

962a8656c38adc07c0f4b5bab773a52e.png

忽略索引

在排序过程中,还可以引入 ignore_index 参数,来对行索引重新设置,如下:

43b0e3517d23b95b97017a05339977c0.png

inplace

inplace 是 pandas 中常见的一个参数。

inplace = True:不创建新的对象,直接对原始对象进行修改;默认是 False,即创建新的对象进行修改,原对象不变,和深复制和浅复制有些类似。

72b788565c77056841b2c488b53c4cf3.png

缺失值

先构造一个含缺失值的 dataframe,如下:

  1. data = {
  2.     'brand':['Python数据之道','价值前瞻','菜鸟数据之道','Python','Java'],
  3.     'B':[4,6,8,np.nan,12],
  4.     'A':['Lemon','emma','ZW','app','John'],
  5.     'D':[6,18,14,6,12],
  6.     'years':[4,1,1,30,30],
  7.     'C':[8,12,18,8,2],
  8. }
  9. index = [9,3,4,5,2]
  10. df1 = pd.DataFrame(data=data,index=index)
  11. df1

a14ff663fd4977f22dde15a860ace79d.png

缺失值排在最前面:

47279baf55708641ee27bec9c9e74109.png

缺失值排在最后面:

577778174e686cd3be85f66049a71d84.png

key 参数

通过设置 key 参数,可以将列按照特定条件进行排序,对比下下面的排序:

5774ba3f02ad0a97a3aa23c541e26ba8.png

8f8d2238420069cf3b976b0702dd0f60.gif

aac7a5244ef0881277a418df288f6909.png

往期回顾

介绍Pandas实战中的一些高端玩法

真香!详解Python好用的内置函数

Python 实现 GIF 动图以及视频卡通化

如何用一行Python代码制作一个GUI?

  1. 分享
  2. 点收藏
  3. 点点赞
  4. 点在看
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/162013
推荐阅读
相关标签
  

闽ICP备14008679号