Python 图1.core.series.series

Python 图1.core.series.series,python,pandas,matplotlib,Python,Pandas,Matplotlib,如何绘制熊猫.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

如何绘制熊猫.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都有一行,周是X,num是Y

我试过:

week.plot(x='Week', y='num')
plt.show()
但它只绘制了一条线,并且底部的
(01,36)(02,38)(04,38)(06,37)
为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()
情节是这样的:


我希望所有的
Id
s都有一条单独的线,每个
周的值为
num.count()
(Y)。

如果您确实希望每个Id在同一个图形中有4个不同的线图,X轴为周,Y轴为数值:

week.unstack(0).plot()
如果希望每一行包含在不同的子地块中,只需添加子地块=True arg,如下所示:

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

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

有什么具体问题吗?请看,@AMC我现在已经编辑了我的帖子,是unstack做的。但是我不记得我以前用过unstack,但是我以前做过这种类型的绘图。也许该睡觉了……:)