pandas 对日期类型数据的处理方法详解
作者:Stone0823 发布时间:2021-12-02 04:43:56
标签:pandas,日期,类型,数据,处理
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()
也可以在 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'))
第二种方法:
df1['period'] = df1['date'].dt.to_period('M')
第二种方法使用起来更加简单,参数 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()
再做一个按季度统计的数据透视表:
df1['quarter'] = df1['date'].dt.to_period('Q')
quarter_pivot = pd.pivot_table(df1, index=['sku'], columns=['quarter'], values=['ext price'], aggfunc=np.sum)
参考
Time Series / Date functionality
Extracting just Month and Year from Pandas Datetime column
来源:https://www.jianshu.com/p/0b8dcbc2df33
0
投稿
猜你喜欢
- SqlServer将数据库中的表复制到另一个数据库一、如果两个数据库在同一台服务器上1、复制表结构和数据(A->B):SELECT *
- 以豆瓣为例,访问https://www.douban.com/contacts/list 来查看自己关注的人,要登录才能查看。如果用requ
- 上次用Javascript+ASP实现了无刷新的新闻列表,最后还有一个小问题没有解决:下边的分页数列"首页、上10页、下10页、尾
- 本月第一天日期SELECT FirstDayOfCurrentMonth = dateadd(mm,datediff(mm,0,getdat
- 项目地址:https://github.com/cgDeepLearn/BilibiliCrawler 项目特点采取了一定的反反爬
- 前言去年在做golangserver的时候,内部比较头疼的就是在线服务发布的时候,大量用户的请求在发布时候会被重连,在那时候也想了n多的方法
- 1、python多进程编程背景python中的多进程最大的好处就是充分利用多核cpu的资源,不像python中的多线程,受制于GIL的限制,
- 流动网页设计有很多好处,但也只有在正确使用的时候。合适的技巧会使页面在大屏幕、小屏幕抑、PDA小屏幕上都能得到良好的呈现。但是,糟糕的代码结
- 表结构很简单CREATE TABLE `oplogs` (`id` int(10) unsigned NOT NULL AUTO_INCRE
- keras训练fit( self, x, y, batch_size=32, nb_epoch=10, verbose=1, c
- 一、前言假设现在有一个应用场景,需要对文件系统进行监控,发生变化时产生日志,对新增的文件做一些相应的操作。比如说应用到我们之前的音乐高潮提取
- 在使用Go语言进行开发的时候,有的时候可能要发送get或者post请求,下面我对post和get请求做一下简单的介绍:关于 HTTP 协议H
- 前言:MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。官网给出
- 需求分析“员工刷脸考勤”系统,采用Python语言开发,可以通过摄像头添加员工面部信息,这里就涉及到两个具体的个问题,一个是应该以什么样的数
- 示例代码如下:#!/usr/bin/python#-*- coding: utf-8 -*-import matplotlib.pyplot
- Crossday Discuz! Board(简称 Discuz!)是北京康盛新创科技有限责任公司推出的一套通用的社区论坛软件系统。自200
- 一句话概括:数据劫持(Object.defineProperty)+发布订阅模式双向数据绑定有三大核心模块(dep 、observer、wa
- python中在实现一元线性回归时会使用最小二乘法,那你知道最小二乘法是什么吗。其实最小二乘法为分类回归算法的基础,从求解线性透视图中的消失
- 1,模块命名(1)模块推荐使用小写命名,(2)除非有很多字母,尽量不要用下划线因为很多模块文件存与模块名称一致的类,模块采用小写,类采用首字
- 装饰器对与Python新手以至于熟悉Python的人都是一个难理解, 难写的东西. 那么今天就分享一下我对Python 装饰器的理解所谓装饰