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 18 Python
Django 跨域请求处理的示例代码
May 02 Python
对命令行模式与python交互模式介绍
May 12 Python
Python实现图片拼接的代码
Jul 02 Python
flask框架实现连接sqlite3数据库的方法分析
Jul 16 Python
Python中修改字符串的四种方法
Nov 02 Python
深入解析python中的实例方法、类方法和静态方法
Mar 11 Python
python实现在cmd窗口显示彩色文字
Jun 24 Python
使用 Python 合并多个格式一致的 Excel 文件(推荐)
Dec 09 Python
Python Django搭建网站流程图解
Jun 13 Python
Python numpy矩阵处理运算工具用法汇总
Jul 13 Python
pyspark对Mysql数据库进行读写的实现
Dec 30 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图片自动裁切应付不同尺寸的显示
2014/10/16 PHP
Mac环境下php操作mysql数据库的方法分享
2015/05/11 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
2016/10/11 PHP
在Laravel中使用DataTables插件的方法
2018/05/29 PHP
javascript事件冒泡详解和捕获、阻止方法
2014/04/12 Javascript
使用原生js写的一个简单slider
2014/04/29 Javascript
IE6浏览器中window.location.href无效的解决方法
2014/11/20 Javascript
使用jQueryMobile实现滑动翻页效果的方法
2015/02/04 Javascript
jquery实现可自动判断位置的弹出层效果代码
2015/10/12 Javascript
详解Vuejs2.0之异步跨域请求
2017/04/20 Javascript
javascript 开发之百度地图使用到的js函数整理
2017/05/19 Javascript
vue根据进入的路由进行原路返回的方法
2018/09/26 Javascript
微信小程序实现slideUp、slideDown滑动效果及点击空白隐藏功能示例
2018/12/11 Javascript
vue element 关闭当前tab 跳转到上一路由操作
2020/07/22 Javascript
vue element实现表格合并行数据
2020/11/30 Vue.js
vue+element table表格实现动态列筛选的示例代码
2021/01/14 Vue.js
js中延迟加载和预加载的具体使用
2021/01/14 Javascript
使用Python判断IP地址合法性的方法实例
2014/03/13 Python
python计算auc指标实例
2017/07/13 Python
让Django的BooleanField支持字符串形式的输入方式
2020/05/20 Python
Python如何对齐字符串
2020/07/30 Python
纯css3实现图片翻牌特效
2015/03/10 HTML / CSS
非常震撼的纯CSS3人物行走动画
2016/02/24 HTML / CSS
YOOX美国官方网站:全球著名的多品牌时尚网络概念店
2016/09/11 全球购物
Armor Lux法国官方网站:水手服装、成衣和内衣
2020/05/26 全球购物
介绍一下write命令
2014/08/10 面试题
采购文员岗位职责
2013/11/20 职场文书
航空学院求职信
2014/06/11 职场文书
美术课外活动总结
2014/07/08 职场文书
我与祖国共奋进演讲稿
2014/09/13 职场文书
2015年党建工作总结
2015/03/30 职场文书
2015年中学体育教师工作总结
2015/10/23 职场文书
2016年校园重阳节广播稿
2015/12/18 职场文书
JavaScript 语句之常用 for 循环详解
2021/03/29 Javascript
Qt自定义Plot实现曲线绘制的详细过程
2021/11/02 Python
Python pyecharts绘制条形图详解
2022/04/02 Python