用Pandas绘制两个变量之间的关系

2024-10-02 22:35:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手,但我知道pandas的有用性,因此我想问一下是否有人可以帮助我使用pandas来解决以下问题。在

我有一个关于总线的数据集,它看起来像:

BusModel;BusID;ModeName;Value;Unit;UtcTime
Alpha;0001;Engine hours;985;h;2016-06-22 19:58:09.000
Alpha;0001;Engine hours;987;h;2016-06-22 21:58:09.000
Alpha;0001;Engine hours;989;h;2016-06-22 23:59:09.000
Alpha;0001;Fuel consumption;78;l;2016-06-22 19:58:09.000
Alpha;0001;Fuel consumption;88;l;2016-06-22 21:58:09.000
Alpha;0001;Fuel consumption;98;l;2016-06-22 23:59:09.000

该文件是.csv格式,用分号(;)分隔。请注意,我想根据UtcTime“计算每天的平均值”来绘制“发动机小时数”和“燃油消耗量”之间的关系。此外,我想为数据集中的所有总线绘制图形(不仅0001,还有00020003等)。我怎么能用简单的循环呢?在


Tags: 数据alphapandasvalue绘制engine总线fuel
2条回答

从以下交互模式开始

import pandas as pd

df = pd.read_csv('bus.csv', sep=";", parse_dates=['UtcTime'])

您应该能够开始使用DataFrame并发现可以直接用于数据的函数。要按ID获取公交车列表,只需执行以下操作:

^{pr2}$

将1替换为您需要的公共汽车的ID。这将返回一个sub-DataFrame。要想获得BusID 1和他们的发动机工作时间:

>>> bus1[bus1.ModeName == "Engine hours"]

您可以通过

>>> bus1.Value.describe()

将所需数据分组后,可以开始绘制:

>>> bus1[bus1.ModeName == "Engine hours"].plot()
>>> bus1[bus1.ModeName == "Fuel consumption"].plot()
>>> plt.show()

文件有更多的解释。请参考http://pandas.pydata.org/pandas-docs/stable/。在

如果你真的想用熊猫,记住这个简单的事情:永远不要使用循环。循环是不可伸缩的,所以尝试使用内置函数。首先让我们读一下你的数据帧:

import pandas as pd
data = pd.read_csv('bus.csv',sep = ';')

这是我回答的不足之处,我不知道如何有效地管理约会。因此,创建一个名为day的列,其中包含来自UtcTime的日期(我将使用类似于data['day'] = data['UtcTime'].apply(lambda x: x[:10])的apply方法,但它是一个隐藏的循环,所以不要这样做!)在

然后,要只获取单个总线的数据,请尝试一种切片方法:

^{pr2}$

最后使用groupby函数:

data_bus1[['Modename','Value','day']].groupby(['ModeName','day'],as_index = False).mean()

或者,如果您不需要在不同的数据帧中分离总线,您可以对整个数据使用groupby

data[['BusID','ModeName','Value','day']].groupby(['BusID','ModeName','day'],as_index = False).mean()

相关问题 更多 >