绘制pandas.core.series.Series

时间:2020-09-18 20:02:37

标签: python pandas matplotlib

如何绘制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)。

1 个答案:

答案 0 :(得分:0)

如果实际上每个ID都需要在同一图中使用4个不同的线图,其中x轴为周,y轴为数值:

week.unstack(0).plot()

如果您希望每行都在不同的子图中,则只需添加subplots = True arg,如下所示:

week.unstack(0).plot(subplots=True)

在这里,unstack(0)函数以给定级别0为最左边的索引(Id)来旋转我们的多索引系列。