“学习Pandas中时间序列的基本操作“
目录
# 开篇
1. 创建和操作时间序列对象
2. 时间序列数据的读取和存储
3. 时间序列数据的索引和切片
4. 时间序列数据的操作和转换
5. 时间序列数据的可视化
6. 处理时间序列中的缺失值
7. 时间序列数据的聚合和分组
8. 时间序列的时间区间和偏移量操作
示例代码:
运行结果:
# 开篇
在Python中,时间序列是一种特殊的数据类型,通常用于表示一系列按时间顺序排列的数据点。时间序列可以是一维数组,其中每个数据点都和一个特定的时间点相关联。
时间序列在数据分析和预测中非常重要,因为它们可以帮助我们理解数据随时间变化的模式和趋势。通过对时间序列数据进行分析,我们可以发现周期性变化、趋势、季节性等特征,并基于这些特征进行预测和决策。
在Python中,有许多用于处理时间序列数据的库,如pandas、numpy、matplotlib等。这些库提供了丰富的功能和工具,可以帮助我们加载、处理、可视化和分析时间序列数据。
总的来说,时间序列在Python中的作用主要包括:
- 数据分析和预测:通过对时间序列数据进行分析,可以揭示数据的模式和趋势,从而进行预测和决策。
- 可视化:通过绘制时间序列图表,可以直观地展示数据随时间的变化,帮助我们理解数据的特征和规律。
- 数据处理和转换:可以利用时间序列数据进行数据清洗、转换和处理,以便更好地进行后续的分析和建模工作。
- 特征工程:时间序列数据可以用于构建特征,帮助机器学习模型更好地理解数据和进行预测。
总的来说,时间序列在Python中是一种非常重要的数据类型,可以帮助我们更好地理解和分析数据,从而做出更准确的预测和决策。
1. 创建和操作时间序列对象
- 使用
pd.date_range
、pd.to_datetime
和pd.Timestamp
创建时间索引。 DatetimeIndex
是 Pandas 时间序列的核心。
import pandas as pd# 创建时间序列
date_rng = pd.date_range(start='2023-01-01', end='2023-06-30', freq='D')
data = pd.DataFrame(date_rng, columns=['日期'])
data.set_index('日期', inplace=True)
2. 时间序列数据的读取和存储
- 使用
read_csv
、read_excel
等方法读取带有日期时间数据的文件,并使用parse_dates
参数进行解析。 - 保存时间序列数据到文件中,例如使用
to_csv
、to_excel
等。
# 读取时间序列数据
data = pd.read_csv('data.csv', parse_dates=['日期'], index_col='日期')# 保存时间序列数据
data.to_csv('output.csv')
3. 时间序列数据的索引和切片
- 基于时间索引的切片和子集选择,例如
data['2023-01-01':'2023-02-01']
。 - 使用
resample
方法进行重采样。
# 时间索引切片
subset = data['2023-01-01':'2023-02-01']# 重采样
monthly_data = data.resample('M').mean()
4. 时间序列数据的操作和转换
- 使用
shift
、rolling
和expanding
方法进行移动窗口操作和滚动计算。 - 使用
diff
计算差分。 - 使用
resample
进行频率转换和聚合操作。
# 滚动计算
data['7天滚动平均'] = data['值'].rolling(window=7).mean()# 差分计算
data['差分'] = data['值'].diff()# 重采样聚合
weekly_data = data.resample('W').sum()
5. 时间序列数据的可视化
- 使用 ECharts(通过 pyecharts)绘制时间序列数据的图表。
from pyecharts.charts import Line
from pyecharts import options as opts# 时间序列数据的可视化
line = (Line(init_opts=opts.InitOpts(width="1000px", height="600px")) # 设置图表的宽度和高度.add_xaxis(data.index.strftime('%Y-%m-%d').tolist()).add_yaxis("每日温度", data['温度'].tolist(), is_smooth=True, label_opts=opts.LabelOpts(is_show=False)).add_yaxis("7天滚动平均", data['7天滚动平均'].tolist(), is_smooth=True, label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(title="温度时间序列数据",pos_top="5%",pos_left="center"),xaxis_opts=opts.AxisOpts(type_="category",axislabel_opts=opts.LabelOpts(rotate=-15) # 旋转x轴标签),yaxis_opts=opts.AxisOpts(type_="value"),tooltip_opts=opts.TooltipOpts(trigger="axis"),legend_opts=opts.LegendOpts(pos_top="10%", # 设置图例的位置pos_left="center",orient="horizontal"))
)
6. 处理时间序列中的缺失值
- 使用
fillna
、interpolate
和dropna
方法处理缺失数据。
# 填充缺失值
data['值'].fillna(method='ffill', inplace=True)# 插值填充
data['值'].interpolate(method='linear', inplace=True)# 删除缺失值
data.dropna(inplace=True)
7. 时间序列数据的聚合和分组
- 使用
groupby
和resample
方法对时间序列数据进行分组和聚合。
# 按月分组聚合
monthly_grouped = data.groupby(data.index.month).sum()# 重采样聚合
quarterly_data = data.resample('Q').mean()
8. 时间序列的时间区间和偏移量操作
- 使用
pd.offsets
模块中的类进行自定义时间偏移量操作。
# 自定义时间偏移量
data.index = data.index + pd.offsets.Day(1)
示例代码:
import pandas as pd
import numpy as np
from pyecharts.charts import Line
from pyecharts import options as opts# 1. 创建时间序列数据
date_rng = pd.date_range(start='2023-01-01', end='2023-06-30', freq='D')
data = pd.DataFrame(date_rng, columns=['日期'])
print("\n日期:")
print(data)
data['温度'] = np.random.randint(0, 35, size=(len(date_rng)))
print("\n温度:")
print(data)
data.set_index('日期', inplace=True)# 2. 读取和存储时间序列数据
data.to_csv('temperature_data.csv')
data = pd.read_csv('temperature_data.csv', parse_dates=['日期'], index_col='日期')# 3. 时间序列数据的索引和切片
subset = data['2023-01-01':'2023-02-01']
monthly_data = data.resample('ME').mean() # 修改 'M' 为 'ME'# 4. 时间序列数据的操作和转换
data['7天滚动平均'] = data['温度'].rolling(window=7).mean()
data['温度差分'] = data['温度'].diff()
weekly_data = data.resample('W').mean()
print("\n7天滚动平均/温度差分:")
print(data)# 5. 时间序列数据的可视化
line = (Line(init_opts=opts.InitOpts(width="1000px", height="600px")) # 设置图表的宽度和高度.add_xaxis(data.index.strftime('%Y-%m-%d').tolist()).add_yaxis("每日温度", data['温度'].tolist(), is_smooth=True, label_opts=opts.LabelOpts(is_show=False)).add_yaxis("7天滚动平均", data['7天滚动平均'].tolist(), is_smooth=True, label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(title="温度时间序列数据",pos_top="5%",pos_left="center"),xaxis_opts=opts.AxisOpts(type_="category",axislabel_opts=opts.LabelOpts(rotate=-15) # 旋转x轴标签),yaxis_opts=opts.AxisOpts(type_="value"),tooltip_opts=opts.TooltipOpts(trigger="axis"),legend_opts=opts.LegendOpts(pos_top="10%", # 设置图例的位置pos_left="center",orient="horizontal"))
)
line.render("temperature_time_series.html")# 6. 处理时间序列中的缺失值
data.loc['2023-02-15':'2023-02-20', '温度'] = np.nan
data.loc[:, '温度'] = data['温度'].ffill() # 使用 obj.ffill() 替换 fillna
data.loc[:, '温度'] = data['温度'].interpolate(method='linear')
print("\n处理缺失值: ")
print(data)# 7. 时间序列数据的聚合和分组
monthly_grouped = data.groupby(data.index.month).mean()
quarterly_data = data.resample('QE').mean() # 修改 'Q' 为 'QE'
print("\n月度数据:")
print(monthly_grouped)
print("\n季度数据:")
print(quarterly_data)# 8. 时间序列的时间区间和偏移量操作
data.index = data.index + pd.offsets.Day(1)
print("\n时间区间和偏移量操作:")
print(data)
运行结果:
日期:日期
0 2023-01-01
1 2023-01-02
2 2023-01-03
3 2023-01-04
4 2023-01-05
.. ...
176 2023-06-26
177 2023-06-27
178 2023-06-28
179 2023-06-29
180 2023-06-30[181 rows x 1 columns]温度:日期 温度
0 2023-01-01 25
1 2023-01-02 10
2 2023-01-03 24
3 2023-01-04 23
4 2023-01-05 17
.. ... ..
176 2023-06-26 22
177 2023-06-27 29
178 2023-06-28 6
179 2023-06-29 6
180 2023-06-30 24[181 rows x 2 columns]7天滚动平均/温度差分:温度 7天滚动平均 温度差分
日期
2023-01-01 25 NaN NaN
2023-01-02 10 NaN -15.0
2023-01-03 24 NaN 14.0
2023-01-04 23 NaN -1.0
2023-01-05 17 NaN -6.0
... .. ... ...
2023-06-26 22 21.142857 -5.0
2023-06-27 29 22.714286 7.0
2023-06-28 6 20.142857 -23.0
2023-06-29 6 19.571429 0.0
2023-06-30 24 18.285714 18.0[181 rows x 3 columns]处理缺失值: 温度 7天滚动平均 温度差分
日期
2023-01-01 25.0 NaN NaN
2023-01-02 10.0 NaN -15.0
2023-01-03 24.0 NaN 14.0
2023-01-04 23.0 NaN -1.0
2023-01-05 17.0 NaN -6.0
... ... ... ...
2023-06-26 22.0 21.142857 -5.0
2023-06-27 29.0 22.714286 7.0
2023-06-28 6.0 20.142857 -23.0
2023-06-29 6.0 19.571429 0.0
2023-06-30 24.0 18.285714 18.0[181 rows x 3 columns]月度数据:温度 7天滚动平均 温度差分
日期
1 14.290323 12.725714 -0.233333
2 22.821429 20.678571 -0.321429
3 18.419355 18.801843 0.322581
4 18.333333 17.666667 0.366667
5 17.193548 18.064516 -0.967742
6 20.500000 20.085714 0.800000季度数据:温度 7天滚动平均 温度差分
日期
2023-03-31 18.366667 17.619048 -0.067416
2023-06-30 18.659341 18.599686 0.054945时间区间和偏移量操作:温度 7天滚动平均 温度差分
日期
2023-01-02 25.0 NaN NaN
2023-01-03 10.0 NaN -15.0
2023-01-04 24.0 NaN 14.0
2023-01-05 23.0 NaN -1.0
2023-01-06 17.0 NaN -6.0
... ... ... ...
2023-06-27 22.0 21.142857 -5.0
2023-06-28 29.0 22.714286 7.0
2023-06-29 6.0 20.142857 -23.0
2023-06-30 6.0 19.571429 0.0
2023-07-01 24.0 18.285714 18.0[181 rows x 3 columns]
相关文章:

“学习Pandas中时间序列的基本操作“
目录 # 开篇 1. 创建和操作时间序列对象 2. 时间序列数据的读取和存储 3. 时间序列数据的索引和切片 4. 时间序列数据的操作和转换 5. 时间序列数据的可视化 6. 处理时间序列中的缺失值 7. 时间序列数据的聚合和分组 8. 时间序列的时间区间和偏移量操作 示例代码&…...

常用知识碎片 分页组件的使用(arco-design组件库)
目录 分页组件使用 API 组件代码示例 使用思路: 前端示例代码 html script 后端示例代码 Controller Impl xml 总结 分页组件使用 使用Arco Design之前需要配置好搭建前端环境可以看我另外一篇文章: 手把手教你 创建Vue项目并引入Arco Desi…...

WPF 制作一个文字漂浮提示框
WPF好像没有自带的文字提示漂浮,我们可以定制一个。 效果如下: xaml xaml如下: <Window x:Class"GroupServer.MsgTip"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://sc…...

Node.js_fs模块
文件删除 文件重命名和移动(本质都是修改路径) 文件夹操作 创建文件夹(mkdir) 读取文件夹(readdir) (打印出来是该文件夹下名称的数组形式) 读取当前的文件夹(readdir) 删除文件夹 (rmdir) 查看资源状态…...
使用 Vue 3 实现打字机效果
在现代前端开发中,添加一些视觉效果可以提升用户体验。其中,打字机效果是一种常见且吸引人的效果,可以用于展示动态文本。本文将介绍如何在 Vue 3 中实现打字机效果。 实现步骤 1. 创建自定义指令 我们首先创建一个自定义指令 v-typewriter…...
unordered_map和set
前言:本篇文章继续分享新的容器unordered_map和set。前边我们分享过map和set,其底层为红黑树,而unordered_map和set的底层则为哈希表,因此在unordered_map和set的实现中,我们可以效仿许多在map和set的中就分享过的一些…...

java:运用字节缓冲输入流将文件中的数据写到集合中
代码主要是将文本文件中的数据写到集合中,运用到的是java字节缓冲输入流的知识点。 public static void main(String[] args) throws IOException {//创建字符缓冲流输入对象BufferedReader bufferedReader new BufferedReader(new FileReader("student.txt&q…...

【机器学习】支持向量机与主成分分析在机器学习中的应用
文章目录 一、支持向量机概述什么是支持向量机?超平面和支持向量大边距直觉 二、数据预处理与可视化数据集的基本信息导入必要的库加载数据集数据概况数据可视化特征对的散点图矩阵类别分布条形图平均面积与平均光滑度的散点图变量之间的相关性热图 三、模型训练&am…...
SpringBoot项目架构实战之“网关zuul搭建“
第三章 网关zuul搭建 前言: 1、主要功能 zuul主要提供动态路由(内置ribbon实现)和过滤(可以做统一鉴权过滤器、灰度发布过滤器、黑白名单IP过滤器、服务限流过滤器(可以配合Sentinel实现))功能…...

发挥储能系统领域优势,海博思创坚定不移推动能源消费革命
随着新发展理念的深入贯彻,我国正全面落实“双碳”目标任务,通过积极转变能源消费方式,大幅提升能源利用效率,实现了以年均约3.3%的能源消费增长支撑了年均超过6%的国民经济增长。这一成就的背后,是我国能源结构的持续…...

matlab R2016b安装cplex12.6,测试时cplex出现出现内部错误的解决方法
问题场景 网上搜索matlabyalmipcplex的安装教程,跟着步骤操作即可,假如都安装好了,在matlab中测试安装是否成功,出现以下问题: 1、matlab中设置路径中添加了yalmip和cplex路径,在命令窗口中输入yalmiptest…...
C#中的Dictionary
Dictionary<TKey, TValue> 是一个泛型集合,它存储键值对(key-value pairs),其中每个键(key)都是唯一的。这个集合类提供了快速的数据插入和检索功能,因为它是基于哈希表实现的。 注意 ke…...
VSCode中多行文本的快速前后缩进
快捷键 VSCode提供了一组快捷键,用于快速调整选中文本行的缩进。 增加缩进(向前缩进):在Windows和Linux上按 Tab 键,在Mac上按 ⇧⇥(Shift Tab)。减少缩进(向后缩进)&…...
C# 8.0 新语法的学习和使用
C# 8.0 是微软在 2019 年 9 月 23 日随 .NET Core 3.0 一同发布的一个重要版本更新,带来了许多新的语言特性和改进。本文将详细介绍 C# 8.0 的新语法,并通过实际应用案例展示这些新特性的使用方法。 目录 1. 可空引用类型 2. 异步流 3. 默认接口方…...

数据结构——约瑟夫环C语言链表实现
约瑟夫环问题由古罗马史学家约瑟夫(Josephus)提出,他参加并记录了公元66—70年犹太人反抗罗马的起义。在城市沦陷之后,他和40名死硬的将士在附近的一个洞穴中避难。起义者表示“宁为玉碎不为瓦全”,约瑟夫则想“留得青…...

【MyBatis】——入门基础知识必会内容
🎼个人主页:【Y小夜】 😎作者简介:一位双非学校的大二学生,编程爱好者, 专注于基础和实战分享,欢迎私信咨询! 🎆入门专栏:🎇【MySQL࿰…...
react父调用子的方法,子调用父的方法
父调用子的方法 // 子组件 import React, { useRef, useEffect } from react;const ChildComponent ({ childMethodRef }) > {const childMethod useRef(null);useEffect(() > {childMethodRef.current childMethod;}, []);const someMethod () > {console.log(子…...

C#知识|账号管理系统:UI层-添加账号窗体设计思路及流程。
哈喽,你好啊,我是雷工! 前边练习过详情页窗体的设计思路及流程: 《C#知识|上位机UI设计-详情窗体设计思路及流程(实例)》 本节练习添加账号窗体的UI设计,以下为学习笔记。 01 效果展示 02 添加窗体 在UI层添加Windows窗体,设置名称为:FrmAddAcount.cs 设置窗体属…...

【机器学习】初学者经典案例(随记)
🎈边走、边悟🎈迟早会好 一、概念 机器学习是一种利用数据来改进模型性能的计算方法,属于人工智能的一个分支。它旨在让计算机系统通过经验自动改进,而不需要明确编程。 类型 监督学习:使用带标签的数据进行训练&…...
进阶版智能家居系统Demo[C#]:整合AI和自动化
引言 在基础智能家居系统的基础上,我们将引入更多高级功能,包括AI驱动的自动化控制、数据分析和预测。这些进阶功能将使智能家居系统更加智能和高效。 目录 高级智能家居功能概述使用C#和AI实现智能家居自动化实现智能照明系统的高级功能 自动调节亮度…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...

高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...

10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...