首页 > 编程问答 >使用 Python 中的 Matplotlib 和时间序列索引生成奇怪的图

使用 Python 中的 Matplotlib 和时间序列索引生成奇怪的图

时间:2024-08-07 04:28:33浏览次数:14  
标签:python matplotlib datetime time-series

我正在尝试使用 Python 中的 Matplotlib 绘制一些时间序列数据,但生成的图看起来很奇怪,我不明白为什么。这是我正在使用的代码:

filtered_df = df.loc[(df.index > '2010-01-01') & (df.index <= '2010-01-08')] 
# Plotting the data fig, axs = plt.subplots(1, 1, figsize=(12, 5)) 
axs.plot(filtered_df.index, filtered_df['AEP_MW']) 
axs.set_ylabel("Temp in Fahrenheit")
axs.set_xlabel("Date")
plt.show()

索引是一个时间序列,我希望该图显示指定日期范围内 AEP_MW 的值。但是,生成的图并不符合预期。

您可以在 Kaggle 上查看完整的笔记本 此处

我尝试过滤 DataFrame 以仅包含“2010-01-02”之间的日期和“2010-01-08”。

我验证了绘图设置和标签以确保它们与数据匹配。


代码中存在一些问题导致生成的绘图出现问题:

  1. 日期过滤器不正确: 正在使用字符串比较来过滤日期,这可能无法按预期工作。
  2. x 轴标签: 正在绘制时间序列数据,但将 x 轴标签设置为“日期”,这可能会产生误导。

以下是更正后的代码:

import pandas as pd
import matplotlib.pyplot as plt

# 将日期列转换为日期时间对象
df['Date'] = pd.to_datetime(df['Date'])
df = df.set_index('Date')

# 使用正确的日期时间切片过滤数据
filtered_df = df['2010-01-02':'2010-01-08']

# 绘制数据
fig, axs = plt.subplots(1, 1, figsize=(12, 5))
axs.plot(filtered_df.index, filtered_df['AEP_MW'])
axs.set_ylabel("Temp in Fahrenheit")
axs.set_xlabel("Date")
plt.show()

解释:

  1. 将日期列转换为日期时间对象:
df['Date'] = pd.to_datetime(df['Date'])

此行将“日期”列转换为日期时间对象,这允许我们执行正确的日期时间切片。

  1. 将“日期”列设置为索引:
df = df.set_index('Date')

我们将“日期”列设置为数据帧的索引。这使我们能够使用基于日期时间的切片轻松选择数据子集。

  1. 使用正确的日期时间切片过滤数据:
filtered_df = df['2010-01-02':'2010-01-08']

此行使用基于切片的索引选择“2010-01-02”和“2010-01-08”之间的日期。在 pandas 中,当索引为日期时间类型时, start_date:end_date 表示法会选择 start_date end_date 之间的所有日期,包括边界。

通过进行这些更改,的代码现在应该会生成时间序列数据的正确绘图。

标签:python,matplotlib,datetime,time-series
From: 78831091

相关文章

  • Dash Python:通过 @callback 链接选项卡
    这个问题是下面链接的问题的扩展:DashPython:布局函数中的@Callback未被调用我有一个简单的数据框:importpandasaspddf=pd.DataFrame({'Class1':[1,2,3,4,5],'Class2':[6,7,8,9,10]})我创建了一个数据提取函数,该函数根......
  • Xticks 标签贴在我的绘图 matplotlib 的右上角?
    我的顶部xticks标签卡在matplotlit图的右上角。如何将它们设置在时间序列的正确位置?底部的xtick标签很好。我只想将顶级的与他们匹配。我怎样才能做到这一点?请参阅下面的代码和图像。importmatplotlib.pyplotasplttime_zones=pd.to_datetime(["2022-07-312:00",......
  • 如何在 Python 中使用 Langchain 返回已使用的上下文以进行回答
    我已经构建了一个像这样的RAG系统:defformat_docs(docs):return"\n\n".join(doc.page_contentfordocindocs)response_schemas=[ResponseSchema(name="price",description="Price",type="float"),ResponseSchema(......
  • 如何从 python socket.sendmsg 获取套接字 Tx 时间戳
    在阅读此处、此处和此处时,我发现在Linux系统上,您可以通过设置套接字选项来请求接收和传输的数据包的时间戳。我目前可以使用SO_TIMESTAMPNS和SO_TIMESTAMPING来通过recvmsg获取Rx时间戳。使用sendmsg我不知道......
  • Python 类型注释中“|”两边是否“强制”使用空格?
    “Union运算符”|没有出现在PEP8的其他建议中的“始终被空格包围的运算符”列表中因此,应该可以将其样式设置为类似于算术运算符,并删除圆括号、方括号内的空格,或者如果该运算符比表达式中的其他运算符具有更高的优先级。在我看来,删除空格可以提高表达式......
  • ArcPro (3.2+) Python 脚本工具中从 .atbx Toolbox 相对导入本地模块
    我设置了一个库和关联的ArcGISToolbox,以便:/root├──Toolbox.atbx├──mylib│└──my_function.py├──my_tools│└──my_gp_script.py我将代码存储库的开发克隆保存在公司共享服务器上的一个位置,并在GitHub上托管一份副本。当我进行更新时,我会......
  • Python vs. R:揭秘机器学习领域的双璧
    一、引言1.1背景介绍随着大数据和人工智能技术的飞速发展,机器学习已经成为了一个热门领域。在机器学习领域,Python和R是两种广泛使用的编程语言。Python因其简洁易读的语法和强大的库支持,成为了最受欢迎的编程语言之一。而R则以其强大的统计分析和数据可视化能力,在统计学......
  • Windows10 安装编译后的 pysqlcipher3-1.2.1 基于 Python 3.8.10
    Windows10安装编译后的pysqlcipher3-1.2.1基于Python3.8.10本文主要是将直接安装编译后的文件,不一定的成功,但是可以尝试使用,若无法直接安装,请参考编译过程,自行编译安装,编译过程见这里安装pysqlcipher3这里用32位举例因为64位安装完全相同,只需要把对应的位数换成64......
  • 【Python】Python基础语法知识点汇集
    Python是一种高级的、解释型的编程语言,以其清晰的语法和代码可读性而闻名。本篇文章将汇集Python编程的基础语法知识点,为初学者提供一个全面的学习指南。......
  • 启动Python 的内置服务器访问本地图片
    要使用Python的内置服务器访问本地图片并正确地显示在浏览器中,你需要将图片文件放在内置服务器的根目录或其子目录中。以下是详细步骤:1.将图片文件复制到服务器根目录:例如,将zheng.jpeg文件复制到一个特定的目录中(例如,你的项目目录)。假设你将图片文件复制到C:\Users\panda......