一文带你搞懂pandas中的时间处理(详细)

目录

  1、pandas中6个时间相关的类
  2、Timestamp类
    1)查看时间列,是str字符串列,还是时间格式列
    2)使用pd.to_datetime()将字符串,转换为日期格式
    3)Timestamp类只能表示1677年-2262年的时间
    4)Timestamp类常用属性
  3、DatetimeIndex与PeriodIndex函数:类似于to_datetime()函数
  4、Timedelta类
    1)日期前移、后移一天
    2)两个时间做差

1、pandas中6个时间相关的类

   在多数情况下,对时间类型数据进行分析的前提就是将原本为字符串的时间转换为标准时间类型。
  pandas继承了NumPy库和datetime库的时间相关模块,提供了6种时间相关的类。
在这里插入图片描述

2、Timestamp类

  • 其中Timestamp作为时间类中最基础的,也是最为常用的。在多数情况下,时间相关的字符串都会转换成为Timestamp。pandas提供了to_datetime()函数,能够实现这一目标。
  • 值得注意的是,Timestamp类型时间是有限制的。
1)查看时间列,是str字符串列,还是时间格式列
import pandas as pd

df = pd.read_csv(r"E:\电脑视频录制软件\视频下载安装路径\Python数据分析与应用人邮版\data\meal_order_info.csv",
                engine="python",
                encoding="gbk")
df['lock_time'].head()
type(df['lock_time'][0])
pd.to_datetime(df['lock_time']).head()

结果如下:
在这里插入图片描述

2)使用pd.to_datetime()将字符串,转换为日期格式
import pandas as pd

df = pd.read_csv(r"E:\电脑视频录制软件\视频下载安装路径\Python数据分析与应用人邮版\data\meal_order_info.csv",
                engine="python",
                encoding="gbk")
df['lock_time'] = pd.to_datetime(df['lock_time'])
df['lock_time'].head()

结果如下:
在这里插入图片描述

3)Timestamp类只能表示1677年-2262年的时间
pd.Timestamp.min
pd.Timestamp.max

结果如下:
在这里插入图片描述

4)Timestamp类常用属性
  • 在多数涉及时间相关的数据处理,统计分析的过程中,需要提取时间中的年份,月份等数据。使用对应的Timestamp类属性就能够实现这一目的。
  • 结合Python列表推导式,可以实现对DataFrame某一列时间信息数据的提取。

在这里插入图片描述
操作如下:

import pandas as pd

df = pd.read_csv(r"E:\电脑视频录制软件\视频下载安装路径\Python数据分析与应用人邮版\data\meal_order_info.csv",
                engine="python",
                encoding="gbk")
df['lock_time'] = pd.to_datetime(df['lock_time'])
df["年"] = df['lock_time'].apply(lambda x:x.year)
df["年"].head()

结果如下:
在这里插入图片描述

5)利用strftime()方法提取指定格式日期

df[‘lock_time’][0]
df[‘lock_time’][0].strftime("%Y-%m")

结果如下:
在这里插入图片描述

3、DatetimeIndex与PeriodIndex函数:类似于to_datetime()函数

  • 除了将数据字原始DataFrame中直接转换为Timestamp格式外,还可以将数据单独提取出来将其转换为DatetimeIndex或者PeriodIndex。
  • 转换为PeriodIndex的时候需要注意,必须通过freq参数指定时间间隔,常用的时间间隔有Y为年,M为月,D为日,H为小时,T为分钟,S为秒。两个函数可以用来转换数据还可以用来创建时间序列数据,其参数非常类似。
import pandas as pd

df = pd.read_csv(r"E:\电脑视频录制软件\视频下载安装路径\Python数据分析与应用人邮版\data\meal_order_info.csv",
                engine="python",
                encoding="gbk")
df['lock_time'] = pd.DatetimeIndex(df['lock_time'])
df['lock_time'][0]
---------------------------------------------------------------
df = pd.read_csv(r"E:\电脑视频录制软件\视频下载安装路径\Python数据分析与应用人邮版\data\meal_order_info.csv",
                engine="python",
                encoding="gbk")
df['lock_time'] = pd.PeriodIndex(df['lock_time'],freq="S")
df['lock_time'][0]

结果如下:
在这里插入图片描述

4、Timedelta类

  • Timedelta是时间相关的类中的一个异类,不仅能够使用正数,还能够使用负数表示单位时间,例如1秒,2分钟,3小时等。使用Timedelta类,配合常规的时间相关类能够轻松实现时间的算术运算。目前Timedelta函数中时间周期中没有年和月。
    在这里插入图片描述
1)日期前移、后移一天
import pandas as pd

df = pd.read_csv(r"E:\电脑视频录制软件\视频下载安装路径\Python数据分析与应用人邮版\data\meal_order_info.csv",
                engine="python",
                encoding="gbk")
df['lock_time'] = pd.to_datetime(df['lock_time'])
df['lock_time'][0]
# 后移一天
df['lock_time'][0] + pd.Timedelta(days=1)
# 前移一天
df['lock_time'][0] + pd.Timedelta(days=-1)

结果如下:
在这里插入图片描述

2)两个时间做差
  • 使用Timedelta,可以很轻松地实现在某个时间上加减一段时间。除了使用Timedelta实现时间的平移外,还能够直接对两个时间序列进行相减,从而得出一个Timedelta。
df['lock_time'][0]
pd.to_datetime("2020-3-13") - df['lock_time'][0]

a = pd.to_datetime("2020-3-13") - df['lock_time'][0]
a.days

结果如下:
在这里插入图片描述
综上所述:上述的6个方法,只要将str转换为日期格式后,都可以统一使用如下的【Timestamp类的常用属性】,进行提取年、提取月 等操作。
在这里插入图片描述

发布了104 篇原创文章 · 获赞 197 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/weixin_41261833/article/details/104839119