我有这个df:
CET MaxTemp MeanTemp MinTemp MaxHumidity MeanHumidity MinHumidity revenue events
0 2016-11-17 11 9 7 100 85 63 385.943800 rain
1 2016-11-18 9 6 3 93 83 66 1074.160340 storm
2 2016-11-19 8 6 4 93 87 76 2980.857860
3 2016-11-20 10 7 4 93 84 81 1919.723960 rain-thunderstorm
4 2016-11-21 14 10 7 100 89 77 884.279340
5 2016-11-22 13 10 7 93 79 63 869.071070
6 2016-11-23 11 8 5 100 91 82 760.289260 fog-rain
7 2016-11-24 9 7 4 93 80 66 2481.689270
8 2016-11-25 7 4 1 87 74 57 2745.990070
9 2016-11-26 7 3 -1 100 88 61 2273.413250 rain
10 2016-11-27 10 7 4 100 81 66 2630.414900 fog
其中:
CET object
Mean TemperatureC int64
Mean Humidity int64
Events object
revenue object
dtype: object
我想将所有列相互绘制,以查看它们随时间变化的方式。因此,x轴将是列CET
,y轴将具有其余列。我怎样才能做到这一点?我用过:
plt.figure();
df.plot(kind='line')
plt.xticks(rotation='vertical')
plt.yticks()
pylab.show()
但我只能看到平均温度C和平均湿度。 而且,x轴不是CET日期值,而是行号
答案 0 :(得分:4)
据我记得plot
使用x值的索引。
尝试:
df.set_index('CET').plot()
您应确保所有列都具有数值数据类型。
编辑:
df = df.set_index('CET')
num_cols = ['MaxTemp',
'MeanTemp',
'MinTemp',
'MaxHumidity',
'MeanHumidity',
'MinHumidity',
'revenue']
df[num_cols] = df[num_cols].astype(float)
df[num_cols].plot()
plt.xticks(range(len(df.index)), df.index)
答案 1 :(得分:0)
像 plot.line 或 plot.scatter 这样的 Pandas 绘图例程可以采用 x
和 y
参数的列名:
例如
>>> lines = df.plot.line(x='pig', y='horse')
>>> ax1 = df.plot.scatter(x='length',
... y='width',
... c='DarkBlue')