pandas 对日期类型数据的处理方法详解


Posted in Python onAugust 08, 2019

pandas 的日期/时间类型有如下几种:

Concept Scalar Class Array Class pandas Data Type Primary Creation Method
Date times Timestamp DatetimeIndex datetime64[ns] or datetime64[ns, tz] to_datetime or date_range
Time deltas Timedelta TimedeltaIndex timedelta64[ns] to_timedelta or timedelta_range
Time spans Period PeriodIndex period[freq] Period or period_range
Date offsets DateOffset None None DateOffset

本文介绍在处理时点数 (point in time) 一些常用的处理方法,仍然以上一篇的示例数据为例进行讲解。pandas 用 Timestamp 表示时点数,在大多数情况下和 python 的 datetime 类型的使用方法是通用的。

首先获取数据,并且将 DataFrame 的 date 列转换成 datetime 类型:

df1 = pd.read_csv('https://raw.githubusercontent.com/stonewm/python-practice-projects/master/pandas%20sample%20data/sample-salesv3.csv')
df1['date'] = pd.to_datetime(df1['date']) # convert date column to datetime
df1.head()

pandas 对日期类型数据的处理方法详解

也可以在 read_csv() 方法中,通过 parse_dates 参数直接将某些列转换成 datetime64 类型:

df1 = pd.read_csv('sample-salesv3.csv', parse_dates=['date'])

我们据此销售数据,按月份、按季度统计 sku 的销售金额。
pandas 的 pandas.Series.dt 可以获得日期/时间类型的相关信息。比如

df1['date'].dt.year
df1['date'].dt.month
df1['date'].dt.quarter

但这些类型返回值为 int 类型,作为统计的字段,我们更希望是 2014-04 这样的格式,有两个方法:

# 方法 1
df1['year_month'] = df1['date'].apply(lambda x : x.strftime('%Y-%m'))

pandas 对日期类型数据的处理方法详解

第二种方法:

df1['period'] = df1['date'].dt.to_period('M')

pandas 对日期类型数据的处理方法详解

第二种方法使用起来更加简单,参数 M 表示月份,Q 表示季度,A 表示年度,D 表示按天,这几个参数比较常用。
新增了一列之后,做出数据透视表:

import numpy as np
pivot = pd.pivot_table(df1, index=['sku'], columns=['period'], values=['ext price'], aggfunc=np.sum)
pivot.head()

pandas 对日期类型数据的处理方法详解

再做一个按季度统计的数据透视表:

df1['quarter'] = df1['date'].dt.to_period('Q')
quarter_pivot = pd.pivot_table(df1, index=['sku'], columns=['quarter'], values=['ext price'], aggfunc=np.sum)

pandas 对日期类型数据的处理方法详解

参考

Time Series / Date functionality

Extracting just Month and Year from Pandas Datetime column

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

Python 相关文章推荐
python开发的小球完全弹性碰撞游戏代码
Oct 15 Python
python中requests模块的使用方法
Apr 08 Python
Python3处理文件中每个词的方法
May 22 Python
Python实现对象转换为xml的方法示例
Jun 08 Python
python中Matplotlib实现绘制3D图的示例代码
Sep 04 Python
Ubuntu安装Jupyter Notebook教程
Oct 18 Python
django框架自定义用户表操作示例
Aug 07 Python
Django和Flask框架优缺点对比
Oct 24 Python
在python3中实现查找数组中最接近与某值的元素操作
Feb 29 Python
keras.layer.input()用法说明
Jun 16 Python
PyCharm vs VSCode,作为python开发者,你更倾向哪种IDE呢?
Aug 17 Python
Python基础教程,Python入门教程(超详细)
Jun 24 Python
解决Python设置函数调用超时,进程卡住的问题
Aug 08 #Python
Python 根据日志级别打印不同颜色的日志的方法示例
Aug 08 #Python
Python学习笔记之错误和异常及访问错误消息详解
Aug 08 #Python
Python实现直方图均衡基本原理解析
Aug 08 #Python
python获取指定日期范围内的每一天,每个月,每季度的方法
Aug 08 #Python
Python 调用 Outlook 发送邮件过程解析
Aug 08 #Python
python判断自身是否正在运行的方法
Aug 08 #Python
You might like
php利用新浪接口查询ip获取地理位置示例
2014/01/20 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
jQuery select控制插件
2009/08/17 Javascript
用js实现层随着内容大小动态渐变改变 推荐
2009/12/19 Javascript
js 实现复制到粘贴板的功能代码
2010/05/13 Javascript
JS网页播放声音实现代码兼容各种浏览器
2013/09/22 Javascript
javascript实现动态加载CSS
2015/01/26 Javascript
如何制作幻灯片(代码分享)
2017/01/06 Javascript
Angularjs cookie 操作实例详解
2017/09/27 Javascript
cordova入门基础教程及使用中遇到的一些问题总结
2017/11/14 Javascript
js和jQuery以及easyui实现对下拉框的指定赋值方法
2018/01/23 jQuery
element-ui表格列金额显示两位小数的方法
2018/08/24 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
2019/05/14 jQuery
[44:40]KG vs LGD 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
深入Python函数编程的一些特性
2015/04/13 Python
在Python中处理列表之reverse()方法的使用教程
2015/05/21 Python
python自动裁剪图像代码分享
2017/11/25 Python
python实现图片文件批量重命名
2020/03/23 Python
django+echart绘制曲线图的方法示例
2018/11/26 Python
python 遗传算法求函数极值的实现代码
2020/02/11 Python
解决启动django,浏览器显示“服务器拒绝访问”的问题
2020/05/13 Python
Python3 pywin32模块安装的详细步骤
2020/05/26 Python
Tensorflow使用Anaconda、pycharm安装记录
2020/07/29 Python
关于多种方式完美解决Python pip命令下载第三方库的问题
2020/12/21 Python
Python从MySQL数据库中面抽取试题,生成试卷
2021/01/14 Python
Pretty Little Thing爱尔兰:时尚女性服饰
2017/03/27 全球购物
Melissa鞋马来西亚官方网站:MDreams马来西亚
2018/04/05 全球购物
国际象棋商店:The Chess Store
2018/07/09 全球购物
澳大利亚领先的武术用品和健身器材供应商:SMAI
2019/03/24 全球购物
Java面试笔试题大全
2016/11/23 面试题
简历自我评价模版
2014/01/31 职场文书
党的群众路线教育实践活动个人对照检查材料(企业)
2014/11/05 职场文书
Python列表删除重复元素与图像相似度判断及删除实例代码
2021/05/07 Python
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
2021/05/26 Python
90后经典动画片排行:《数码宝贝》第二,《小鲤鱼历险记》在榜
2022/03/18 日漫