【发布时间】:2020-03-25 10:43:06
【问题描述】:
数据是一个时间序列,有很多成员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' object has no attribute 'groupby'”错误。
我想要的是一个循环,每个类别输出一个图表,所有成员的数据都绘制在每个图表上
【问题讨论】:
标签: python pandas for-loop matplotlib pandas-groupby