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函数式编程指南(二):从函数开始
Jun 24 Python
浅析Python基础-流程控制
Mar 18 Python
分享几道你可能遇到的python面试题
Jul 24 Python
Python多层装饰器用法实例分析
Feb 09 Python
Python实现的连接mssql数据库操作示例
Aug 17 Python
python梯度下降法的简单示例
Aug 31 Python
3分钟学会一个Python小技巧
Nov 23 Python
python如何读取bin文件并下发串口
Jul 05 Python
使用Keras预训练模型ResNet50进行图像分类方式
May 23 Python
详解Python中string模块除去Str还剩下什么
Nov 30 Python
Python 实现RSA加解密文本文件
Dec 30 Python
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
Jun 29 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
一台收音机,让一家人都笑逐颜开!
2020/08/21 无线电
用PHP和ACCESS写聊天室(十)
2006/10/09 PHP
PHP生成带有雪花背景的验证码
2008/09/28 PHP
php合并数组array_merge函数运算符加号与的区别
2008/10/31 PHP
浅析PHP绘图技术
2013/07/03 PHP
phpStudy配置多站点多域名和多端口的方法
2017/09/01 PHP
js 禁用浏览器的后退功能的简单方法
2008/12/10 Javascript
jquery tools 系列 scrollable(2)
2009/09/06 Javascript
写出更好的JavaScript程序之undefined篇(中)
2009/11/23 Javascript
js监听表单value的修改同步问题,跨浏览器支持
2009/12/31 Javascript
JavaScript OOP面向对象介绍
2010/12/02 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
2013/06/04 Javascript
jquery提交form表单时禁止重复提交的方法
2014/02/13 Javascript
json属性名为什么要双引号(个人猜测)
2014/07/31 Javascript
jQuery实现流动虚线框的方法
2015/01/29 Javascript
jQuery修改class属性和CSS样式整理
2015/01/30 Javascript
JavaScript实现的MD5算法完整实例
2016/02/02 Javascript
原生js实现可拖拽效果
2017/02/28 Javascript
AngularJS自定义指令详解(有分页插件代码)
2017/06/12 Javascript
Bootstrap弹出框之自定义悬停框标题、内容和样式示例代码
2017/07/11 Javascript
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
2017/08/01 jQuery
javascript设计模式 ? 组合模式原理与应用实例分析
2020/04/14 Javascript
跟老齐学Python之编写类之二方法
2014/10/11 Python
Python logging模块用法示例
2018/08/28 Python
python之线程通过信号pyqtSignal刷新ui的方法
2019/01/11 Python
python查询文件夹下excel的sheet名代码实例
2019/04/02 Python
python 判断文件还是文件夹的简单实例
2019/06/10 Python
Python中的正则表达式与JSON数据交换格式
2019/07/03 Python
Python 获取指定文件夹下的目录和文件的实现
2019/08/30 Python
用python对excel进行操作(读,写,修改)
2020/12/25 Python
Python制作运行进度条的实现效果(代码运行不无聊)
2021/02/24 Python
HTML5中input输入框默认提示文字向左向右移动的示例代码
2020/09/10 HTML / CSS
建筑投标担保书
2014/05/20 职场文书
教学工作总结范文5篇
2019/08/19 职场文书
IDEA 链接Mysql数据库并执行查询操作的完整代码
2021/05/20 MySQL
详解Oracle块修改跟踪功能
2021/11/07 Oracle