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中操作列表之List.pop()方法的使用
May 21 Python
python简单实现基于SSL的IRC bot实例
Jun 15 Python
Python类属性的延迟计算
Oct 22 Python
python+selenium识别验证码并登录的示例代码
Dec 21 Python
python 实现在Excel末尾增加新行
May 02 Python
Python查看微信撤回消息代码
Jun 07 Python
Python学习小技巧总结
Jun 10 Python
Python实现深度遍历和广度遍历的方法
Jan 22 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
Feb 19 Python
python实现AES加密解密
Mar 28 Python
用Python在Excel里画出蒙娜丽莎的方法示例
Apr 28 Python
使用tkinter实现三子棋游戏
Feb 25 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
模拟flock实现文件锁定
2007/02/14 PHP
五款常用mysql slow log分析工具的比较分析
2011/05/22 PHP
对象失去焦点时自己动提交数据的实现代码
2012/11/06 PHP
PHP FTP操作类代码( 上传、拷贝、移动、删除文件/创建目录)
2014/05/10 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
javascript利用apply和arguments复用方法
2013/11/25 Javascript
form.submit()不能提交表单的原因分析
2014/10/23 Javascript
JS+CSS实现可以凹陷显示选中单元格的方法
2015/03/02 Javascript
轻松学习jQuery插件EasyUI EasyUI创建RSS Feed阅读器
2015/11/30 Javascript
重新理解JavaScript的六种继承方式
2017/03/24 Javascript
详解三种方式解决vue中v-html元素中标签样式
2018/11/22 Javascript
JavaScript函数的4种调用方法实例分析
2019/03/05 Javascript
layui 地区三级联动 form select 渲染的实例
2019/09/27 Javascript
vue如何使用async、await实现同步请求
2019/12/09 Javascript
快速解决element的autofocus失效问题
2020/09/08 Javascript
详解JavaScript 高阶函数
2020/09/14 Javascript
Vue实现多页签组件
2021/01/14 Vue.js
[00:06]Yes,it worked!小卡尔成功穿越时空加入战场!
2019/07/20 DOTA
Python3实现的腾讯微博自动发帖小工具
2013/11/11 Python
python图像处理之镜像实现方法
2015/05/30 Python
python 添加用户设置密码并发邮件给root用户
2016/07/25 Python
Tesserocr库的正确安装方式
2018/10/19 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
2020/01/20 Python
Python基于mediainfo批量重命名图片文件
2020/12/29 Python
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
阿根廷旅游网站:almundo阿根廷
2018/02/12 全球购物
Yahoo-PHP面试题2
2014/12/06 面试题
在浏览器端如何得到服务器端响应的XML数据
2012/11/24 面试题
如何进行有效的自我评价
2013/09/27 职场文书
项目经理任命书范本
2014/06/05 职场文书
导游词之清晏园
2019/11/22 职场文书
Win11电脑显示本地时间与服务器时间不一致怎么解决?
2022/04/05 数码科技
vue中this.$http.post()跨域和请求参数丢失的解决
2022/04/08 Vue.js
Python进程间的通信之语法学习
2022/04/11 Python
Beekeeper Studio开源数据库管理工具比Navicat更炫酷
2022/06/21 数据库
JavaScript架构localStorage特殊场景下二次封装操作
2022/06/21 Javascript