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 合并文件的具体实例
Aug 08 Python
Python datetime时间格式化去掉前导0
Jul 31 Python
python脚本实现分析dns日志并对受访域名排行
Sep 18 Python
Python中使用异常处理来判断运行的操作系统平台方法
Jan 22 Python
详解Python中的多线程编程
Apr 09 Python
python登录pop3邮件服务器接收邮件的方法
Apr 30 Python
python dataframe astype 字段类型转换方法
Apr 11 Python
Python 查找字符在字符串中的位置实例
May 02 Python
Python3实现配置文件差异对比脚本
Nov 18 Python
Python编译为二进制so可执行文件实例
Dec 23 Python
如何从csv文件构建Tensorflow的数据集
Sep 21 Python
python爬虫中PhantomJS加载页面的实例方法
Nov 12 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中cURL库的常见用法代码示例
2016/05/06 PHP
Windows 下安装 swoole 图文教程(php)
2017/06/05 PHP
PHP+redis实现的购物车单例类示例
2019/02/02 PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
2019/07/03 PHP
flash 得到自身url参数的代码
2009/11/15 Javascript
Jquery Validation插件防止重复提交表单的解决方法
2010/03/05 Javascript
JavaScript中的property和attribute介绍
2011/12/26 Javascript
JQuery伸缩导航练习示例
2013/11/13 Javascript
javascript定义类和类的实现实例详解
2015/12/01 Javascript
BootStrap中Tab页签切换实例代码
2016/05/30 Javascript
jquery插入兄弟节点的操作方法
2016/12/07 Javascript
jQuery实现的手风琴侧边菜单效果
2017/03/29 jQuery
JS常用的几种数组遍历方式以及性能分析对比实例详解
2018/04/11 Javascript
socket io与vue-cli的结合使用的示例代码
2018/11/01 Javascript
微信小程序实现两个页面传值的方法分析
2018/12/11 Javascript
vue-cli配置全局sass、less变量的方法
2019/06/06 Javascript
小程序api实现promise封装过程解析
2019/11/21 Javascript
解决vux 中popup 组件Mask 遮罩在最上层的问题
2020/11/03 Javascript
Python实现的下载网页源码功能示例
2017/06/13 Python
基于pycharm导入模块显示不存在的解决方法
2018/10/13 Python
Django objects的查询结果转化为json的三种方式的方法
2018/11/07 Python
python使用socket 先读取长度,在读取报文内容示例
2019/09/26 Python
澳大利亚领先的女性运动服品牌:Lorna Jane
2020/06/19 全球购物
客服主管岗位职责
2013/12/13 职场文书
幼儿园中班教师寄语
2014/04/03 职场文书
公证委托书标准格式
2014/09/11 职场文书
机关中层领导干部群众路线教育实践活动个人对照检查材料
2014/09/24 职场文书
高二学年自我鉴定范文(2篇)
2014/09/26 职场文书
丽江古城导游词
2015/02/03 职场文书
会计工作态度自我评价
2015/03/06 职场文书
python如何利用cv2模块读取显示保存图片
2021/06/04 Python
Python pandas读取CSV文件的注意事项(适合新手)
2021/06/20 Python
解决Laravel使用验证时跳转到首页的问题
2021/11/17 PHP
铁头也玩根德 YachtBoy YB-230......
2022/04/05 无线电
Android RecyclerView实现九宫格效果
2022/06/28 Java/Android
js作用域及作用域链工作引擎
2022/07/07 Javascript