使用matplotlib对相同的x轴绘制其他数据帧列条件下的列值

时间:2018-06-19 05:40:49

标签: python python-3.x matplotlib

我的数据框有600行,形状为:

rpttime         metric          value
25/4/2018 15:45 UTIL_CPU        1.5
25/4/2018 15:44 IDLE            74
25/4/2018 15:41 REC_BYTES_S     0
25/4/2018 15:47 ENT_CPU         100
25/4/2018 15:44 ENT_CORE        1
25/4/2018 15:48 TRANS_BYTES     92
25/4/2018 15:43 PINNED          5425
25/4/2018 15:48 PAGING_PAG      0
25/4/2018 15:48 IOPS_IN         NULL
25/4/2018 15:47 TRANS_BYTES_S   23484
25/4/2018 15:43 PAGE_OUT        0
25/4/2018 15:42 IOPS_OUT        10

我想绘制"值"的线图。 y轴上的列与#34; rpttime"在x轴上作为列中每个项目的时间序列" metric"。该列中有大约20个单独的项目" metric"。 "值"中有一些NULL值。对于"值"中的每个NULL值,要省略的行是要省略的行。柱。对于" metric"的每个单独项目,至少有一个NULL值。柱。这20个单独项目的所有线图都绘制在一个图表中。如何处理?

2 个答案:

答案 0 :(得分:1)

如果您希望为每个metric - 值绘制单独的行,则首先应groupby指标:

grpd = df.groupby('metric')

然后,您可以迭代创建的组,根据rpttime绘制每组值:

for name, data in grpd:
    plt.plot(data.rpttime.values, data.value.values, 'x-', label = name)
plt.legend()

注意:您提供的数据不足以获得令人印象深刻的结果,因为公制中没有多个等于:

enter image description here

PS:用

导入数据
df = pd.read_fwf('wherever/file/may/roam', colspecs=[(None, 15), (16, 31), (32, None)])
df.rpttime = pd.to_datetime(df.rpttime)

PPS:NA自动处理,即:没有绘制NULL值(参见IOPS_IN

答案 1 :(得分:0)

您可以直接使用df.dropna()删除绘制时不需要的Null

import pandas as pd

# Original data frame
>>>df_origin

Original dataframe with Null values

# Drop NaN values using dropna
df_to_be_plotted = df_origin.dropna()
>>> df_to_be_plotted

enter image description here