python - 绘制 pandas.core.series.Series
问题描述
我怎样才能画线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。为了制作系列,我使用了以下内容:
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()
每个Week
(X) 的 (Y) 值。
解决方案
如果您实际上想要在同一图中为每个 id 绘制 4 个不同的线图,其中 x 轴为周,y 轴为数值:
week.unstack(0).plot()
如果您希望每一行在不同的子图中,只需像这样添加 subplots=True arg:
week.unstack(0).plot(subplots=True)
在这里,unstack(0) 函数以给定级别 0 为最左边的索引 (Id) 旋转我们的多索引系列。
推荐阅读
- excel - Excel中的日期反转
- powershell - 通过递归移动文件和文件夹来合并文件夹
- jquery - 忽略 JS ajax 请求中的 403 错误并继续响应
- python - 向量化索引数组和要添加的另一个元素数组中元素的条件总和
- c# - 如何针对另一个匹配的字典键/值查询嵌套对象字典
- python - 整数和递归
- node.js - node.js puppeteer 启动回调
- flutter - 使用 Getx Flutter 按 ID 获取产品
- windows - 我可以在运行 Windows/WSL2 的远程主机上的容器中使用 VS Code 进行开发吗?
- excel - 在 Excel 中按行生成随机(“是”、“否”)并使 10% 的随机行具有值“是”,其余为“否”值