не знаю почему: AttributeError: у объекта 'list' нет атрибута 'groupby' - PullRequest
0 голосов
/ 08 ноября 2018

В моем коде type(i) равно str, все еще есть трассировка ниже. Пока не нашли причину, ни похожего вопроса, может кто-нибудь предложить помощь? спасибо.

<class 'str'>
data = a.groupby (i) ['доход']. сумма ()
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 = 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 голосов
/ 08 ноября 2018

Вы можете удалить петлю for и сделать это вместо:

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

Тогда постройте его.

0 голосов
/ 08 ноября 2018

Используйте df.groupby(i) с plt.figure() для 3 отдельных круговых диаграмм:

a = ['ta', 'tb', 'tc']
for i in a:
    d = df.groupby(i)['income'].sum()
    plt.figure()
    d.plot.pie(autopct='%.1f%%')
0 голосов
/ 08 ноября 2018

Правильное использование groupby в пандах таково:

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

Вы должны были:

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

Официальная документация для ссылки.

...