【发布时间】:2018-11-08 07:21:46
【问题描述】:
我想改进我以前的鳕鱼,以便可以一次绘制三个馅饼。
<class 'str'>
data = a.groupby(i)['income'].sum()
AttributeError: 'list' 对象没有属性 'groupby'
数据是这样的:
ta tb tc ... income
1 2011 a ... 1352.23
1 2012 c ... 706.87
2 2011 b ... 3618.04
2 2012 c ... 11745.42
3 2013 a ... 345.98
我想要的是这样的:
df = pd.read_csv('e:/test_csv', low_memory=False)
a = ['ta', 'tb', 'tc']
for i in a:
print(type(i))
data = df.groupby(i)['income'].sum()
data.plot.pie(autopct='%.1f%%')
plt.show()
之前的代码:但是不知怎么得到了AttributeError
df = pd.read_csv('e:/test_csv', low_memory=False)
data1 = a.groupby('ta')['income'].sum()
data1.plot.pie(autopct='%.1f%%')
data2 = a.groupby('tb')['income'].sum()
data2.plot.pie(autopct='%.1f%%')
data3 = a.groupby('tc')['income'].sum()
data3.plot.pie(autopct='%.1f%%')
plt.show()
【问题讨论】:
-
a没有groupby属性。你期望a是什么? -
groupby是dataframe而不是list的方法。a是一个列表。因此,它会引发错误。您应该将其更改为:data = df.groupby(i)['income'].sum() -
@thx 亚当斯密。我想用更少的代码画3个
pie chart,我在问题末尾添加了细节,请看一下。
标签: python python-3.x pandas for-loop group-by