python(常练思维不痴呆)

Python日期数据处理方法

2020-01-01  本文已影响0人  默直

python分析之日期数据处理方法,如下是数据类型及其描述,帮助我们学习。

类型 描述
%Y 四位的年份
%y 两位的年份
%m 两位的月份
%d 两位的日期号
%H 小时,24小时制00-23
%I 小时,12小时制01-12
%M 两位的分钟00-59
%S 秒00-61,其中60,61是闰秒
%w 星期日期0-6,其中0表示星期日
%U 一年中的星期数00-53。以星期天为每周第一天,一年中第一个星期天前的日期作为第“0”周
%W 一年中的星期数00-53。以星期一为每周第一天,一年中第一个星期一前的日期作为第“0”周
%z 格式为+HHMM或者-HHMM的UTC时区偏移;如果没有时区则为空。
%F %Y-%m-%d的简写
%D %m/%d/%y的简写

#导入相关库
import pandas as pd
import numpy as np
import time
import datetime
import matplotlib.pyplot as plt

# 解决坐标轴刻度负号乱码
plt.rcParams['axes.unicode_minus'] = False

# 解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['Simhei']

1 时间戳Timestamp对象的生成

1.1 pd.Timestamp

pd.Timestamp("2019-12-12")
-->Timestamp('2019-12-12 00:00:00')
pd.Timestamp("2019/12/12")
--->Timestamp('2019-12-12 00:00:00')
pd.Timestamp(2019,12,12)
--->Timestamp('2019-12-12 00:00:00')
 pd.Timestamp(year=2019, month=12, day=12, hour=0,minute=0,second=0)
--->Timestamp('2019-12-12 00:00:00')
图片.png

1.2 pd.to_datetime

pd.to_datetime("2019/12/12",format="%Y/%m/%d")
--->Timestamp('2019-12-12 00:00:00')
pd.to_datetime("2019--12--12",format="%Y--%m--%d")
--->Timestamp('2019-12-12 00:00:00')
pd.to_datetime("2019-*12-*12",format="%Y-*%m-*%d")
--->Timestamp('2019-12-12 00:00:00')
图片.png
a=pd.Series(["2019-*12-*12","2019-*12-*12","2019-*12-*12"])
pd.to_datetime(a,format="%Y-*%m-*%d")
type(pd.to_datetime(a,format="%Y-*%m-*%d"))
--->pandas.core.series.Series
图片.png

1.3 pd.date_range

生成2018年12月21日到现在所有日期,按天来技术。
第一种方法:生成指定日期数量,比如生成365天,从'2019-12-21'开始。

#生成2019年12月21日到现在所有日期,按天来
#第一种方法
#freq,频率,按天(D)来生成
#periods,长度,365个
pd.date_range('2019-12-21',freq='D',periods=365)
图片.png
#freq,频率,按月(m)来生成
#periods,长度,365个
pd.date_range('2019-12-21',freq='m',periods=365)
图片.png
第二种方法:pd.date_range(起始日期,结束日期)
#生成指定某个日期范围内的日期,从2019-12-01到2019-12-21
pd.date_range('2019-12-01','2019-12-21')
图片.png

2 日期数据转化

示例数据:


图片.png

2.1 转化为指定格式 .dt.strftime()

我们发现

data.日期
----------------------------------------------------
0      2017-09-14
1      2017-09-13
          ...    
6541   1990-12-19
Name: 日期, Length: 6542, dtype: datetime64[ns]

转化为%Y/%m/%d格式

data.日期.dt.strftime("%Y/%m/%d")
----------------------------------------------------
0       2017/09/14
1       2017/09/13
2       2017/09/12
        .....
6540    1990/12/20
6541    1990/12/19
Name: 日期, Length: 6542, dtype: object

转化为年月格式

data.日期.dt.strftime("%Y-%d")
----------------------------------------------------
0       2017-09
1       2017-09
2       2017-09
         ...   
6540    1990-12
6541    1990-12
Name: 日期, Length: 6542, dtype: object

另采用.dt.year,这种调用,年份调出来是一个int类型

data.日期.dt.year #把年调出来是一个int类型
----------------------------------------------------
0       2017
1       2017
2       2017
      ...
6540    1990
6541    1990
Name: 日期, Length: 6542, dtype: int64
data.日期.dt.month #把月调出来是一个int类型
----------------------------------------------------
0        9
1        9
2        9
        ..
6540    12
6541    12
Name: 日期, Length: 6542, dtype: int64
data.日期.dt.day #把日调出来是一个int类型
----------------------------------------------------
0       14
1       13
2       12
3       11
      ..
6540    20
6541    19
Name: 日期, Length: 6542, dtype: int64
data.日期.dt.date #把日期调出来,是一个object类型
----------------------------------------------------
0       2017-09-14
1       2017-09-13
2       2017-09-12
3       2017-09-11
          ...
6540   1990-12-20
6541    1990-12-19
Name: 日期, Length: 6542, dtype: object
data.日期.dt.time #把时间调出来,是一个object类型
----------------------------------------------------
0       00:00:00
1       00:00:00
2       00:00:00
          ...
6540    00:00:00
6541    00:00:00
Name: 日期, Length: 6542, dtype: object

注意,上面提取的Series,都是object类型,要转化为datatime类型,还是需要用to_datetime方法。

3 日期索引对象DatetimeIndex

DatetimeIndex 的主要作用是之一是用作 Pandas 对象的索引,使用它作为索引除了拥有普通索引对象的所有基本功能外,还拥有简化频率处理的高级时间序列方法。


图片.png

通过图例,不能看出,index并不是日期,那么想要将日期设置为index,怎么办呢,很简单,使用如下命令即可:

data.index=data.日期
图片.png

3.1 索引和切片

设置日期为索引,那么就能够像索引一样随意的折腾了(具有索引的一般特性)

图片.png

3.2 重采样resample对象

esample 表示根据日期维度进行数据聚合,可以按照分钟、小时、工作日、周、月、年等来作为日期维度,更多的日期维度见 Offset Aliases( http://pandas.pydata.org/pandas-docs/stable/timeseries.html#offset-aliases )。

图片.png
图片.png
图片.png 图片.png
上一篇下一篇

猜你喜欢

热点阅读