如何绘制pandas.core.series.Series
的线图?
示例:
Id Week
01 36 155
37 145
38 207
02 36 116
37 98
38 99
03 36 61
37 29
04 36 162
37 190
38 190
05 36 26
37 35
38 20
06 36 57
37 40
38 15
Name: num, dtype: int64
所以所有id都只有一行,而Week是X,num是Y?
我尝试过:
week.plot(x='Week', y='num')
plt.show()
但是它只画了一条线,而底部的(01, 36) (02, 38) (04, 38) (06, 37)
和X则作为X绘制。要制作该系列,我使用了以下内容:
week = df.groupby(['Id', 'Week']).num.count()
这是使代码完全相同的代码:
import pandas as pd
import matplotlib.pyplot as plt
import random
i = [1, 2, 3, 4, 5, 6]
w = [36, 37, 38]
n = 1
iD = []
wEek = []
nUm = []
for o in range(250):
iD.append(random.choice(i))
wEek.append(random.choice(w))
nUm.append(n)
df = pd.DataFrame({'Id': iD, 'Week': wEek, 'num': nUm})
week = df.groupby(['Id', 'Week']).num.count()
week.plot()
plt.show()
情节看起来像这样: The plot
我希望所有Id
都有一行,每个num.count()
(X)的值分别为Week
(Y)。
答案 0 :(得分:0)
如果实际上每个ID都需要在同一图中使用4个不同的线图,其中x轴为周,y轴为数值:
week.unstack(0).plot()
如果您希望每行都在不同的子图中,则只需添加subplots = True arg,如下所示:
week.unstack(0).plot(subplots=True)
在这里,unstack(0)函数以给定级别0为最左边的索引(Id)来旋转我们的多索引系列。