如何在pandas中将时间作为x轴绘制图表

10
我正在尝试使用pandas绘制一个数据框。我使用的csv文件是:
Time,Total cpu%,Used mem(k),Cache mem(k),Net mem Used%,Total mem Used%,Swap mem(%),process1 cpu%,process1 mem%,
4:19:25,12.5,885324,1249960,38.38,38.38,0,6.2,34.7
4:19:28,0.4,885460,1249804,38.39,38.39,0,5.3,34.7
4:19:31,1.8,885700,1249528,38.4,38.4,0,5,34.7
4:19:34,0.7,885700,1249528,38.4,38.4,0,5.3,34.7
4:19:37,0.4,885708,1249528,38.4,38.4,0,5.3,34.7
4:19:40,2.1,885704,1249528,38.4,38.4,0,5.3,34.7
4:19:43,0.4,885704,1249528,38.4,38.4,0,5,34.7
4:19:47,0.7,885700,1249528,38.4,38.4,0,5.3,34.7
4:19:50,13.8,885704,1249528,38.4,38.4,0,16,34.7

我的代码到目前为止是:
import pandas as pd
import matplotlib.pyplot as plt

# create dataframe
df = pd.read_csv('sample_csv.csv')

# select only cpu columns
cpu_columns = ['Total cpu%', 'process1 cpu%']

# dataframe from cpu columns
df1 = df[cpu_columns]

我想在X轴上绘制这个数据框中的所有时间值。 因此,我从“Time”列中创建了一个列表,并将其设置为x轴的值,如下所示:
x_axis = df["Time"].values

# plot dataframe
df1.plot(x=df["Time"])
plt.show()

以下是我目前能够获取到的图表: cpu usage graph 所以X轴的标签显示为“时间”。我如何在X轴上显示“时间”列中的时间值?
2个回答

8
似乎你的问题可能与时间存储方式有关。 如果它们是 timedatetime 类型,则以下内容应该适合您。
将 Time 设置为索引,然后简单地调用 plot 即可。 Pandas 默认将索引设置为 x 轴。
df.Time = df.Time.dt.time
df.set_index('Time').plot()

然而,从你的代码来看,它们不是日期时间。我们可以首先将它们作为日期时间传递,然后再转换为时间(如果需要)。使用pd.to_datetime可以进行此操作,如下所示:

df.Time = pd.to_datetime(df.Time).dt.time
df.set_index('Time').plot()

注意:默认情况下,将使用今天的日期添加到日期时间中。但是,在转换为时间数据类型时,此日期会被删除。


6
您可以这样做:
df["Time"] = pd.to_datetime(df['Time'])
df.plot(x="Time", y=["Total cpu%", "process1 cpu%"])
plt.show()

输出: 在这里输入图片描述


是否有可能显示最大数量的x轴标签,如果不是全部的话?如上图所示,只显示了少数时间值。 - Sumedh Junghare
你说的“maximum”是什么意思? - Joe
X轴刻度的数量非常少。是否有可能显示更多的X轴刻度?并且在图表上显示的X轴刻度数量是否有限制? - Sumedh Junghare
FutureWarning: Passing timedelta64-dtype data is deprecated, will raise a TypeError in a future version - gies0r

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接