将时间数据 CSV 拆分为不同的年份并将它们绘制在一个图表中

Posted

技术标签:

【中文标题】将时间数据 CSV 拆分为不同的年份并将它们绘制在一个图表中【英文标题】:split a time data CSV into different years and plot them in one graph 【发布时间】:2020-04-27 14:20:13 【问题描述】:

我有一个 157619 行的数据表。它包含 2002 年至 2019 年时间跨度内的每小时温度测量值。我想在时间轴(x 轴)上绘制一个年份图,然后在同一张图上绘制所有年份。对于这项任务,我正在考虑将数据拆分为包含每一年的不同 DataFrames/Series,然后将它们绘制成图表。数据如下所示:

Produkt_Code  SDO_ID   Zeitstempel  Wert  Qualitaet_Niveau  Qualitaet_Byte
0       TE100_MN002    4466  200201010000   4.5                 1            -999
1       TE100_MN002    4466  200201010100   4.5                 1            -999
2       TE100_MN002    4466  200201010200   4.5                 1            -999
3       TE100_MN002    4466  200201010300   4.5                 1            -999
4       TE100_MN002    4466  200201010400   4.5                 1            -999
...             ...     ...           ...   ...               ...             ...
157613  TE100_MN002    4466  201912311900   6.3                 0               1
157614  TE100_MN002    4466  201912312000   6.3                 0               1
157615  TE100_MN002    4466  201912312100   6.3                 0               1
157616  TE100_MN002    4466  201912312200   6.3                 0               1
157617  TE100_MN002    4466  201912312300   6.3                 0 

所以我只需要时间作为索引和温度,可以在 Wert 列中找到。我应用了 read_csv 来简化数据:

data_100 = pd.read_csv(data_dir_100, parse_dates=True, usecols=["Wert", "Zeitstempel"], index_col="Zeitstempel")

输出如下:

                         Wert
Zeitstempel           
    2002-01-01 00:00:00   4.5
    2002-01-01 01:00:00   4.5
    2002-01-01 02:00:00   4.5
    2002-01-01 03:00:00   4.5
    2002-01-01 04:00:00   4.5
    ...                   ...
    2019-12-31 19:00:00   6.3
    2019-12-31 20:00:00   6.3
    2019-12-31 21:00:00   6.3
    2019-12-31 22:00:00   6.3
    2019-12-31 23:00:00   6.3

我是初学者,不知道如何继续

给出的第一个解决方案的结果: [

【问题讨论】:

【参考方案1】:

如果我理解正确,您可以调整这个 sn-p 来解决您的问题

import pandas as pd
import matplotlib.pyplot as plt

data_dict = 
'Zeitstempel': ['2002-01-01 00:00:00','2002-01-01 01:00:00',
'2002-01-01 03:00:00','2002-01-01 04:00:00','2019-12-31 19:00:00',
'2019-12-31 20:00:00', '2019-12-31 21:00:00','2019-12-31 22:00:00',
'2019-12-31 23:00:00'],
'Temperatur':[6.7,6.6,6.7,6.7,10.7,10.7,10.7,10.7,10.7]


df = pd.DataFrame(data_dict)

df[["Zeitstempel"]] = df[["Zeitstempel"]].apply(pd.to_datetime)
df.plot(kind='bar',x='Zeitstempel',y='Temperatur')
plt.show()

【讨论】:

感谢您的回答。但我不是在寻找平均温度,只是在绘制每年的每小时数据。我试图用你的代码解决问题,但我得到了错误:ValueError: DataFrame constructor not properly called! 如果可能的话,你能分享一下给你这个错误的代码 sn-p 吗? 我已经修改了我的答案。我很好奇这个情节是怎么形成的。如果您可以分享图表的屏幕截图:) 你可以在问题中找到截图:) 我认为您在 y 轴上使用了错误的列名。您的温度列实际上标记为“Wert”而不是“温度”。尝试使用正确的列名,看看是否能解决您的问题

以上是关于将时间数据 CSV 拆分为不同的年份并将它们绘制在一个图表中的主要内容,如果未能解决你的问题,请参考以下文章

拆分日期并将日期、月份、年份保存在不同的列中

如何按百分比将 CSV 数据集拆分为训练集和测试集,并将拆分后的数据集与 pandas 一起保存到本地文件夹中? [复制]

从.csv文件拆分数据并绘制图表

按年份过滤大型数据集

按年份和 ID 拆分 txt 文件,并将每个新的 txt 文件重命名为“Year_ID.txt”

将字符串更改为日期的问题