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 29 Python
python海龟绘图实例教程
Jul 24 Python
微信跳一跳自动运行python脚本
Jan 08 Python
Python弹出输入框并获取输入值的实例
Jun 18 Python
Python学习笔记之错误和异常及访问错误消息详解
Aug 08 Python
python基于三阶贝塞尔曲线的数据平滑算法
Dec 27 Python
Python中zip()函数的解释和可视化(实例详解)
Feb 16 Python
基于Numba提高python运行效率过程解析
Mar 02 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
Jul 13 Python
Python 数据分析之逐块读取文本的实现
Dec 14 Python
Python如何使用神经网络进行简单文本分类
Feb 25 Python
Jupyter notebook 输出部分显示不全的解决方案
Apr 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
调频问题解答
2021/03/01 无线电
php设计模式 Prototype (原型模式)代码
2011/06/26 PHP
PHP测试程序运行时间的类
2012/02/05 PHP
php结合ACCESS的跨库查询功能
2015/06/12 PHP
PHP xpath()函数讲解
2019/02/11 PHP
事件模型在各浏览器中存在差异
2010/10/20 Javascript
JQueryEasyUI datagrid框架的基本使用
2013/04/08 Javascript
javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)
2013/12/17 Javascript
javaScript中的this示例学习详解及工作原理
2014/01/13 Javascript
JavaScript中实现依赖注入的思路分享
2015/01/15 Javascript
jquery滚动加载数据的方法
2015/03/09 Javascript
JavaScript简单下拉菜单实例代码
2015/09/07 Javascript
jquery动态创建div与input的实例代码
2016/10/12 Javascript
纯JS实现简单的日历
2017/06/26 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
2017/11/15 Javascript
详解VUE 对element-ui中的ElTableColumn扩展
2018/03/28 Javascript
详解各版本React路由的跳转的方法
2018/05/10 Javascript
d3.js实现图形缩放平移
2019/12/19 Javascript
python 数据加密代码
2008/12/24 Python
python使用Berkeley DB数据库实例
2014/09/26 Python
举例详解Python中循环语句的嵌套使用
2015/05/14 Python
Python3中类、模块、错误与异常、文件的简易教程
2017/11/20 Python
Python3中条件控制、循环与函数的简易教程
2017/11/21 Python
100行python代码实现跳一跳辅助程序
2018/01/15 Python
对Python3.6 IDLE常用快捷键介绍
2018/07/16 Python
Django migrations 默认目录修改的方法教程
2018/09/28 Python
Python Opencv提取图片中某种颜色组成的图形的方法
2019/09/19 Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
2020/04/22 Python
CSS3系列教程:背景图片(背景大小和多背景图) 应用说明
2012/12/19 HTML / CSS
html5 桌面提醒:Notifycations应用介绍
2012/11/27 HTML / CSS
麦德龙官方海外旗舰店:德国麦德龙超市
2017/12/23 全球购物
军校制空专业毕业生自我鉴定
2013/11/16 职场文书
大学毕业寄语大全
2014/04/10 职场文书
环保倡议书范文
2014/05/12 职场文书
入党介绍人意见2015
2015/06/01 职场文书
Django Paginator分页器的使用示例
2021/06/23 Python