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 相关文章推荐
使用Python的Tornado框架实现一个一对一聊天的程序
Apr 25 Python
python下os模块强大的重命名方法renames详解
Mar 07 Python
Python2.7+pytesser实现简单验证码的识别方法
Dec 29 Python
django 发送手机验证码的示例代码
Apr 25 Python
python的中异常处理机制
Aug 30 Python
解决Python2.7中IDLE启动没有反应的问题
Nov 30 Python
Python切片操作去除字符串首尾的空格
Apr 22 Python
Python TCP通信客户端服务端代码实例
Nov 21 Python
Python之Class&Object用法详解
Dec 25 Python
Python:type、object、class与内置类型实例
Dec 25 Python
Python自动化办公Excel模块openpyxl原理及用法解析
Nov 05 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
Jan 15 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 冒泡排序算法的实现代码
2010/08/08 PHP
解析coreseek for sphinx的使用
2013/06/21 PHP
微信第三方登录(原生)demo【必看篇】
2017/05/26 PHP
discuz论坛更换域名,详细文件修改步骤
2020/12/09 PHP
jQuery实现精美的多级下拉菜单特效
2015/03/14 Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
2015/07/17 Javascript
javascript控制层显示或隐藏的方法
2015/07/22 Javascript
JS模拟简易滚动条效果代码(附demo源码)
2016/04/05 Javascript
Javascript 正则表达式校验数字的简单实例
2016/11/02 Javascript
Bootstrap导航条的使用和理解3
2016/12/14 Javascript
JS前端加密算法示例
2016/12/22 Javascript
jQuery实现优雅的弹窗效果(6)
2017/02/08 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
清空元素html("") innerHTML="" 与 empty()的区别和应用(推荐)
2017/08/14 Javascript
JS 实现百度搜索功能
2018/02/01 Javascript
React+Webpack快速上手指南(小结)
2018/08/15 Javascript
Echart折线图手柄触发事件示例详解
2018/12/16 Javascript
详解Python的迭代器、生成器以及相关的itertools包
2015/04/02 Python
Python函数可变参数定义及其参数传递方式实例详解
2015/05/25 Python
在Python中使用defaultdict初始化字典以及应用方法
2018/10/31 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
2019/07/16 Python
基于Python实现扑克牌面试题
2019/12/11 Python
python 比较2张图片的相似度的方法示例
2019/12/18 Python
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
苹果音乐订阅:Apple Music
2018/08/02 全球购物
Dr. Martens马汀博士法国官网:马丁靴鼻祖
2020/01/15 全球购物
学校食堂采购员岗位职责
2013/12/05 职场文书
电子商务个人自荐信
2013/12/12 职场文书
教师敬业奉献模范事迹材料
2014/05/18 职场文书
天地会口号
2014/06/17 职场文书
党员对照检查材料思想汇报(党的群众路线)
2014/09/24 职场文书
预备党员自我批评思想汇报
2014/10/10 职场文书
针对吵架老公保证书
2015/05/08 职场文书
社区党建工作总结2015
2015/05/13 职场文书
师范生见习总结范文
2015/06/23 职场文书
《小蝌蚪找妈妈》教学反思
2016/02/23 职场文书