Python pandas sort_values方法的使用

  • 1、起因
  • 2、sort_values() 函数说明
  • 3、sort_values() 具体参数
  • 4、sort_values() 使用
    • 4.1 单列/行排序
    • 4.2 多列/行排序
  • 5、应用

1、起因

今天做到北京玛达科技有限公司2021数据处理工程师笔试题,有一题是这样:


按照文件中单词出现频次由高往低依次排序,这个对我来说很好实现,用上 pandas 的 sort_values 方法就手到擒来。但是他后面又加上了一个条件,如果频次相同的情况下,按照单词的 MD5 值排序。这可把我迷住了:

  • 先用sort_values方法,频次由高往低依次排,再把频次相同单独拿出来再用 MD5 排?(因为sort_values排序后,同一频次的单词顺序会改变)
  • 还是先 MD5 排,再在不改变同一频次的单词顺序情况下,频次由高往低依次排?

最后去看了有关于 sort_values 的文档,成功解决先把单词出现频次由高往低依次排序,再把频次相同的情况下的单词按照 MD5 值排序这个问题,下面我带大家回顾一下 Python pandas sort_values() 方法的使用

2、sort_values() 函数说明

pandas 库的 sort_values() 函数可以对 Dataframe 的数据集按照某个字段中的数据进行排序。该函数可以指定列数据或行数据进行排序,可以是单个,也可以是 多个(以前经常用来处理单列/行数据,忘记了 sort_values() 也可以处理多列/行数据)。 series 也有 一个 sort_values() 函数,但在参数上稍有区别。

官方文档:pandas.Series.sort_values 和 pandas.DataFrame.sort_values

3、sort_values() 具体参数

格式如下:

DataFrame.sort_values(by=‘进行排序的列名或索引值’, axis=0, ascending=True, inplace=False, kind=‘quicksort’, na_position=‘last’, ignore_index=False, key=None)
参数 说明
by 指定要进行排序的列名或索引值
axis 若 axis=0 或 ‘index’,则按照指定 的数据大小排序;若 axis=1 或 ‘columns’,则按照指定 索引 中数据大小排序。默认axis=0
ascending 若 ascending=True,则按照升序排序;若 ascending=False,则按降序排序,默认为True,即升序排序。如果这是一个 bool 列表,则必须匹配 by 的长度
inplace 排序后的数据是否替换原来的数据,默认为False,即不替换
ignore_index 是否重置索引,默认为不重置

4、sort_values() 使用

4.1 单列/行排序

import pandas as pd
df = pd.read_csv('test.csv')
# 根据hello列降序排序
data = df.sort_values(by="hello", ascending=False, ,axis=0)
# axis=0表示按列,同理axis=1表示按行

4.2 多列/行排序

import pandas as pd
df = pd.read_csv('test.csv')
# 根据第一列降序排序,当第一列相同时,根据第三列进行升序排序。并且重置索引,替换原数据
data = df.sort_values(by = ['col1','col3'],ascending=[False,True],ignore_index=True,inplace=True)

5、应用

所以一开始那道题我这样写的:

# -*- coding: utf-8 -*-
# ---
# @Software: PyCharm
# @File: main.py
# @Author: WangYunchang
# @E-mail: wangyunchang@dxy.cn
# @Site:
# @Time: 9月 20, 2022
# ---
import csv
import pandas as pd
import hashlibcounts = {}
# 读取文件
txt = open("word2count.txt").read()
# 将大写字母转化为小写
txt = txt.lower()
# 把文章中不是英文字母的全部代替为空格
for ch in '0123456789.,()%-':txt = txt.replace(ch, " ")
# 分割成列表
words = txt.split()
# 统计单词
for word in words:counts[word] = counts.get(word, 0) + 1
items = list(counts.items())
# 将所得单词及数目写入csv文件中
csvFile = open('word_result.csv', 'w', newline='')
# 写入表头,A是单词,B是出现次数
csv.writer(csvFile).writerow(["A", "MD5", "B"])
# 统计结果写入csv
writer = csv.writer(csvFile)
for key in counts:# MD5值ss = hashlib.md5(key.encode('utf-8')).hexdigest()writer.writerow([key, ss, counts[key]])
csvFile.close()
df = pd.read_csv('word_result.csv')
# 根据B降序排序,当B相同时,根据MD5进行降序排序
data = df.sort_values(by=["B", "MD5"], ascending=[False, False])
# 删除MD5
data = data.drop(columns="MD5")
# 把新的数据写入文件
data.to_csv('word_result.csv', mode='w', index=False)

Python pandas sort_values()方法的使用相关推荐

  1. python pandas聚合_Python Pandas分组聚合的实现方法

    Pycharm 鼠标移动到函数上,CTRL+Q可以快速查看文档,CTR+P可以看基本的参数. apply(),applymap()和map() apply()和applymap()是DataFrame ...

  2. python对数据进行合并的函数_利用Python pandas对Excel进行合并的方法示例

    前言 在网上找了很多Python处理Excel的方法和代码,都不是很尽人意,所以自己综合网上各位大佬的方法,自己进行了优化,具体的代码如下. 博主也是新手一枚,代码肯定有很多需要优化的地方,欢迎各位大 ...

  3. python安装pandas模块-python安装numpy和pandas的方法步骤

    最近要对一系列数据做同比比较,需要用到numpy和pandas来计算,不过使用python安装numpy和pandas因为linux环境没有外网遇到了很多问题就记下来了.首要条件,python版本必须 ...

  4. python最快的循环方法_【转】【Python效率】五种Pandas循环方法效率对比

    [Python效率]五种Pandas循环方法效率对比 - 文兄的文章 - 知乎 https://zhuanlan.zhihu.com/p/80880493 正文: 如果你使用过Python及Panda ...

  5. python如何安装panda数据库_在Pycharm中安装Pandas库方法(简单易懂)

    开发环境的搭建是一件入门比较头疼的事情,在上期的文稿基础上,增加一项Anaconda的安装介绍.Anaconda是Python的一个发行版本,安装好了Anaconda就相当于安装好了Python,并且 ...

  6. python移动平均线绘图_对python pandas 画移动平均线的方法详解

    数据文件 66001_.txt 内容格式: date,jz0,jz1,jz2,jz3,jz4,jz5 2012-12-28,0.9326,0.8835,1.0289,1.0027,1.1067,1.0 ...

  7. python pandas 日期_python+pandas+时间、日期以及时间序列处理方法

    python+pandas+时间.日期以及时间序列处理方法 先简单的了解下日期和时间数据类型及工具 python标准库包含于日期(date)和时间(time)数据的数据类型,datetime.time ...

  8. python利用pandas合并excel表格代码_利用Python pandas对Excel进行合并的方法示例

    前言 在网上找了很多Python处理Excel的方法和代码,都不是很尽人意,所以自己综合网上各位大佬的方法,自己进行了优化,具体的代码如下. 博主也是新手一枚,代码肯定有很多需要优化的地方,欢迎各位大 ...

  9. 循环下标_【转】【Python效率】五种Pandas循环方法效率对比

    [Python效率]五种Pandas循环方法效率对比 - 文兄的文章 - 知乎 https://zhuanlan.zhihu.com/p/80880493 正文: 如果你使用过Python及Panda ...

最新文章

  1. Java多态性Polymorphic
  2. 重磅!监管再升级!微信、淘宝、抖音或将纳入“超级平台”监管
  3. 机器学习中的不平衡分类方法(part4)--朴素贝叶斯分类器
  4. 如何使用PowerShell提升开发效率(以Windows Embedded CE为例)
  5. docker时区问题
  6. python3安装json库-python库json快速入门
  7. Python3基础3——List列表的增删改和内建函数的用法
  8. vim nerdtree 标签_学业支持 | OS课程——给你的vim换套新衣服
  9. Net设计模式实例之组合模式(Composite Pattern)(3)
  10. python 功能代码是什么_Python功能代码
  11. 粒子滤波与PF目标追踪
  12. wifidog php源码 配置,wifidog官方源码
  13. Linux下使用zip命令加密压缩/解压文件 zip、unzip、unar
  14. MIMOl信道估计基本原理
  15. 5000头奶牛的数字化之旅
  16. 苹果ios8_手机资讯:你必须要知道的iOS8实用小技巧汇总
  17. SOFTICE 初使用
  18. 史上最详[ZI]细[DUO]的wfuzz中文教程(一)——初识wfuzz
  19. 简单介绍Fastboot
  20. node.js入门之child_process子进程

热门文章

  1. c语言表单文件上传,requests实现文件上传(对应postman form-data)
  2. 数据库隔离级别(四种)
  3. 【python自动化办公】Python自动化之Excel——XLWings模块(入门)
  4. mysql中distinct与join,INNER JOIN DISTINCT与MySQL
  5. ORA-00911 部分机器报错,部分不报
  6. VR看房难改变国内房地产市场,看看国外巨头怎么做
  7. Python-人物词频统计-jieba库-三国演义
  8. 翠香猕猴桃文案,水果店翠香猕猴桃文案
  9. 手写FSM实现小怪状态管理
  10. Promise解决回调地狱