5

我有这个 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 日期值,而是行号

4

4 回答 4

7

据我记得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)
于 2017-01-04T14:25:33.590 回答
1

像plot.lineplot.scatter这样的 pandas 绘图例程可以采用列名xy参数:

例如

>>> lines = df.plot.line(x='pig', y='horse')
>>> ax1 = df.plot.scatter(x='length',
...                       y='width',
...                       c='DarkBlue')
于 2021-01-06T20:22:44.340 回答
0

要相互绘制列,您可以使用pairplot

于 2021-05-20T04:09:23.250 回答
0

查看 seaborn 的“pairplot”和 pandas “scattermatrix”

于 2022-01-22T07:30:28.853 回答