不知道为什么:AttributeError:'list'对象没有属性'groupby'

时间:2018-11-08 07:21:47

标签: python python-3.x pandas for-loop group-by

在我的代码中,type(i)str,下面仍有回溯。尚未找到原因,也没有类似的问题,有人可以提供帮助吗?谢谢。

  

<class 'str'>
  数据= a.groupby(i)['收入'] .sum()
  AttributeError:“列表”对象没有属性“分组依据”

数据如下:

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 = a.groupby(i)['income'].sum()
    data.plot.pie(autopct='%.1f%%')
plt.show()

起初,我有3个饼图有3个类似的代码,然后我想知道是否仅用1个代码就可以做到。

代码:

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()

3 个答案:

答案 0 :(得分:1)

您可以删除for循环并改为执行此操作:

data = df.groupby(['ta', 'tb', 'tc'])['income'].sum()

然后绘制它。

答案 1 :(得分:0)

在熊猫中groupby的正确用法是:

data.groupby(['col1', 'col2'])['col3'].sum()

您应该有:

data = df.groupby(['ta', 'tb', 'tc'])['income'].sum()

Official Documentation以供参考。

答案 2 :(得分:0)

<div class="row"> <div class=col-md-2></div> <div class="col-md-8"> <input type="text" class="form-control" /> </div> <div class="col-md-2" style="text-align:left;"> <button class="btn btn-default" type="submit"><i class="glyphicon glyphicon-search"></i></button> </div> </div> df.groupby(i)一起用于3个单独的饼图:

plt.figure()