将时间数据 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 一起保存到本地文件夹中? [复制]