gpt4 book ai didi

python - 绘制 groupby pandas 的 groupby

转载 作者:行者123 更新时间:2023-12-01 00:18:42 28 4
gpt4 key购买 nike

数据是一个时间序列,许多成员 ID 与许多类别相关联:

data_df = pd.DataFrame({'Date': ['2018-09-14 00:00:22',
'2018-09-14 00:01:46',
'2018-09-14 00:01:56',
'2018-09-14 00:01:57',
'2018-09-14 00:01:58',
'2018-09-14 00:02:05'],
'category': [1, 1, 1, 2, 2, 2],
'member': ['bob', 'joe', 'jim', 'sally', 'jane', 'doe'],
'data': ['23', '20', '20', '11', '16', '62']})

大约有 50 个类别,30 个成员,每个类别大约有 1000 个数据点。

我正在尝试为每个类别绘制一个图。

通过对每个类别进行子集化,然后通过以下方式进行绘图:

fig, ax = plt.subplots(figsize=(8,6))
for i, g in category.groupby(['memeber']):
g.plot(y='data', ax=ax, label=str(i))

plt.show()

这对于单个类别来说效果很好,但是,当我尝试使用 for 循环对每个类别重复此操作时,它不起作用

tests = pd.DataFrame()
for category in categories:
tests = df.loc[df['category'] == category]
for test in tests:
fig, ax = plt.subplots(figsize=(8,6))
for i, g in category.groupby(['member']):
g.plot(y='data', ax=ax, label=str(i))

plt.show()

产生“AttributeError:'str'对象没有属性'groupby'”错误。

我想要的是一个循环,为每个类别吐出一个图表,并将所有成员的数据绘制在每个图表上

最佳答案

创建数据框

import pandas as pd

data_df = pd.DataFrame({'Date': ['2018-09-14 00:00:22',
'2018-09-14 00:01:46',
'2018-09-14 00:01:56',
'2018-09-14 00:01:57',
'2018-09-14 00:01:58',
'2018-09-14 00:02:05'],
'category': [1, 1, 1, 2, 2, 2],
'member': ['bob', 'joe', 'jim', 'sally', 'jane', 'doe'],
'data': ['23', '20', '20', '11', '16', '62']})

然后[评论后编辑]

import matplotlib.pyplot as plt
import numpy as np

subplots_n = np.unique(data_df['category']).size
subplots_x = np.round(np.sqrt(subplots_n)).astype(int)
subplots_y = np.ceil(np.sqrt(subplots_n)).astype(int)

for i, category in enumerate(data_df.groupby('category')):
category_df = pd.DataFrame(category[1])
x = [str(x) for x in category_df['member']]
y = [float(x) for x in category_df['data']]
plt.subplot(subplots_x, subplots_y, i+1)
plt.plot(x, y)
plt.title("Category {}".format(category_df['category'].values[0]))

plt.tight_layout()
plt.show()

产量

pandas groupby subplots

请注意,这也很好地照顾了像这样的更大的群体

data_df2 = pd.DataFrame({'category': [1, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 5, 5],
'member': ['bob', 'joe', 'jim', 'sally', 'jane', 'doe', 'ric', 'mat', 'pip', 'zoe', 'qui', 'quo', 'qua'],
'data': ['23', '20', '20', '11', '16', '62', '34', '27', '12', '7', '9', '13', '7']})

pandas groupby subplots

关于python - 绘制 groupby pandas 的 groupby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59111486/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com