数据分析-Pandas如何轻松处理时间序列数据

这篇具有很好参考价值的文章主要介绍了数据分析-Pandas如何轻松处理时间序列数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Pandas-如何轻松处理时间序列数据

时间序列数据在数据分析建模中很常见,例如天气预报,空气状态监测,股票交易等金融场景。此处选择巴黎、伦敦欧洲城市空气质量监测 N O 2 NO_2 NO2数据作为样例。

python数据分析-数据表读写到pandas

经典算法-遗传算法的python实现

经典算法-遗传算法的一个简单例子

大模型查询工具助手之股票免费查询接口

Falcon构建轻量级的REST API服务

决策引擎-利用Drools实现简单防火墙策略

Python技巧-终端屏幕打印光标和文字控制

监测的时间序列数据

比如,air quality no2 数据表中,主要是巴黎,伦敦等城市的每小时环境监测数据:

In [2]: air_quality.head()
Out[2]: 
    city country                   datetime location parameter  value   unit
0  Paris      FR  2019-06-21 00:00:00+00:00  FR04014       no2   20.0  µg/1  Paris      FR  2019-06-20 23:00:00+00:00  FR04014       no2   21.8  µg/2  Paris      FR  2019-06-20 22:00:00+00:00  FR04014       no2   26.5  µg/3  Paris      FR  2019-06-20 21:00:00+00:00  FR04014       no2   24.9  µg/4  Paris      FR  2019-06-20 20:00:00+00:00  FR04014       no2   21.4  µg/m³

In [3]: air_quality.city.unique()
Out[3]: array(['Paris', 'Antwerpen', 'London'], dtype=object)

转换为日期时间对象

默认读取的日期数据,实际上是字符串string 类型,无法进行日期时间的操作,可以转换为datetime数据对象类型,可以用to_datetime() 函数这样操作:

In [5]: air_quality["datetime"] = pd.to_datetime(air_quality["datetime"])

In [6]: air_quality["datetime"]
Out[6]: 
0      2019-06-21 00:00:00+00:00
1      2019-06-20 23:00:00+00:00
2      2019-06-20 22:00:00+00:00
3      2019-06-20 21:00:00+00:00
4      2019-06-20 20:00:00+00:00
                  ...           
2063   2019-05-07 06:00:00+00:00
2064   2019-05-07 04:00:00+00:00
2065   2019-05-07 03:00:00+00:00
2066   2019-05-07 02:00:00+00:00
2067   2019-05-07 01:00:00+00:00
Name: datetime, Length: 2068, dtype: datetime64[ns, UTC]

当然,也可以在pandas.read_csv(), 和 pandas.read_json()函数中,直接就解析转换为datetime类型,parse_dates 参数

pd.read_csv("../data/air_quality_no2_long.csv", parse_dates=["datetime"])

时间操作的典型问题

如何找到序列中的时间开始和时间结束?

In [7]: air_quality["datetime"].min(), air_quality["datetime"].max()
Out[7]: 
(Timestamp('2019-05-07 01:00:00+0000', tz='UTC'),
 Timestamp('2019-06-21 00:00:00+0000', tz='UTC'))

通过min()函数,找到时间最小值,也就是开始时间;max()函数,找到时间序列最大值,也就是结束时间。

如何比较两个时间点?如何计算时间跨度,或者持续时间?

In [8]: air_quality["datetime"].max() - air_quality["datetime"].min()
Out[8]: Timedelta('44 days 23:00:00')

pandas.Timestamp 可以直接计算差值,结果为pandas.Timedelta 类型,类似于python库的时间跨度,datetime.timedelta

如何仅关注某个时间单位?

比如年,月,日,比如增加一列,表示月份?

In [11]: air_quality["month"] = air_quality["datetime"].dt.month

In [12]: air_quality.head()
Out[12]: 
    city country                  datetime  ... value   unit  month
0  Paris      FR 2019-06-21 00:00:00+00:00  ...  20.0  µg/6
1  Paris      FR 2019-06-20 23:00:00+00:00  ...  21.8  µg/6
2  Paris      FR 2019-06-20 22:00:00+00:00  ...  26.5  µg/6
3  Paris      FR 2019-06-20 21:00:00+00:00  ...  24.9  µg/6
4  Paris      FR 2019-06-20 20:00:00+00:00  ...  21.4  µg/6

[5 rows x 8 columns]

使用timestamp的 dt.month属性,提取月份数值。类似的,也可以提取年,日,季节等等时间属性。

如何计算每周,每个城市的No2浓度平均值?

In [13]: air_quality.groupby(
   ....:     [air_quality["datetime"].dt.weekday, "location"])["value"].mean()
   ....: 
Out[13]: 
datetime  location          
0         BETR801               27.875000
          FR04014               24.856250
          London Westminster    23.969697
1         BETR801               22.214286
          FR04014               30.999359
                                  ...    
5         FR04014               25.266154
          London Westminster    24.977612
6         BETR801               21.896552
          FR04014               23.274306
          London Westminster    24.859155
Name: value, Length: 21, dtype: float64

使用groupby函数,按照周为时间单位,按城市分组然后合并归集,计算组内均值。

如何把时间Datetime作为索引?

In [18]: no_2 = air_quality.pivot(index="datetime", columns="location", values="value")

In [19]: no_2.head()
Out[19]: 
location                   BETR801  FR04014  London Westminster
datetime                                                       
2019-05-07 01:00:00+00:00     50.5     25.0                23.0
2019-05-07 02:00:00+00:00     45.0     27.7                19.0
2019-05-07 03:00:00+00:00      NaN     50.4                19.0
2019-05-07 04:00:00+00:00      NaN     61.9                16.0
2019-05-07 05:00:00+00:00      NaN     72.4                 NaN

pivot()函数,指定索引 index,列属性columns和数值values,生成二维表。

另外,也可以通过set_index函数。

如何更新频度的重采样?

比如,把当前每小时的采样频度,更新为每个月,取最大值作为采样值。

In [22]: monthly_max = no_2.resample("M").max()

In [23]: monthly_max
Out[23]: 
location                   BETR801  FR04014  London Westminster
datetime                                                       
2019-05-31 00:00:00+00:00     74.5     97.0                97.0
2019-06-30 00:00:00+00:00     52.5     84.7                52.0

resample()函数,类似于groupby分组聚合函数。

以上代码只是一个简单示例,示例代码中的表达式可以根据实际问题进行修改。

觉得有用 收藏 收藏 收藏

点个赞 点个赞 点个赞

End


GPT专栏文章:

GPT实战系列-ChatGLM3本地部署CUDA11+1080Ti+显卡24G实战方案

GPT实战系列-LangChain + ChatGLM3构建天气查询助手

大模型查询工具助手之股票免费查询接口

GPT实战系列-简单聊聊LangChain

GPT实战系列-大模型为我所用之借用ChatGLM3构建查询助手

GPT实战系列-P-Tuning本地化训练ChatGLM2等LLM模型,到底做了什么?(二)

GPT实战系列-P-Tuning本地化训练ChatGLM2等LLM模型,到底做了什么?(一)

GPT实战系列-ChatGLM2模型的微调训练参数解读

GPT实战系列-如何用自己数据微调ChatGLM2模型训练

GPT实战系列-ChatGLM2部署Ubuntu+Cuda11+显存24G实战方案

GPT实战系列-Baichuan2本地化部署实战方案

GPT实战系列-Baichuan2等大模型的计算精度与量化

GPT实战系列-GPT训练的Pretraining,SFT,Reward Modeling,RLHF

GPT实战系列-探究GPT等大模型的文本生成-CSDN博客文章来源地址https://www.toymoban.com/news/detail-822502.html

到了这里,关于数据分析-Pandas如何轻松处理时间序列数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Python初学小知识(十四):数据分析处理库Pandas

    Python初学小知识(十四):数据分析处理库Pandas

    来源于这里。 很多情况下用的是pandas而不是numpy,因为前者是在后者的基础上又封装了一些操作,相当于做了函数简化。pandas主要是数据预处理用的比较多。 1.1 读取csv 任意一种格式,只要是以 , 为分隔符,就可以用 read_csv 读取: 先把文件打印出来看看结果: 结果是和表

    2023年04月25日
    浏览(33)
  • Pandas数据处理与分析教程:从基础到实战

    Pandas数据处理与分析教程:从基础到实战

    在数据分析和数据科学领域,Pandas是Python编程语言中最受欢迎的数据处理库之一。它提供了高效、灵活和易于使用的数据结构,使得数据的清洗、转换和分析变得简单而直观。本教程将详细介绍Pandas的各个方面,包括基本的数据结构、数据操作、数据过滤和排序、数据聚合与

    2024年02月10日
    浏览(7)
  • 交互式数据分析和处理新方法:pandas-ai =Pandas + ChatGPT

    交互式数据分析和处理新方法:pandas-ai =Pandas + ChatGPT

    Python Pandas是一个为Python编程提供数据操作和分析功能的开源工具包。这个库已经成为数据科学家和分析师的必备工具。它提供了一种有效的方法来管理结构化数据(Series和DataFrame)。 在人工智能领域,Pandas经常用于机器学习和深度学习过程的预处理步骤。Pandas通过提供数据清理

    2024年02月03日
    浏览(6)
  • 使用Pandas进行数据处理和分析的入门指南

    摘要:本文将介绍如何使用Python的Pandas库进行数据处理和分析,包括数据导入、数据清洗、数据转换和简单分析等方面的内容。 在数据科学和数据分析领域,数据处理是一个关键的步骤。Python的Pandas库提供了强大且易于使用的工具,使数据处理变得简单和高效。本文将引导您

    2024年02月10日
    浏览(6)
  • Pandas+ChatGPT超强组合pandas-ai:交互式数据分析和处理新方法

    Pandas+ChatGPT超强组合pandas-ai:交互式数据分析和处理新方法

    Python Pandas是一个为Python编程提供数据操作和分析功能的开源工具包。这个库已经成为数据科学家和分析师的必备工具。它提供了一种有效的方法来管理结构化数据(Series和DataFrame)。 在人工智能领域,Pandas经常用于机器学习和深度学习过程的预处理步骤。Pandas通过提供数据清理

    2024年02月12日
    浏览(11)
  • Pandas + ChatGPT 超强组合,pandas-ai :交互式数据分析和处理新方法

    Pandas + ChatGPT 超强组合,pandas-ai :交互式数据分析和处理新方法

    Python Pandas是一个为Python编程提供数据操作和分析功能的开源工具包。这个库已经成为数据科学家和分析师的必备工具。它提供了一种有效的方法来管理结构化数据(Series和DataFrame)。 在人工智能领域,Pandas经常用于机器学习和深度学习过程的预处理步骤。Pandas通过提供数据清理

    2024年02月05日
    浏览(5)
  • Python数据分析与应用 |第4章 使用pandas进行数据预处理 (实训)

    Python数据分析与应用 |第4章 使用pandas进行数据预处理 (实训)

    编号 性别 高血压 是否结婚 工作类型 居住类型 体重指数 吸烟史 中风 9046 男 否 是 私人 城市 36.6 以前吸烟 是 51676 女 否 是 私营企业 农村 N/A 从不吸烟 是 31112 男 否 是 私人 农村 32.5 从不吸烟 是 60182 女 否 是 私人 城市 34.4 抽烟 是 1665 女 是 是 私营企业 农村 24 从不吸烟 是

    2024年04月23日
    浏览(5)
  • Pandas库分析-时间序列的处理

    在使用Python进行数据分析时,经常会遇到时间日期格式处理和转换,特别是分析和挖掘与时间相关的数据,比如量化交易就是从历史数据中寻找股价的变化规律。Python中自带的处理时间的模块有datetime,NumPy库也提供了相应的方法,Pandas作为Python环境下的数据分析库,更是提供

    2024年02月07日
    浏览(7)
  • 数据分析-Pandas如何整合多张数据表

    数据分析-Pandas如何整合多张数据表

    数据表,时间序列数据在数据分析建模中很常见,例如天气预报,空气状态监测,股票交易等金融场景。数据分析过程中表格重整,重新调整,重塑数据表是很重要的技巧,此处选择Titanic数据,以及巴黎、伦敦欧洲城市空气质量监测 N O 2 NO_2 N O 2 ​ 数据作为样例。 数据分析

    2024年01月17日
    浏览(7)
  • NumPy和Pandas库的基本用法,用于数据处理和分析

    当涉及到数据处理和分析时,NumPy和Pandas是两个非常常用的Python库。下面是它们的基本用法: NumPy(Numerical Python): 导入NumPy库:在代码中使用import numpy as np导入NumPy库。 创建NumPy数组:使用np.array()函数可以创建一个NumPy数组。例如,arr = np.array([1, 2, 3, 4, 5])创建一个包含整数

    2024年02月11日
    浏览(8)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包