《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()

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/660972.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nodejs基于Vue.js的网上团购系统86593

该系统将采用B/S结构模式,使用Vue和ElementUI框架搭建前端页面,后端使用Nodejs来搭建服务器,并使用MySQL,通过axios完成前后端的交互 运行软件:vscode 前端nodejsvueElementUi 语言 node.js 框架:Express/koa 前端:V…

JVM性能分析工具——Arthas及火焰图的使用

Arthas的使用 Arthas常用命令Arthas的安装Linux压测工具Apache Bench安装火焰图的使用火焰图如何分析火焰图的互动 Arthas常用命令 help :查看所有命令dashboard :仪表板,查看线程的CPU信息等heapdump :不同类对象占用内存比重&a…

MySQL数据库基础第三篇(约束)

文章目录 一、约束概述二、约束演示1.演示代码2.读出结果 三、外键约束1.创建外键2.删除更新外键 作为软件工程师和数据库管理员,我们经常需要操作和管理数据库。对于数据库中的信息完整性和准确性的确保,以及对数据质量的提升,数据库中的约束…

2023年09月CCF-GESP编程能力等级认证Python编程二级真题解析

一、单选题(共15题,共30分) 第1题 我国第一台大型通用电子计算机使用的逻辑部件是 ( )。 A:集成电路 B:大规模集成电路 C:晶体管 D:电子管 答案:D 第2题 下列流程图的输出结果是( )? A:5 12 B:12 5 C:5 5 D:12 12 答案:B 第3题 如果要找出整数 a …

【分布式技术专题】Guava RateLimiter 针对于限流器的入门到实战(含源码分析介绍)

Guava RateLimiter 针对于限流器的入门到实战 限流器的思路和算法漏桶算法令牌算法 RateLimiter限流器RateLimiter的作用create方法acquire方法tryAcquire方法 详细分析参数抛出异常参数抛出异常实践案例第1次获取10个令牌第2次获取1个令牌第3次获取10个令牌 资料参考 限流器的…

maven: 使用profiles进行多环境配置

文章目录 一、背景二、如何配置 一、背景 在项目开发的过程中会用到多个环境比如:本地环境(开发自测)、开发环境(环境部署自测)、生产环境等,由于不同的环境需要不同的配置信息,为了便于开发使…

opencv——将2张图片合并

效果演示: 带有绿幕的图片的狮子提取出来,放到另一种风景图片里! 1. 首先我们要先口出绿色绿幕,比如: 这里将绿色绿色绿幕先转为HSV,通过修改颜色的明暗度,抠出狮子的轮廓。 代码 : import cv2 as cv import numpy as np import matplotlib.pyplot as plt def showI…

spring-boot-admin的介绍和使用

概述 Spring Boot 有一个非常好用的监控和管理的源软件,这个软件就是 Spring Boot Admin。该软件能够将 Actuator 中的信息进行界面化的展示,也可以监控所有 Spring Boot 应用的健康状况,提供实时警报功能。 主要的功能点有: 显…

tcpdump 抓包无法落盘

文章目录 问题背景解决办法 问题背景 在嵌入式设备中(Linux系统),为了分析两个网络节点的通讯问题,往往需要用到tcpdump,抓一个.pcap的包在PC端进行分析。博主在实际操作中发现,抓包无法实时落盘。 解决办法 # 下面的命令是写在…

面试八股文(2)

文章目录 1.ArrayList和LinkedList区别2.HashMap和HashTable区别3.线程的创建方式4.Java中异常处理5.Java序列化中某些字段不想进行序列化?6.Java序列化7.静态方法和实例方法8.List、Set、Map三者区别9.ArrayList和Vector区别10.HashMap和HashSet区别 1.ArrayList和…

还在用findViewById,不来了解下其它方式?

众所周知,都2225年了,如果你还在用Java敲安卓代码,findViewById已经是一种非常繁琐的操作,如果要去获取的id数量多,则对开发更加不友好。如果一个页面id过多,经常会有如下场景: TextView title…

ISOLAR-A/B问题总结

ISOLAR-A/B报错问题一&#xff1a; 1. Target ARObject: <ECUC-MODULE-CONFIGURATION-VALUES-REF> Unable to resolve reference /ETAS_Project/EcucModuleConfigurationValuess/E2E. - Line: 99. [Infos] <ECUC-MODULE-CONFIGURATION-VALUES-REF> : </ARPacka…

Pytest 与allure测试报告集成

通过Feature, story, step 记录测试的功能&#xff0c;场景及测试步骤 # login.pylogin_func函数 传入参数是name 和 password 当输入的name和password与数据库db_data中数据一致时&#xff0c;返回“XXX成功登录系统&#xff01;” 当输入的name存在于数据库db_data但密码不正…

Qt应用开发(安卓篇)——调用ioctl、socket等C函数

一、前言 在 Qt for Android 中没办法像在嵌入式linux中一样直接使用 ioctl 等底层函数&#xff0c;这是因为因为 Android 平台的安全性和权限限制。 在 Android 中&#xff0c;访问设备硬件和系统资源需要特定的权限&#xff0c;并且需要通过 Android 系统提供的 API 来进行。…

自定义SpringBoot启动图标

在SpringBoot项目的resources目录下创建banner.txt文件 在https://www.bootschool.net/网站上复制Ascll艺术字&#xff08;图&#xff09;粘贴到banner.txt中保存。 启动项目就会加载 可以修改颜色&#xff0c;和版本号 ${application.version} 输出版本 ${spring-boot.v…

HubSpot是如何通过社交媒体与用户建立互动?

HubSpot善于利用社交媒体平台&#xff0c;与用户建立深度互动&#xff0c;增强用户对品牌的参与感与黏性。以下是HubSpot在社交媒体上建立互动的关键策略&#xff1a; 1. 及时回应用户评论&#xff1a;建立积极互动氛围 HubSpot注重在社交媒体上及时回应用户的评论。无论是表…

用的到的linux-文件移动-Day2

前言&#xff1a; 在上一节&#xff0c;我们复习了cd大法和创建生成文件和文件夹的方法&#xff0c;介绍了一些“偷懒”&#xff08;高效&#xff09;的小技巧&#xff0c;本节&#xff0c;我们一起来探讨下&#xff0c;我们对文件移动操作时有哪些可以偷懒的小技巧~ 一、复制…

引领AI创意教育新浪潮,瑞云AIGC实训平台解决方案来了

过去的2023年&#xff0c;AI&#xff08;人工智能&#xff09;成为了年度科技圈关键词&#xff0c;各行各业都在AI化&#xff0c;据统计&#xff0c;AIGC市场规模预计到2030年将达到万亿级别&#xff0c;这不仅是市场的趋势&#xff0c;更是创新的机遇。 教育行业更是如此&…

【网络基础】网络协议传输层UDP和TCP

UDP 解包和分用 解包&#xff08;解析数据包&#xff09; 捕获数据包&#xff1a;首先&#xff0c;接收端的网络栈捕获UDP数据包。检查目的端口&#xff1a;接收端检查数据包头部的目的端口&#xff0c;以确定哪个应用程序应该接收该数据包。验证校验和&#xff1a;接收端可能…

阿赵UE学习笔记——14、LOD

阿赵UE学习笔记目录   大家好&#xff0c;我是阿赵。   继续学习虚幻引擎的用法。这次看看虚幻引擎的Level Of Detail(LOD)的用法。 一、测试场景准备 用植物系统&#xff0c;在地形上面刷了好多草&#xff1a; 这个时候看一下网格&#xff0c;会发现网格比较多和密集。 …