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实现逆波兰计算表达式实例详解
May 06 Python
基于Python的文件类型和字符串详解
Dec 21 Python
django连接mysql配置方法总结(推荐)
Aug 18 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
Sep 17 Python
Python的argparse库使用详解
Oct 09 Python
python实现批量视频分帧、保存视频帧
May 31 Python
python爬虫模拟浏览器的两种方法实例分析
Dec 09 Python
kafka监控获取指定topic的消息总量示例
Dec 23 Python
Python requests获取网页常用方法解析
Feb 20 Python
django执行数据库查询之后实现返回的结果集转json
Mar 31 Python
Python requests模块cookie实例解析
Apr 14 Python
Python-OpenCV教程之图像的位运算详解
Jun 21 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执行linux系统命令的常用函数使用说明
2010/04/27 PHP
作为PHP程序员应该了解MongoDB的五件事
2013/06/03 PHP
简单的php中文转拼音的实现代码
2014/02/11 PHP
PHP获取MySql新增记录ID值的3种方法
2014/06/24 PHP
PHP里的单例类写法实例
2015/06/25 PHP
PHP的PDO常用类库实例分析
2016/04/07 PHP
php实现微信支付之退款功能
2018/05/30 PHP
JavaScript 反科里化 this [译]
2012/09/20 Javascript
编程语言JavaScript简介
2014/10/16 Javascript
node.js中的path.delimiter方法使用说明
2014/12/09 Javascript
jQuery实现跟随鼠标运动图层效果的方法
2015/02/02 Javascript
js识别uc浏览器的代码
2015/11/06 Javascript
jQuery短信验证倒计时功能实现方法详解
2016/05/25 Javascript
分享一个插件实现水珠自动下落效果
2016/06/01 Javascript
详解微信小程序开发之城市选择器 城市切换
2017/01/17 Javascript
关于javascript作用域的常见面试题分享
2017/06/18 Javascript
详解ES6中的代理模式——Proxy
2018/01/08 Javascript
JS复杂判断的更优雅写法代码详解
2018/11/07 Javascript
Laravel admin实现消息提醒、播放音频功能
2019/07/10 Javascript
python使用fileinput模块实现逐行读取文件的方法
2015/04/29 Python
Python入门_浅谈数据结构的4种基本类型
2017/05/16 Python
Python实现简单过滤文本段的方法
2017/05/24 Python
Python使用matplotlib实现基础绘图功能示例
2018/07/03 Python
对Python中Iterator和Iterable的区别详解
2018/10/18 Python
pygame游戏之旅 如何制作游戏障碍
2018/11/20 Python
python调用外部程序的实操步骤
2019/03/04 Python
Python 脚本的三种执行方式小结
2019/12/21 Python
Python无损压缩图片的示例代码
2020/08/06 Python
Pycharm Plugins加载失败问题解决方案
2020/11/28 Python
运动会广播稿200字
2014/01/15 职场文书
车辆工程专业求职信
2014/04/28 职场文书
企业法人代表证明书
2015/06/18 职场文书
幼儿园大班开学寄语(2016秋季)
2015/12/03 职场文书
golang特有程序结构入门教程
2021/06/02 Python
MySQL中CURRENT_TIMESTAMP的使用方式
2021/11/27 MySQL
深入解析Apache Hudi内核文件标记机制
2022/03/31 Servers