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编写vim插件的简单示例
Apr 17 Python
Python2.x版本中cmp()方法的使用教程
May 14 Python
python友情链接检查方法
Jul 08 Python
Python进行数据提取的方法总结
Aug 22 Python
详解python中的文件与目录操作
Jul 11 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
Dec 12 Python
python 根据时间来生成唯一的字符串方法
Jan 14 Python
Python第三方库face_recognition在windows上的安装过程
May 03 Python
pandas.DataFrame的pivot()和unstack()实现行转列
Jul 06 Python
python使用nibabel和sitk读取保存nii.gz文件实例
Jul 01 Python
Python内置函数property()如何使用
Sep 01 Python
python实现在列表中查找某个元素的下标示例
Nov 16 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
windows环境下php配置memcache的具体操作步骤
2013/06/09 PHP
php投票系统之增加与删除投票(管理员篇)
2016/07/01 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
2020/10/30 PHP
重载toString实现JS HashMap分析
2011/03/13 Javascript
javascript判断office版本示例
2014/04/11 Javascript
JQuery each()嵌套使用小结
2014/04/18 Javascript
jQuery插件Validate实现自定义表单验证
2016/01/18 Javascript
AngularJS 2.0新特性有哪些
2016/02/18 Javascript
Vue.js每天必学之组件与组件间的通信
2016/09/08 Javascript
js获取指定字符前/后的字符串简单实例
2016/10/27 Javascript
详解vue2.0+axios+mock+axios-mock+adapter实现登陆
2018/07/19 Javascript
Vuejs监听vuex中值的变化的方法示例
2018/12/02 Javascript
Vue实现table上下移动功能示例
2019/02/21 Javascript
搭建Vue从Vue-cli到router路由护卫的实现
2019/11/14 Javascript
Vue export import 导入导出的多种方式与区别介绍
2020/02/12 Javascript
Vue 中如何将函数作为 props 传递给组件的实现代码
2020/05/12 Javascript
node运行js获得输出的三种方式示例详解
2020/07/02 Javascript
python安装numpy&安装matplotlib& scipy的教程
2017/11/02 Python
Python虚拟环境项目实例
2017/11/20 Python
Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
2018/02/13 Python
pandas获取groupby分组里最大值所在的行方法
2018/04/20 Python
python logging重复记录日志问题的解决方法
2018/07/12 Python
python删除列表元素的三种方法(remove,pop,del)
2019/07/22 Python
python3.x提取中文的正则表达式示例代码
2019/07/23 Python
python打印n位数“水仙花数”(实例代码)
2019/12/25 Python
python默认参数调用方法解析
2020/02/09 Python
tensorflow 实现自定义梯度反向传播代码
2020/02/10 Python
基于DOM+CSS3实现OrgChart组织结构图插件
2016/03/02 HTML / CSS
Ruby如何定义一个类
2012/10/08 面试题
我爱读书演讲稿
2014/05/07 职场文书
公司委托书范本5篇
2014/09/20 职场文书
开除通知书范本
2015/04/25 职场文书
敬老院义诊活动总结
2015/05/07 职场文书
使用python绘制横竖条形图
2022/04/21 Python
JavaScript中10个Reduce常用场景技巧
2022/06/21 Javascript
win10如何开启ahci模式?win10开启ahci模式详细操作教程
2022/07/23 数码科技