Python 使用matplotlib在相同x轴上绘制数据帧其他列的列值
我有一个600行的数据框,形状如下:Python 使用matplotlib在相同x轴上绘制数据帧其他列的列值,python,python-3.x,matplotlib,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 TR
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轴上“值”列与x轴上“时间”列的折线图,作为“度量”列中每个单独项目的时间序列。“公制”一栏中约有20个单独的项目。“value”列中有一些空值需要省略,即“value”列中每个空值都需要省略的行。“度量”列的每个单独项至少有一个空值。这20个单独项目的所有线条图都将绘制在一个图表中。如何实现这一点?您可以直接使用df.dropna()删除打印时不需要的
Null
值
import pandas as pd
# Original data frame
>>>df_origin
如果您希望为每个
度量值绘制单独的线,您首先应该groupby
度量值:
grpd = df.groupby('metric')
然后,您可以迭代创建的组,根据rptime
绘制每组值:
for name, data in grpd:
plt.plot(data.rpttime.values, data.value.values, 'x-', label = name)
plt.legend()
注意:您提供的数据不足以获得令人印象深刻的结果,因为度量中没有多重相等:
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
是自动处理的,即:不绘制空值(请参见IOPS_IN
)您是否可以发布一个干净的数据框,其中的行值==NULL,因为由于存在NA和数值,它与发布的数据框不明确?更新了数据框。对于“公制”列的每个单独项目,空值至少出现一次。因此,在绘制序列时是否要忽略rptime
其中值
==NULL?或者用其他值填充它?忽略整行,其中value==Null.rpttime包含字符串,如25/4/2018 15:48,并且dataframe有一个从0开始的索引列,此处未显示。删除Null值是可以的,使用“metric”的单个项绘制列“value”的多个时间序列数据的任何解决方案列。我想您可以从原始数据框查看度量
列中的每个唯一项,根据值
列中的值绘制时间序列。若你们能详细说明绘图部分的问题,这将是有益的
df = pd.read_fwf('wherever/file/may/roam', colspecs=[(None, 15), (16, 31), (32, None)])
df.rpttime = pd.to_datetime(df.rpttime)