我是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等)。我怎么能用简单的循环呢?在
从以下交互模式开始
您应该能够开始使用
^{pr2}$DataFrame
并发现可以直接用于数据的函数。要按ID获取公交车列表,只需执行以下操作:将1替换为您需要的公共汽车的ID。这将返回一个sub-
DataFrame
。要想获得BusID 1和他们的发动机工作时间:您可以通过
将所需数据分组后,可以开始绘制:
文件有更多的解释。请参考http://pandas.pydata.org/pandas-docs/stable/。在
如果你真的想用熊猫,记住这个简单的事情:永远不要使用循环。循环是不可伸缩的,所以尝试使用内置函数。首先让我们读一下你的数据帧:
这是我回答的不足之处,我不知道如何有效地管理约会。因此,创建一个名为
day
的列,其中包含来自UtcTime
的日期(我将使用类似于data['day'] = data['UtcTime'].apply(lambda x: x[:10])
的apply方法,但它是一个隐藏的循环,所以不要这样做!)在然后,要只获取单个总线的数据,请尝试一种切片方法:
^{pr2}$最后使用groupby函数:
或者,如果您不需要在不同的数据帧中分离总线,您可以对整个数据使用
groupby
:相关问题 更多 >
编程相关推荐