Pandas 日期数据处理

📅 Pandas 日期数据处理魔法:让你的分析更高效!🚀


欢迎阅读我们的其他博客文章!🎉这里有一些与 Python 和 Pandas 相关的精彩内容,可以帮助你更深入地了解这些强大的工具:

  1. Python 入门指南:本文为初学者提供了 Python 的基本介绍,包括 Python 的安装、基本语法和常用库等内容,帮助你迅速入门 Python 编程。📚

  2. Python 3.11 新特性:这篇文章向你介绍了 Python 3.11 的新特性和改进,让你了解 Python 的最新发展动态。🆕

  3. Pandas 生成工作日与节假日:本文讲解了如何使用 Pandas 生成工作日和节假日,对于在数据分析过程中处理时间序列数据非常有帮助。📅

  4. Pandas 时间戳与时间差:这篇文章详细介绍了如何使用Pandas 处理时间戳和计算时间差,让你在处理时间相关数据时更加得心应手。⏰

  5. Python 音频处理:本文介绍了 Python 在音频处理方面的应用,包括音频的读取、播放、分析和处理等,为你在音频处理领域提供了宝贵的参考。🎵

希望这些文章能帮助你更好地理解 Python 和 Pandas,从而提高你的编程技能和数据处理能力!💪🚀


🎙️ 前言

在日常工作中,我们会遇到多种日期格式,例如年份开头或是月份开头的 “2022/6/4”、“6/4/2022” 等。🤯 通过 Pandas 的日期数据处理功能,我们可以轻松统一这些不同的日期格式,并进行过滤、分类、分析等操作,让我们的工作更加轻松高效。🥳


一、DataFrame 日期数据转换🔄

转换格式及参数:

pandas.to_datetime(arg, errors='ignore', dayfirst=False, yearfirst=False, utc=None, box=True,
format=None, exact=True, unit=None, infer_datetime_format=False, origin='unix', cache=False)

参数说明

  • arg: 字符串、日期时间、字符串数组
  • errors:忽略错误(igonre),引发异常(raise),设置无效解析为 NaT(coerce)。
  • dayfirst: 默认为 False。如果为 True,解析第一个为天,例如:01/05/2022,解析为 2022-05-01
  • yearfirst: 默认为 False。如果为 True,解析第一个为年,例如:22-05-01,解析为 2022-05-01
  • utc: 默认为 None,返回协调世界时间(UTC)。
  • box: 默认为 True,返回 DatetimeIndex;如果为 False,返回值的 ndarray。
  • format: 格式化显示时间的格式。字符串,默认值为 None。
  • exact: 默认为 False。如果为 True,则要求格式完全匹配;如果为 False,则允许格式与目标字符串中的任意位置匹配。
  • infer_datetime_format: 默认为 False。没有格式时,尝试根据第一个日期推断出格式。
  • origin: 默认为 ‘unix’。定义参考日期。数值将解析为单位数。
  • cache: 默认值为 False。设置为 True 启用缓存加速。

二、使用步骤🚶‍♀️

1.各种日期格式转换示例:

import pandas as pd
pd.set_option('display.unicode.east_asian_width', True) # 设置对齐
df = pd.DataFrame({'原日期': ['01-Mar-22', '05/01/2022', '2022.05.01', '2022/05/01', '20220501']})
df['日期'] = pd.to_datetime(df['原日期'])
print(df)

输出:

在这里插入图片描述

2.将数组组合起来转换为日期数据(示例):

df1 = pd.DataFrame({
'year':[2022, 2021, 2020],
'month': [5, 4, 3],
'day': [6, 7, 8],
'hour': [12, 13, 2],
'minute': [22, 2, 10],
'second': [3, 34, 17]})
df1['组合日期'] = pd.to_datetime(df1)
print(df1)

输出

在这里插入图片描述

3.日期属性访问器对象(dt)🔍

Series.dt() # 返回 dt 对象

dt 对象是 Series 对象中用于获取日期属性的访问器对象,使用它可以获取日期中的年、月、日、星期数和季度等,还可以判断日期是否属于年底。

dt 对象的属性方法:

  • dt.year
  • dt.month
  • dt.day
  • dt.dayofweek
  • dt.dayofyear
  • dt.is_leap_year
  • dt.quarter
  • dt.weekday_name

获取年、月、日,具体代码如下:

df['年'] = df['日期'].dt.year
df['月'] = df['日期'].dt.month
df['日'] = df['日期'].dt.day

获取日期所处的星期数:

df['星期几'] = df['日期'].dt.day_name()

判断日期是否在年底最后一天:

df['是否年底'] = df['日期'].dt.is_year_end

获取日期所属的季度:

df['季度'] = df['日期'].dt.quarter

输出结果:

在这里插入图片描述

4.获取日期区间⏰

当 DataFrame 对象使用日期为索引时,可以输入日期或日期区间获取数据。

设置日期为索引:

df1.set_index(df1['组合日期'], inplace=True)

获取 2021 年的数据

df1.loc['2021']

输出:在这里插入图片描述

获取 2022 年至 2020 年的数据

df1.loc['2022':'2020']

输出: 在这里插入图片描述

获取具体某一天的数据(如 2022 年 5 月 6 日)

df1.loc['2022-5-06':'2022-05-06']

在这里插入图片描述


五、其他常用日期操作🧩

在实际工作中,我们可能还需要进行一些其他常用的日期操作,如计算日期差、日期偏移、日期筛选等。下面是一些实用示例。

1. 计算日期差📆

要计算两个日期之间的差值,可以直接相减:

delta = df1['组合日期'].max() - df1['组合日期'].min()
print(delta)

2. 日期偏移🔀

要在日期上进行加减操作,可以使用 pd.DateOffset 对象。例如,给定一个日期,我们想要找到它之后的 30 天:

from pandas.tseries.offsets import DateOffset

date = pd.to_datetime('2022-05-01')
new_date = date + DateOffset(days=30)
print(new_date)

3. 日期筛选🔍

在处理日期时,我们可能需要根据日期进行筛选。例如,我们想要筛选出 DataFrame 中 2021 年的数据:

mask = (df1['组合日期'] >= '2021-01-01') & (df1['组合日期'] <= '2021-12-31')
filtered_df = df1[mask]
print(filtered_df)

4. 日期分组统计📊

在数据分析过程中,我们可能需要对日期进行分组统计。例如,我们想要按年份统计某个 DataFrame 的数据:

df1['年份'] = df1['组合日期'].dt.year
grouped_df = df1.groupby('年份').count()
print(grouped_df)

这些只是一些常见的日期操作示例。实际上,Pandas 提供了丰富的日期处理工具,可以帮助我们轻松应对各种复杂的日期问题。掌握这些方法,将有助于提高我们在数据分析工作中的效率。🎉

🎓 总结

本文介绍了 Pandas 日期数据处理的使用方法,通过这些功能,我们可以轻松地将不同格式的日期统一,并利用 dt 对象获取日期相关属性和进行日期筛选等操作。Pandas 还提供了许多其他日期处理属性和方法,可以帮助我们更加高效地进行数据统计和分析。希望本文能为你的数据分析工作带来便利!🌟

希望这篇博客文章对你有所帮助!😊
如果你觉得这篇文章有价值,不妨点个赞👍、关注我们的博客🔔、并收藏起来💾。你的支持是我们持续创作的动力!✨
谢谢你的阅读,祝你在编程和数据处理的道路上越走越远,未来充满无限可能!🌈🚀

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄昏中起飞的猫头鹰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值