【pandas基础】--日期处理

这篇具有很好参考价值的文章主要介绍了【pandas基础】--日期处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

时间序列数据是数据分析中一类常见且重要的数据。
它们按照时间顺序记录,通常是从某些现象的观察中收集的,比如经济指标、气象数据、股票价格、销售数据等等。

时间序列数据的特点是有规律地随着时间变化而变化,它们的变化趋势可以被分析和预测。时间序列分析是一种用于预测未来值或评估过去值的统计方法,常常被用于预测未来趋势、季节性变化、周期性变化、随机波动等。

1. 日期类型

原始数据中,日期一般会存储为各种类型字符串,比如:

  • 2022/5/1
  • 2022-05-02
  • 3/5/2022

将其统一转换为pandas的日期类型,后续统计分析时,不仅方便计算,还可以有效避免应对各种格式带来的麻烦。

1.1 转换为日期类型

pandasto_datetime函数对于数据集中各类日期字符串都能有效的转换。

df = pd.DataFrame(
    {
        "日期": ["2022/5/1", "2022-05-02", "3/5/2022"],
        "城市": ["合肥", "合肥", "合肥"],
        "平均气温": [28, 31, 27],
    },
)

print(df)
print(df.dtypes)

【pandas基础】--日期处理【pandas基础】--日期处理

可以看出,默认的日期是字符串类型且格式混乱。
转换后:

df["日期"] = pd.to_datetime(df["日期"])
print(df)
print(df.dtypes)

【pandas基础】--日期处理【pandas基础】--日期处理
日期显示起来格式统一了,类型也变为了datetime64[ns]

1.2 生成日期序列

除了将数据集读取来的日期字符串转换为日期类型,我们也可以生成日期序列,这些生成的日期序列可以作为的数据索引,也可以用来补充数据集中缺失的日期值。

df = pd.DataFrame()
df["年"] = pd.date_range('2020-01-01', periods=3, freq='Y')
df["月"] = pd.date_range('2020-01-01', periods=3, freq='M')
df["日"] = pd.date_range('2020-01-01', periods=3, freq='D')
df["周"] = pd.date_range('2020-01-01', periods=3, freq='W')
df["季度"] = pd.date_range('2020-01-01', periods=3, freq='Q')
df

【pandas基础】--日期处理
上面的示例分别以季度为间隔,生成3条连续的时间序列。

1.3 修改日期

修改日期的值,也是利用日期类型自带的方法,不用像修改字符串那样修改,那样极易出错。

df = pd.DataFrame()
d = pd.date_range('2020-01-01', periods=3, freq='D')
df["原始日期"] = d
df["延迟三天"] = d.shift(3, freq="D")
df["提前三天"] = d.shift(-3, freq="D")
df

【pandas基础】--日期处理
这里是按调整的,如果要按照季度等调整,像上一个例子那样设置freq参数即可。

2. 日期属性

将数据转换为pandas日期类型的最大好处就是可以使用日期类型特有的属性,方便进行各个维度的分析。

常用的日期维度是年,月,日,周,季度。

2.1 年

利用日期属性按年份统计合计值:

df = pd.DataFrame(
    {
        "日期": ["2020/5/1", "2021/5/1", "2021/6/3", "2022/9/4"],
        "平均气温": [28, 31, 27, 33],
    },
)

df["日期"] = pd.to_datetime(df["日期"])
df["年"] = df["日期"].dt.year
print(df)
print(df.groupby(df["年"]).sum())

【pandas基础】--日期处理
两个2021年的数据统计了合计值。

2.2 月

按月统计合计值:

df = pd.DataFrame(
    {
        "日期": ["2020/5/1", "2021/5/1", "2021/6/3", "2022/9/4"],
        "平均气温": [28, 31, 27, 33],
    },
)

df["日期"] = pd.to_datetime(df["日期"])
df["月"] = df["日期"].dt.month
print(df)
print(df.groupby(df["月"]).sum())

【pandas基础】--日期处理
两个5月份的数据统计了合计值。

2.3 日

按日统计合计值:

df = pd.DataFrame(
    {
        "日期": ["2020/5/1", "2021/5/1", "2021/6/3", "2022/9/4"],
        "平均气温": [28, 31, 27, 33],
    },
)

df["日期"] = pd.to_datetime(df["日期"])
df["日"] = df["日期"].dt.day
print(df)
print(df.groupby(df["日"]).sum())

【pandas基础】--日期处理
两个1号的数据统计了合计值。

2.4 周

按周统计合计值:

df = pd.DataFrame(
    {
        "日期": ["2021/5/1", "2021/5/31", "2021/6/3", "2021/9/4"],
        "平均气温": [28, 31, 27, 33],
    },
)

df["日期"] = pd.to_datetime(df["日期"])
df["周"] = df["日期"].dt.isocalendar().week
print(df)
print(df.groupby(df["周"]).sum())

【pandas基础】--日期处理
上面两个日期同属于第22周,所以计算了合计值。
获取周属性与前面略有不同,不是直接获取week,而是用isocalendar().week

2.5 季度

按季度统计合计值:

df = pd.DataFrame(
    {
        "日期": ["2021/5/1", "2021/5/31", "2021/6/3", "2021/9/4"],
        "平均气温": [28, 31, 27, 33],
    },
)

df["日期"] = pd.to_datetime(df["日期"])
df["季度"] = df["日期"].dt.quarter
print(df)
print(df.groupby(df["季度"]).sum())

【pandas基础】--日期处理
上面3个日期都是第二季度,所以计算了合计值。

3. 总结回顾

本篇特意将pandas中的日期类型单独介绍,
一方面是因为日期类型与其他类型相比,多出了很多特有的属性;
另一方面,时间序列数据和回归分析中也会大量用到日期类型。

这里介绍了日期类型的转换方法和常用属性,但日期类型不仅仅限于这些属性,其他的属性可以参考pandas的官方文档:Index objects — pandas 2.0.1 documentation文章来源地址https://www.toymoban.com/news/detail-468442.html

到了这里,关于【pandas基础】--日期处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 时间序列数据预处理

    时间序列数据是指按照时间顺序排列的一系列数据点或观测值,通常用于描述某个变量随时间的变化情况。例如,股价、气温、人口数量等都可以被视为时间序列数据。时间序列数据的预处理是进行时间序列分析的重要步骤。常见的时间序列预处理步骤包括: 构建时间序列数

    2024年02月09日
    浏览(66)
  • 【数据挖掘】时间序列模型处理指南(二)

            本文是一个系列文章的第二部分,本文将用股票数据进行时间序列分析为例,对时间分析的方法、过程,进行详细阐述。         在文章第一部分种:【数据挖掘】时间序列模型处理(一)_无水先生的博客-CSDN博客         我们将使用新德国基金(GF)的历

    2024年02月12日
    浏览(27)
  • Flink的流式数据处理与时间序列分析

    Apache Flink 是一个流处理框架,用于实时数据处理和分析。它支持大规模数据流处理,具有高吞吐量和低延迟。Flink 可以处理各种数据源和数据接收器,如 Kafka、HDFS、TCP 流等。 时间序列分析是一种用于分析时间序列数据的方法,用于发现数据中的趋势、季节性和随机性。时间

    2024年02月21日
    浏览(37)
  • 【深度学习时间序列预测案例】零基础入门经典深度学习时间序列预测项目实战(附代码+数据集+原理介绍)

    🚨注意🚨 :最近经粉丝反馈,发现有些订阅者将此专栏内容进行二次售卖,特在此声明,本专栏内容仅供学习,不得以任何方式进行售卖,未经作者许可不得对本专栏内容行使发表权、署名权、修改权、发行权、转卖权、信息网络传播权,如有违者,追究其法律责任。 👑

    2023年04月15日
    浏览(44)
  • Python【Matplotlib】交互式时间序列绘图,将x轴设置为日期时间格式并和鼠标拖动缩放相结合

    上篇博客:python【matplotlib】鼠标拖动滚动缩放坐标范围和拖动图例共存,得到启发,我们已经可以通过鼠标拖动缩放坐标范围和移动图例,来实现动态交互式绘图了,对于x轴是时间序列的绘图需求,能否也实现动态交互式绘图呢? 答案是肯定的,接下来我将详细描述其实现

    2024年03月13日
    浏览(46)
  • 时间序列分析——基于R | 第2章 时间序列的预处理习题代码

    1.1判断该序列是否平稳 1.2样本自相关系数 1.3序列自相关图 2.1绘制时序图,判断平稳性 从时序图中可以看出,该序列存在较明显的季节性,同时也存在一定的趋势性。 2.2计算样本自相关系数 2.3绘制自相关图 从自相关图中可以看出,该序列存在较强的季节性和自相关性,不具

    2023年04月18日
    浏览(211)
  • 时间序列信号处理(一)-----变分模态分解(VMD)

    1.简述变分模态分解 变分模态分解--vmd,适用于非线性时间序列信号,主要是利用求解变分问题的思想去对信号进行提取,在不丢失原始信号特征的情况下,把一个原始信号分解成多个不同中心频率的信号,即不在同一个调制信号内。 2.以轴承信号为例 安装vmd库,直接pip in

    2024年02月16日
    浏览(24)
  • SNAP + StaMPS 处理Sentinel-1哨兵1 时间序列

    0.1 前往GitHub下载snap2stamps: Github snap2stamps 0.2 新建工作路径,用来进行数据处理,并将下载的snap2stamps解压到该文件夹下,并新建两个文件夹,master和slaves,准备分别用来存放预处理的主影像和所有其它辅影像。e.g., 我的工作路径为…/IW3Burst69。 1.1 前往ESA官网或者ASF网站下载哨

    2024年02月02日
    浏览(25)
  • 52_Pandas处理日期和时间列(字符串转换、日期提取等)

    将解释如何操作表示 pandas.DataFrame 的日期和时间(日期和时间)的列。字符串与 datetime64[ns] 类型的相互转换,将日期和时间提取为数字的方法等。 以下内容进行说明。 如何将 datetime64[ns] 类型指定为索引并将其处理为时序数据以及如何使用,请参考以下文章。 26_Pandas.DataFr

    2024年01月22日
    浏览(38)
  • python使用ARIMA进行时间序列的预测(基础教程)

    时间序列就是以时间为索引的数据,比如下面这种形式 数据链接:https://pan.baidu.com/s/1KHmCbk9ygIeRHn97oeZVMg 提取码:s0k5 python使用ARIMA建模,主要是使用statsmodels库 首先是建模流程,如果不是太明白不用担心,下面会详细的介绍这些过程 首先要注意一点,ARIMA适用于 短期 单变量

    2024年01月17日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包