python pandas 数据排序的几种常用方法

前言:

pandas中排序的几种常用方法,主要包括sort_index和sort_values。

基础数据:

import pandas as pd
import numpy as np
data = {
    'brand':['Python', 'C', 'C++', 'C#', 'Java'],
    'B':[4,6,8,12,10],
    'A':[10,2,5,20,16],
    'D':[6,18,14,6,12],
    'years':[4,1,1,30,30],
    'C':[8,12,18,8,2]
}
index = [9,3,4,5,2]
df = pd.DataFrame(data=data, index = index)
print("df数据:\n", df, '\n')

out:

df数据:
     A   B   C   D   brand  years
9  10   4   8   6  Python      4
3   2   6  12  18       C      1
4   5   8  18  14     C++      1
5  20  12   8   6      C#     30
2  16  10   2  12    Java     30

按行索引排序:

print("按行索引排序:\n", df.sort_index(), '\n')

out:

按行索引排序:
     A   B   C   D   brand  years
2  16  10   2  12    Java     30
3   2   6  12  18       C      1
4   5   8  18  14     C++      1
5  20  12   8   6      C#     30
9  10   4   8   6  Python      4

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

设置ascending=False时,为降序排序。

print("按行索引降序排序:\n", df.sort_index(ascending=False), '\n')

out:

按行索引降序排序:
     A   B   C   D   brand  years
9  10   4   8   6  Python      4
5  20  12   8   6      C#     30
4   5   8  18  14     C++      1
3   2   6  12  18       C      1
2  16  10   2  12    Java     30

按列的名称排序:

设置参数axis=1实现按列的名称排序:

print("按列名称排序:\n", df.sort_index(axis=1), '\n')

out:

按列名称排序:
     A   B   C   D   brand  years
9  10   4   8   6  Python      4
3   2   6  12  18       C      1
4   5   8  18  14     C++      1
5  20  12   8   6      C#     30
2  16  10   2  12    Java     30

同样,也可以设置ascending参数:

print("按列名称排序:\n", df.sort_index(axis=1, ascending=False), '\n')

out:

按列名称排序:
    years   brand   D   C   B   A
9      4  Python   6   8   4  10
3      1       C  18  12   6   2
4      1     C++  14  18   8   5
5     30      C#   6   8  12  20
2     30    Java  12   2  10  16

按数值排序:

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

1、按单个列的值排序

sort_values()中设置单个列的列名,可以对单个列进行排序,通过设置ascending可以设置升序或者降序。

print("按列名称A排序:\n", df.sort_values('A'), '\n')

out:

按列名称排序:
     A   B   C   D   brand  years
3   2   6  12  18       C      1
4   5   8  18  14     C++      1
9  10   4   8   6  Python      4
2  16  10   2  12    Java     30
5  20  12   8   6      C#     30

设置ascending=False进行降序排序:

print("按列名称A降序排序:\n", df.sort_values('A', ascending=False), '\n')

out:

按列名称A降序排序:
     A   B   C   D   brand  years
5  20  12   8   6      C#     30
2  16  10   2  12    Java     30
9  10   4   8   6  Python      4
4   5   8  18  14     C++      1
3   2   6  12  18       C      1

按多个列的值排序:

先按year列的数据进行升序排序,year列相同的再看B列进行升序排序

print("按多个列排序:\n", df.sort_values(['years', 'B']), '\n')

out:

按多个列排序:
     A   B   C   D   brand  years
3   2   6  12  18       C      1
4   5   8  18  14     C++      1
9  10   4   8   6  Python      4
2  16  10   2  12    Java     30
5  20  12   8   6      C#     30

也可以分别设置列的升序、降序来排序:

years列为升序,B列为降序。

print("按多个列排序:\n", df.sort_values(['years', 'B'], ascending=[True, False]), '\n')

out:

按多个列排序:
     A   B   C   D   brand  years
4   5   8  18  14     C++      1
3   2   6  12  18       C      1
9  10   4   8   6  Python      4
5  20  12   8   6      C#     30
2  16  10   2  12    Java     30

inplace使用:

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

df.sort_values('A', inplace=True)
print("按A列排序:\n", df, '\n')

out:

按A列排序:
     A   B   C   D   brand  years
3   2   6  12  18       C      1
4   5   8  18  14     C++      1
9  10   4   8   6  Python      4
2  16  10   2  12    Java     30
5  20  12   8   6      C#     30

缺失值:

含有nan值的数据排序:

data = {
    'brand':['Python', 'C', 'C++', 'C#', 'Java'],
    'B':[4,6,8,np.nan,10],
    'A':[10,2,5,20,16],
    'D':[6,18,14,6,12],
    'years':[4,1,1,30,30],
    'C':[8,12,18,8,2]
}
index = [9,3,4,5,2]
df = pd.DataFrame(data=data, index = index)
print("df数据:\n", df, '\n')

out:

df数据:
     A     B   C   D   brand  years
9  10   4.0   8   6  Python      4
3   2   6.0  12  18       C      1
4   5   8.0  18  14     C++      1
5  20   NaN   8   6      C#     30
2  16  10.0   2  12    Java     30

B列含有nan值,对B列进行排序,缺失值排在最前面:

print("按B列排序:\n", df.sort_values('B', na_position='first'), '\n')

按B列排序:
     A     B   C   D   brand  years
5  20   NaN   8   6      C#     30
9  10   4.0   8   6  Python      4
3   2   6.0  12  18       C      1
4   5   8.0  18  14     C++      1
2  16  10.0   2  12    Java     30

包含缺失值,缺失值排在最后:

print("按B列排序:\n", df.sort_values('B', na_position='last'), '\n')

out:

按B列排序:
     A     B   C   D   brand  years
9  10   4.0   8   6  Python      4
3   2   6.0  12  18       C      1
4   5   8.0  18  14     C++      1
2  16  10.0   2  12    Java     30
5  20   NaN   8   6      C#     30

到此这篇关于python pandas 数据排序的几种常用方法的文章就介绍到这了,更多相关python pandas内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python如何利用pandas读取csv数据并绘图

    目录 如何利用pandas读取csv数据并绘图 绘制图像 展示结果 pandas画pearson相关系数热力图 pearson相关系数计算函数 如何利用pandas读取csv数据并绘图 导包,常用的numpy和pandas,绘图模块matplotlib, import matplotlib.pyplot as plt import pandas as pd import numpy as np fig = plt.figure() ax = fig.add_subplot(111) 读取csv文

  • python pandas处理excel表格数据的常用方法总结

    目录 前言 1.读取xlsx表格:pd.read_excel() 2.获取表格的数据大小:shape 3.索引数据的方法:[ ] / loc[] / iloc[] 4.判断数据为空:np.isnan() / pd.isnull() 5.查找符合条件的数据 6.修改元素值:replace() 7.增加数据:[ ] 8.删除数据:del() / drop() 9.保存到excel文件:to_excel() 总结 前言 最近助教改作业导出的成绩表格跟老师给的名单顺序不一致,脑壳一亮就用pandas写了

  • Python pandas DataFrame数据拼接方法

    目录 前言 DataFrame数据拼接方法一:使用.append()方法. DataFrame数据拼接方法二:使用.concat()方法. 补充:Python同时合并多个DataFrame 总结 前言 在pandas模块中,通常我们都需要对类型为DataFrame的数据进行操作,其中最为常见的操作便是拼接了.比如我们将两个Excel表格中的数据读入,随后拼接完成后保存进一个新的Excel表格文件中.之前查找了相关的博客, 发现网络上鱼龙混杂.有些代码完全无法执行,为了提高效率,这里做一个详细地记

  • python Pandas之DataFrame索引及选取数据

    目录 1.索引是什么 1.1 认识索引 1.2 自定义索引 2. 索引的简单使用 2.1 列索引 2.2 行索引 2.2.1 使用[ ] 2.2.2 使用.loc()和.iloc() 1.索引是什么 1.1 认识索引 先创建一个简单的DataFrame. myList = [['a', 10, 1.1], ['b', 20, 2.2], ['c', 30, 3.3], ['d', 40, 4.4]] df1 = pd.DataFrame(data = myList) print(df1) ---

  • Python数据分析Pandas Dataframe排序操作

    目录 1.索引的排序 2.值的排序 前言: 数据的排序是比较常用的操作,DataFrame 的排序分为两种,一种是对索引进行排序,另一种是对值进行排序,接下来就分别介绍一下. 1.索引的排序 DataFrame 提供了sort_index()方法来进行索引的排序,通过axis参数指定对行索引排序还是对列索引排序,默认为0,表示对行索引排序,设置为1表示对列索引进行排序:ascending参数指定升序还是降序,默认为True表示升序,设置为False表示降序, 具体使用方法如下: 对行索引进行降序

  • Python Pandas多种添加行列数据方法总结

    目录 前言 1. 增加列数据 2. 增加行数据 补充:pandas根据现有列新添加一列 总结 前言 发现自己学习python 的各种库老是容易忘记,所有想利用这个平台,记录和分享一下学习时候的知识点,以后也能及时的复习,最近学习pandas,那我们来看看pandas添加数据的一些方法 创建一个dataframe 1. 增加列数据 为dataframe增加一列新数据,需要确保增加列的长度与原数据保持一致 如果是增加一列相同数据可以直接输入 df['level'] = 1 插入的数据是需要通过源数据

  • Python pandas替换指定数据的方法实例

    目录 一.构造dataframe 二.替换指定数据(fillna.isin.replace) 1.用"sz"列的同行数据将"bj"列的空值替换掉 2.在1的基础上,将"sz"列为2或者6的数据替换成-4 三.替换函数replace()详解 1.全局替换元素 2.通过指定条件替换元素 3.通过模糊条件替换指定元素 总结 一.构造dataframe import pandas as pd import numpy as np df=pd.DataFr

  • python pandas 数据排序的几种常用方法

    前言: pandas中排序的几种常用方法,主要包括sort_index和sort_values. 基础数据: import pandas as pd import numpy as np data = { 'brand':['Python', 'C', 'C++', 'C#', 'Java'], 'B':[4,6,8,12,10], 'A':[10,2,5,20,16], 'D':[6,18,14,6,12], 'years':[4,1,1,30,30], 'C':[8,12,18,8,2] }

  • Python Pandas数据合并pd.merge用法详解

    目录 前言 语法 参数 1.连接键 2.索引连接 3.多连接键 4.连接方法 5.连接指示 总结 前言 实现类似SQL的join操作,通过pd.merge()方法可以自由灵活地操作各种逻辑的数据连接.合并等操作 可以将两个DataFrame或Series合并,最终返回一个合并后的DataFrame 语法 pd.merge(left, right, how = 'inner', on = None, left_on = None, right_on = None, left_index = Fal

  • Python实现发送email的几种常用方法

    学过Python的人都知道,实用Python实现发送email的功能还是比较简单的,可以通过登录邮件服务来发送,linux下也可以使用调用sendmail命令来发送,还可以使用本地或者是远程的smtp服务来发送邮件,不管是单个,群发,还是抄送都比较容易实现. 本文就把几个最简单的发送邮件方式记录下来,像html邮件,附件等也是支持的,读者在需要时可以参考查询一下.具体方法如下: 1.登录邮件服务 具体代码如下: #!/usr/bin/env python # -*- coding: utf-8

  • Python Pandas数据中对时间的操作

    Pandas中对 时间 这个属性的处理有非常非常多的操作. 而本文对其中一个大家可能比较陌生的方法进行讲解.其他的我会陆续上传. 应用情景是这样的:考虑到有一个数据集,数据集中有用户注册账号的时间(年-月-日),如下图格式. 如果我们希望对用户账号注册时间转为具体的天数,我们可以用如下代码. import pandas as pd td=data['user_reg_tm'] Time=pd.to_datetime(td) Start=pd.datetime(2016,4,16) day=Sta

  • 一文搞懂Python中Pandas数据合并

    目录 1.concat() 主要参数 示例 2.merge() 参数 示例 3.append() 参数 示例 4.join() 示例 数据合并是数据处理过程中的必经环节,pandas作为数据分析的利器,提供了四种常用的数据合并方式,让我们看看如何使用这些方法吧! 1.concat() concat() 可用于两个及多个 DataFrame 间行/列方向进行内联或外联拼接操作,默认对行(沿 y 轴)取并集. 使用方式 pd.concat( objs: Union[Iterable[~FrameOr

  • Python遍历pandas数据方法总结

    前言 Pandas是python的一个数据分析包,提供了大量的快速便捷处理数据的函数和方法.其中Pandas定义了Series 和 DataFrame两种数据类型,这使数据操作变得更简单.Series 是一种一维的数据结构,类似于将列表数据值与索引值相结合.DataFrame 是一种二维的数据结构,接近于电子表格或者mysql数据库的形式. 在数据分析中不可避免的涉及到对数据的遍历查询和处理,比如我们需要将dataframe两列数据两两相除,并将结果存储于一个新的列表中.本文通过该例程介绍对pa

  • Python基础之pandas数据合并

    一.concat concat函数是在pandas底下的方法,可以将数据根据不同的轴作简单的融合 pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False) axis: 需要合并链接的轴,0是行,1是列join:连接的方式 inner,或者outer 二.相同字段的表首尾相接 #现将表构成l

  • Python Pandas学习之基本数据操作详解

    目录 1索引操作 1.1直接使用行列索引(先列后行) 1.2结合loc或者iloc使用索引 1.3使用ix组合索引 2赋值操作 3排序 3.1DataFrame排序 3.2Series排序 为了更好的理解这些基本操作,下面会通过读取一个股票数据,来进行Pandas基本数据操作的语法介绍. # 读取文件(读取保存文件后面会专门进行讲解,这里先直接调用下api) data = pd.read_csv("./data/stock_day.csv")  # 读取当前目录下一个csv文件 # 删

  • python用pandas数据加载、存储与文件格式的实例

    数据加载.存储与文件格式 pandas提供了一些用于将表格型数据读取为DataFrame对象的函数.其中read_csv和read_talbe用得最多 pandas中的解析函数: 函数 说明 read_csv 从文件.URL.文件型对象中加载带分隔符的数据,默认分隔符为逗号 read_table 从文件.URL.文件型对象中加载带分隔符的数据.默认分隔符为制表符("\t") read_fwf 读取定宽列格式数据(也就是说,没有分隔符) read_clipboard 读取剪贴板中的数据,

随机推荐