“学习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实现智能家居自动化实现智能照明系统的高级功能 自动调节亮度…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
 
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
 
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
 
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
 
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
 
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
