gpt4 book ai didi

python - 根据特定列值绘制 pandas 数据框的多行的快速方法

转载 作者:太空宇宙 更新时间:2023-11-03 20:56:09 25 4
gpt4 key购买 nike

我有一个时间序列数据框,看起来有点像:

A = 
date,uuid,diesel,e5,e10
2018-01-31 00:01:06+01,c03c846e-64ec-437f-9a52-9eda8088c4b2,1.239,1.419,1.399
2018-01-31 00:03:06+01,6dc575da-3c85-430c-a17a-6efdae0dcf5a,1.249,1.419,1.399

其中日期是索引并且(可以选择解析为日期时间)。

数据集非常大(>100.000.000 行),包含大约 15.000 个唯一的 uuid

我想绘制每个 uuid(=加油站)的价格(柴油、e10、e5)如何随时间变化的图,或者只是一些随机采样数(如 10 或 100)的图。

目前我正在使用循环执行此操作,但由于 pandas 中的循环非常慢,我想知道是否有更快的矢量化技术:

for count,uuid in enumerate(dataframe.uuid):
x = dataframe.loc[dataframe.uuid == uuid].index
# diesel
ax1.plot(x, dataframe.loc[dataframe.uuid == uuid].diesel)
# e10
ax2.plot(x, dataframe.loc[dataframe.uuid == uuid].e10)
# e5
ax3.plot(x, dataframe.loc[dataframe.uuid == uuid].e5)
if count >= cap-1:
break
plt.show()

编辑:

uuiddate正确分组后,数据集看起来很有希望实现我想要的功能:dataframe.groupby(['uuid','date'] ).sum()[['柴油','e10','e5']]

                                                               diesel   e10     e5
station_uuid date
00006210-0037-4444-8888-acdc00006210 2018-01-01 06:33:06 1.189 1.369 1.389
2018-01-01 06:39:05 1.189 1.329 1.349
2018-01-01 09:39:07 1.189 1.319 1.339
...

我现在如何绘制所有或选定数量的 uuid 随时间的价格变化?

最佳答案

import matplotlib.pyplot as plt

plt.figure(1)

grouped_dfs = dataframe.groupby('uuid')

plt.subplot(311)

grouped_dfs.plot.line(x='date', y='diesel', color='blue')

plt.subplot(312)
grouped_dfs.plot.line(x='date', y='e10', color='red')

plt.subplot(313)
grouped_dfs.plot.line(x='date', y='e5', color='yellow')

plt.show()

没有任何数据可供使用,这就是我想到的解决方案

关于python - 根据特定列值绘制 pandas 数据框的多行的快速方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56017240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com