当前位置: 首页 > news >正文

《Pandas 简易速速上手小册》第6章:Pandas 时间序列分析(2024 最新版)

在这里插入图片描述

文章目录

  • 6.1 时间序列数据基础
    • 6.1.1 基础知识
    • 6.1.2 重点案例:股票市场分析
    • 6.1.3 拓展案例一:温度变化分析
    • 6.1.4 拓展案例二:电商平台日销售额分析
  • 6.2 日期与时间功能
    • 6.2.1 基础知识
    • 6.2.2 重点案例:活动日志分析
    • 6.2.3 拓展案例一:工作日计算
    • 6.2.4 拓展案例二:股票市场交易日数据重采样
  • 6.3 时间序列的高级应用
    • 6.3.1 基础知识
    • 6.3.2 重点案例:金融市场趋势分析
    • 6.3.3 拓展案例一:能源消耗季节性分析
    • 6.3.4 拓展案例二:零售销售的扩展窗口分析

6.1 时间序列数据基础

时间序列数据是在连续时间点或者时间段上收集的数据点,常用于分析趋势、做出预测等。

6.1.1 基础知识

  1. 时间戳和时间间隔: 时间戳代表某一具体的瞬间,而时间间隔则表示一段时间。
  2. 解析时间数据: 通常需要将字符串格式的时间数据转换成 Python 的 datetime 对象以便处理。
  3. 设置时间索引: 在 Pandas 中,将时间数据设置为 DataFrame 的索引可以方便地进行时间序列分析。

6.1.2 重点案例:股票市场分析

假设你有一份股票市场的历史数据,包含日期和当日的收盘价,你需要分析股价随时间的变化趋势。

数据准备

import pandas as pd# 示例股票市场数据
stock_data = {'date': ['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04'],'close_price': [100, 105, 103, 108]
}
stock_df = pd.DataFrame(stock_data)

处理时间序列数据

# 将字符串日期转换为 datetime 对象
stock_df['date'] = pd.to_datetime(stock_df['date'])# 将日期设置为索引
stock_df.set_index('date', inplace=True)

6.1.3 拓展案例一:温度变化分析

假设你有一份每日温度记录数据,需要分析温度随时间的变化。

数据准备

# 示例温度记录数据
temperature_data = {'date': ['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04'],'temperature': [22, 23, 21, 24]
}
temperature_df = pd.DataFrame(temperature_data)

处理时间序列数据

# 将字符串日期转换为 datetime 对象并设置为索引
temperature_df['date'] = pd.to_datetime(temperature_df['date'])
temperature_df.set_index('date', inplace=True)

6.1.4 拓展案例二:电商平台日销售额分析

分析一份电商平台每日销售额数据,观察销售额随时间的变化。

数据准备

# 示例电商平台销售数据
sales_data = {'date': ['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04'],'daily_sales': [2000, 3000, 2500, 3200]
}
sales_df = pd.DataFrame(sales_data)

处理时间序列数据

# 将日期转换为 datetime 对象并设置为索引
sales_df['date'] = pd.to_datetime(sales_df['date'])
sales_df.set_index('date', inplace=True)

通过这些案例,我们展示了如何处理和分析时间序列数据。从股市趋势分析到温度变化观察,再到电商销售额的时间分析,掌握时间序列数据的基础操作是进行这些分析的关键。

在这里插入图片描述


6.2 日期与时间功能

在时间序列分析中,处理和操作日期与时间是常见的需求。Pandas 提供了丰富的日期与时间功能,使得这些操作变得简单。

6.2.1 基础知识

  1. Datetime 类型: Pandas 使用 datetime64 类型来处理日期和时间。可以使用 pd.to_datetime() 将字符串转换成 datetime64 类型。
  2. 时间索引: 设置时间索引后,可以使用时间索引来选择、过滤和重采样数据。
  3. 时间偏移和频率: Pandas 允许使用时间偏移和频率来进行日期计算,如加减天数、找到下一个月的开始等。

6.2.2 重点案例:活动日志分析

假设你有一份网站的活动日志,记录了每次活动的日期和时间,你需要分析特定时间段内的活动。

数据准备

import pandas as pd# 示例活动日志数据
log_data = {'timestamp': ['2023-01-01 12:00', '2023-01-01 12:30', '2023-01-02 13:00', '2023-01-02 14:00'],'activity': ['login', 'view', 'purchase', 'logout']
}
log_df = pd.DataFrame(log_data)

处理时间序列数据

# 将字符串转换为 datetime 对象
log_df['timestamp'] = pd.to_datetime(log_df['timestamp'])# 设置时间索引
log_df.set_index('timestamp', inplace=True)# 选择特定日期的活动
activities_on_first = log_df['2023-01-01']

6.2.3 拓展案例一:工作日计算

计算一个时间范围内的工作日总数。

数据准备

# 定义一个时间范围
date_range = pd.date_range(start='2023-01-01', end='2023-01-31')

计算工作日

# 计算工作日
workdays = date_range.to_series().map(lambda x: 0 if x.weekday() >= 5 else 1).sum()

6.2.4 拓展案例二:股票市场交易日数据重采样

假设你有一份股票市场的日交易数据,需要按周计算平均交易量。

数据准备

# 示例股票市场交易数据
trade_data = {'date': pd.date_range(start='2023-01-01', periods=30),'volume': pd.np.random.randint(1000, 5000, size=30)
}
trade_df = pd.DataFrame(trade_data).set_index('date')

重采样计算周平均交易量

# 按周重采样并计算平均交易量
weekly_avg_volume = trade_df.resample('W').mean()

通过这些案例,我们展示了如何利用 Pandas 的日期与时间功能进行分析,从处理具体的活动日志到计算工作日总数,再到重采样股票市场交易数据。掌握这些技巧,你可以更灵活地处理时间序列数据,提取有价值的时间维度信息。

在这里插入图片描述


6.3 时间序列的高级应用

探索时间序列数据的高级应用可以帮助我们深入理解数据的时间维度,从而做出更准确的分析和预测。

6.3.1 基础知识

  1. 时间序列缺失数据处理: 时间序列数据可能会有缺失值,处理方法包括填充和插值。
  2. 重采样和频率转换: 通过改变时间序列的频率(如从日到月),可以更好地分析趋势。
  3. 滚动窗口和扩展窗口操作: 滚动窗口(rolling window)操作允许我们计算如移动平均等统计量,扩展窗口(expanding window)则从时间序列起点累积到当前点。

6.3.2 重点案例:金融市场趋势分析

假设你有一份金融市场的每日股价数据,需要分析股价的移动平均趋势。

数据准备

import pandas as pd
import numpy as np# 示例股价数据
date_range = pd.date_range(start='2023-01-01', periods=90)
stock_prices = np.random.normal(100, 10, size=90).cumsum()
stock_df = pd.DataFrame({'price': stock_prices}, index=date_range)

处理时间序列数据

# 计算7日移动平均
stock_df['7_day_avg'] = stock_df['price'].rolling(window=7).mean()# 计算30日移动平均
stock_df['30_day_avg'] = stock_df['price'].rolling(window=30).mean()

6.3.3 拓展案例一:能源消耗季节性分析

分析一份每小时记录的能源消耗数据,观察消耗量的季节性变化。

数据准备

# 示例能源消耗数据
hours_in_year = pd.date_range(start='2023-01-01', periods=8760, freq='H')
energy_consumption = np.random.normal(50, 15, size=8760).cumsum()
energy_df = pd.DataFrame({'consumption': energy_consumption}, index=hours_in_year)

季节性分析

# 按月重采样计算平均能源消耗
monthly_avg_consumption = energy_df.resample('M').mean()

6.3.4 拓展案例二:零售销售的扩展窗口分析

假设你有一份零售商每日销售额的数据,需要分析自年初以来销售额的累计总和。

数据准备

# 示例零售销售数据
days_in_year = pd.date_range(start='2023-01-01', periods=365)
daily_sales = np.random.randint(1000, 5000, size=365)
sales_df = pd.DataFrame({'sales': daily_sales}, index=days_in_year)

扩展窗口分析

# 计算累计销售额
sales_df['cumulative_sales'] = sales_df['sales'].expanding().sum()

通过这些案例,我们展示了时间序列数据分析的高级应用,包括处理缺失数据、重采样、以及滚动和扩展窗口操作。这些技巧可以帮助我们深入理解数据的时间维度,从而做出更准确的分析和预测。

相关文章:

《Pandas 简易速速上手小册》第6章:Pandas 时间序列分析(2024 最新版)

文章目录 6.1 时间序列数据基础6.1.1 基础知识6.1.2 重点案例:股票市场分析6.1.3 拓展案例一:温度变化分析6.1.4 拓展案例二:电商平台日销售额分析 6.2 日期与时间功能6.2.1 基础知识6.2.2 重点案例:活动日志分析6.2.3 拓展案例一…...

滇西科技师范学院食堂大宗物资采购项目(冰冻制品类)招标公告

滇西科技师范学院食堂大宗物资采购项目(冰冻制品类)招标公告 (招标编号:YDZOH20240158) 项目所在地区:云南省,临沧市,市辖区 一、招标条件 本滇西科技师范学院食堂大宗物资采购项目(冰冻制品类)已由项目审批/核准/备案机关批准,项目资金来源为…...

(2024,SaFaRI,双三上采样和 DFT,空间特征和频率特征)基于扩散模型的图像空间和频率感知恢复方法

Spatial-and-Frequency-aware Restoration method for Images based on Diffusion Models 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 3. 方法 3.1 修改数据保真度 3.2 …...

【Linux】环境基础开发工具的使用之gcc详解(二)

前言:上一篇文章中我们讲解了Linux下的vim和yum的工具的使用,今天我们将在上一次的基础上进一步的讲解开放工具的时候。 💖 博主CSDN主页:卫卫卫的个人主页 💞 👉 专栏分类:Linux的深度刨析 👈 &#x1f4a…...

go语言-用channel控制goroutine的退出

用channel控制goroutine的退出 本文简要介绍了,如何用channel控制goroutine的退出的基本方法 for-range主动停止goruitine package mainimport ("fmt""sync""time" )/* Go并发编程模型:主动停止goroutine 方法一&#…...

强大的虚拟机Parallels Desktop 19 mac中文激活

Parallels Desktop是一款功能全面、易于使用的虚拟机软件,它为用户提供了在Mac电脑上同时运行多个操作系统的便利。 软件下载:Parallels Desktop 19 mac中文激活版下载 Parallels Desktop 19 mac具有快速启动和关闭虚拟机的能力,让用户能够迅…...

单元测试框架深入(一):单元测试框架深入

一、一个简单的例子 1、引入Maven依赖:JUnit框架和Surefire插件 2.在src/test/java目录下新建名字以“Test”结尾的测试类,并用Test注释测试方法 3.运行单元测试用例 或用mvn命令运行单元测试: 二、单元测试基础之单元测试框架:J…...

苏门X学士常识学习

前言 苏轼(1037年—1101年)是北宋的文坛领袖,很喜欢奖掖后进。其门下最有名的是“苏门四学士”,另外还有“苏门六学士”和“苏门后四学士”之说。 一、苏门四学士 苏轼在《与李昭玘书》中说: 轼蒙庇粗遣&#xff0…...

MD5算法:高效安全的数据完整性保障

摘要:在数字世界中,确保数据完整性和安全性至关重要。消息摘要算法就是一种用于实现这一目标的常用技术。其中,Message Digest Algorithm 5(MD5)算法因其高效性和安全性而受到广泛关注。本文将详细介绍MD5算法的优缺点…...

JavaScript基础五对象 内置对象 Math.random()

内置对象-生成任意范围随机数 Math.random() 随机数函数, 返回一个0 - 1之间,并且包括0不包括1的随机小数 [0, 1) 如何生成0-10的随机数呢? Math.floor(Math.random() * (10 1)) 放大11倍再向下取整 如何生成5-10的随机数&…...

curl之网络接口

Curl_cftype 连接接口定义 struct Curl_cftype {const char *name; /* name of the filter type */int flags; /* flags of filter type */int log_level; /* log level for such filters */Cu…...

Pytest中doctests的测试方法应用

在 Python 的测试生态中,Pytest 提供了多种灵活且强大的测试工具。其中,doctests 是一种独特而直观的测试方法,通过直接从文档注释中提取和执行测试用例,确保代码示例的正确性。本文将深入介绍 Pytest 中 doctests 的测试方法,包括基本用法和实际案例,以帮助你更好地利用…...

Android 8.1 铃声音量通话音量同步调节

Android 8.1 铃声音量通话音量同步调节 最近收到客户反馈,想要实现铃声音量通话音量同步调节,具体修改参照如下: /frameworks/base/core/java/android/preference/SeekBarVolumizer.java if (defaultUri null) {if (mStreamType AudioMan…...

C++——字符串string

C——字符串string C语言中对字符串的表示通常用指针,新手会面临内存泄漏或者段错误等众多问题。 在 C 中, string 类是标准库的一部分,用于表示和操作字符串。它是对传统的 C 风格字符串(以空 字符 ‘\0’ 结尾的字符数组&…...

HBuilder使用[微信小程序开发者工具] 显示 × initialize报错

解决办法 我们先要单独打开 微信开发者工具 点击设置里面的安全,把服务器端口打开 然后再回到我们的HBuilder使用重新打开打开 成功打开...

洛谷P8599 [蓝桥杯 2013 省 B] 带分数

[蓝桥杯 2013 省 B] 带分数 题目描述 100 100 100 可以表示为带分数的形式: 100 3 69258 714 100 3 \frac{69258}{714} 100371469258​。 还可以表示为: 100 82 3546 197 100 82 \frac{3546}{197} 100821973546​。 注意特征:带分…...

grafana安装DevOpsProdigy KubeGraf 1.5.2

安装DevOpsProdigy KubeGraf需要安装kube-state-metrics 官方地址:https://github.com/kubernetes/kube-state-metrics/tree/release-2.10/examples/standard 查看k8s版本和kube-state-metrics对应版本: [rootmaster1 kube-state-metrics]# ll 总用量 …...

大数据 - Hadoop系列《三》- MapReduce(分布式计算引擎)概述

上一篇文章: 大数据 - Hadoop系列《三》- HDFS(分布式文件系统)概述-CSDN博客 目录 12.1 针对MapReduce的设计构思 1. 如何对付大数据处理场景 2. 构建抽象编程模型 3. 统一架构、隐藏底层细节 12.2 分布式计算概念 12.3 MapReduce定义…...

了解Ansible自动化运维工具及模块的使用

一、Ansible的相关知识 1.1 Ansible工具的了解 Ansible是一个基于Python开发的配置管理和应用部署工具,现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点,Pubbet和Saltstack能实现的功能,Ansible基本上都可以实现。Ansible…...

sql指南之null值用法

注明:参考文章: SQL避坑指南之NULL值知多少?_select null as-CSDN博客文章浏览阅读2.9k次,点赞7次,收藏21次。0 引言 SQL NULL(UNKNOW)是用来代表缺失值的术语,在表中的NULL值是显示…...

DETR训练避坑大全:Windows10+PyCharm环境下的5个常见报错解决方案

DETR实战指南:Windows 10环境下的5大典型问题深度解析与解决方案 在目标检测领域,DETR(Detection Transformer)作为首个完全基于Transformer架构的端到端检测系统,正在改变传统计算机视觉任务的实现方式。不同于Faste…...

OpenClaw龙虾推出官方中国镜像站,由字节跳动提供支持

文章目录前言龙虾是谁?为啥它搞个镜像站这么重要?中国镜像站来了:地址是 mirror-cn.clawhub.com背后的故事:腾讯、字节、龙虾的"三国演义"镜像站的意义:不只是个"加速器"怎么用?手把手…...

Youtu-VL-4B-Instruct-GGUF助力开源社区:如何向GitHub提交高质量的模型使用案例

Youtu-VL-4B-Instruct-GGUF助力开源社区:如何向GitHub提交高质量的模型使用案例 1. 引言:从使用者到贡献者 不知道你有没有这样的经历:在网上找到一个看起来很酷的开源项目,兴致勃勃地打开它的GitHub页面,结果发现文…...

用Manim做中文数学微课?先搞定MathTex颜色分染和ctex包配置(保姆级教程)

Manim中文数学微课实战:从零实现公式染色与中文混排 当你在B站刷到那些将复杂数学公式演绎成动画的艺术品时,是否好奇过它们是如何制作的?作为教育视频创作者,我最初被Manim的数学可视化能力吸引,却在尝试制作中文微课…...

Ostrakon-VL-8B部署指南:快速搭建支持图片问答的智能系统

Ostrakon-VL-8B部署指南:快速搭建支持图片问答的智能系统 1. 系统概述 Ostrakon-VL-8B是一款专为零售和餐饮场景优化的多模态视觉理解系统。它能像人类一样"看懂"图片内容,并回答与图片相关的各种问题。 这个系统基于Qwen3-VL-8B模型微调而…...

GB28181国标协议实战:用WVP+ZLMediaKit搭建一个支持级联的轻量级视频中台

GB28181国标协议实战:构建轻量级视频中台的架构设计与实现 在安防监控与视频管理领域,GB28181协议已经成为设备互联互通的事实标准。对于需要整合多品牌设备、实现统一管理的技术团队而言,如何快速搭建一个稳定可靠的视频中台是项目落地的关键…...

libpcap BPF过滤器完全指南:构建高效网络数据包过滤系统

libpcap BPF过滤器完全指南:构建高效网络数据包过滤系统 【免费下载链接】libpcap the LIBpcap interface to various kernel packet capture mechanism 项目地址: https://gitcode.com/gh_mirrors/li/libpcap libpcap是一款强大的网络数据包捕获库&#xff…...

nginx——方向代理和负载均衡

目录 1.1 Nginx概述 1.1.1 企业青睐 Nginx 的核心原因 1.1.2 Nginx的作用 1.3 反向代理和负载均衡 1.4 注 1.4.1 代理百度并使用 18090 端口 1.1 Nginx概述 1.1.1 企业青睐 Nginx 的核心原因 Nginx 由俄罗斯开发者打造,具有超高稳定性(资源占用极低…...

救命!2026爆款PPT一键制作工具实测,新手也能5分钟出片,告别熬夜手搓无标题

作为常年和PPT打交道的AI博主,每天都能收到粉丝私信轰炸:“做PPT有没有捷径?”“AI能不能帮我快速出稿?”“新手零基础,半天排不出一页像样的版面”……懂的都懂!谁没为了一份PPT熬到凌晨?找模板…...

重构时间选择体验:flatpickr的现代前端实践指南

重构时间选择体验:flatpickr的现代前端实践指南 【免费下载链接】flatpickr lightweight, powerful javascript datetimepicker with no dependencies 项目地址: https://gitcode.com/gh_mirrors/fl/flatpickr 问题引入:你的时间选择器是否还在制…...