Python CategoricalDtype自定义排序实现原理解析


Posted in Python onSeptember 11, 2020

CategoricalDtype自定义排序

当我们的透视表生成完毕后,有很多情况下需要我们对某列或某行值进行排序。排序有很多种方法。例如sort_index及sort_values函数也可以对数据进行排序,这里就不多说了。

对于数值和字母的排序很容易,但是对于中文的排序就有点麻烦了。默认情况下是按照utf-8的编码来进行排序的但是即使如此也很难满足我们对汉字排序的要求。所以通过CategoricalDtye可以把数据类型转成Category类型

然后通过指定参数列表的顺序来自定义那个元素先那个元素后,完全取决于你把那个元素放在List的前面,这样就大大方便了我们对中文排序的操作。

代码如下:

1. 自动生成DataFrame数据

#%%

import pandas as pd
from datetime import datetime

city =["上海","北京","深圳","杭州","苏州","青岛","大连","齐齐哈尔","大理","丽江",
     "天津","济南","南京","广州","无锡","连云港","张家界"]

#创建自动从list中选取valuse值的get_list函数
#replace=True代表允许选出的元素重复
def get_list(items,size=20):
  return pd.Series(items).sample(n=size,replace=True).to_list()

#通过get_list自动生成数据,最终生成一个DataFrame
df = pd.DataFrame({
   "城市":get_list(city),
   "仓位":get_list(["经济舱","商务舱","头等舱"]),
   "航线":get_list(["单程","往返"]),
   "日期": get_list([datetime(2020,8,1),datetime(2020,8,2),
           datetime(2020,8,3),datetime(2020,8,4)]),
   "时间": get_list(["09:00 - 12:00",
            "13:00 - 15:30",
            "06:30 - 15:00",
            "18:00 - 21:00",
            "20:00 - 23:20",
            "10:00 - 15:00"]),
   "航空公司": get_list(["东方航空","南方航空","深圳航空","山东航空","中国航空"]),
   "出票数量":get_list([10,15,20,25,30,35,40,45,50,55,60]),
  })
#%%
df

结果如下:

Python CategoricalDtype自定义排序实现原理解析

2. 查看数据类型

#%%

df.dtypes

Python CategoricalDtype自定义排序实现原理解析

3. 自定义数据类型(Category)按照指定顺序排序,并通过透视表展示数据

#%%
#自定义type,以及自定义排序的顺序
my_type = pd.CategoricalDtype(
  categories=["头等舱","商务舱","经济舱"],
  ordered=True
)
df["仓位"] = df["仓位"].astype(my_type) #将指定列转成自定义的type
df.dtypes
#%%
#通过透视表统计数据
tb = pd.pivot_table(
  df,
  index=["城市","仓位","航线","日期","时间"],
  values="出票数量",
  aggfunc=sum
)
tb

先查看数据类型:可以看出仓位的数据类型已经从Object变成了category类型了。

Python CategoricalDtype自定义排序实现原理解析

结果为:

Python CategoricalDtype自定义排序实现原理解析

分析上述数据可以看出,我们把仓位按照["头等舱","商务舱","经济舱"]的顺序进行了排序,排序结果也是按照这个顺序排列的,成功的满足了我们对中文列自定义排序的需求。

通过Pivot_table函数更加清晰的对原有数据进行了展示。也可以按照自己的需求展示其中的一部分数据。这样对数据的清洗及展示变得更加的灵活。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
pydev使用wxpython找不到路径的解决方法
Feb 10 Python
Python实现从订阅源下载图片的方法
Mar 11 Python
python中Genarator函数用法分析
Apr 08 Python
python编程测试电脑开启最大线程数实例代码
Feb 09 Python
Python如何实现转换URL详解
Jul 02 Python
python opencv将图片转为灰度图的方法示例
Jul 31 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
Sep 04 Python
基于spring boot 日志(logback)报错的解决方式
Feb 20 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
Apr 20 Python
tensorflow 大于某个值为1,小于为0的实例
Jun 30 Python
如何用Python 加密文件
Sep 10 Python
浅谈Python xlwings 读取Excel文件的正确姿势
Feb 26 Python
python 如何利用argparse解析命令行参数
Sep 11 #Python
Python Pivot table透视表使用方法解析
Sep 11 #Python
Python extract及contains方法代码实例
Sep 11 #Python
python 利用zmail库发送邮件
Sep 11 #Python
浅析Python 责任链设计模式
Sep 11 #Python
详解python命令提示符窗口下如何运行python脚本
Sep 11 #Python
python实现邮件循环自动发件功能
Sep 11 #Python
You might like
php 网页游戏开发入门教程一(webgame+design)
2009/10/26 PHP
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
2011/11/07 PHP
php密码生成类实例
2014/09/24 PHP
PHP获取星期几的常用方法小结
2018/12/18 PHP
Javascript new Date().valueOf()的作用与时间戳由来详解
2013/04/24 Javascript
清除div下面的所有标签的方法
2014/02/17 Javascript
2种jQuery 实现刮刮卡效果
2015/02/01 Javascript
javascript如何实现暂停功能
2015/11/06 Javascript
jQuery mobile转换url地址及获取url中目录部分的方法
2015/12/04 Javascript
js HTML5手机刮刮乐代码
2020/09/29 Javascript
jQuery 实现ajax传入参数含有特殊字符的方法总结
2016/10/17 Javascript
vue2.0开发实践总结之入门篇
2016/12/06 Javascript
js获取地址栏中传递的参数(两种方法)
2017/02/08 Javascript
JavaScript实现焦点进入文本框内关闭输入法的核心代码
2017/09/20 Javascript
JS模拟实现哈希表及应用详解
2018/05/04 Javascript
vue-for循环嵌套操作示例
2019/01/28 Javascript
Python中__call__用法实例
2014/08/29 Python
Python实现的简单文件传输服务器和客户端
2015/04/08 Python
使用Protocol Buffers的C语言拓展提速Python程序的示例
2015/04/16 Python
python选择排序算法实例总结
2015/07/01 Python
python+pyqt实现12306图片验证效果
2017/10/25 Python
对python 操作solr索引数据的实例详解
2018/12/07 Python
使用CSS实现阅读进度条
2017/02/27 HTML / CSS
全球虚拟主机商:HostGator
2017/02/06 全球购物
体育纪念品、亲笔签名的体育收藏品:Steiner Sports
2020/07/31 全球购物
高三自我鉴定范文
2013/10/19 职场文书
大学本科毕业生的自我鉴定范文
2013/11/19 职场文书
八年级数学教学反思
2014/01/31 职场文书
年终晚会主持词
2014/03/25 职场文书
诚信承诺书范文
2014/03/27 职场文书
体育运动口号
2014/06/09 职场文书
办公室文员岗位职责范本
2014/06/12 职场文书
家长给老师的感谢信
2015/01/20 职场文书
2015年污水处理厂工作总结
2015/05/26 职场文书
圣诞晚会主持词开场白
2015/05/28 职场文书
保外就医申请书范文
2015/08/06 职场文书