Гистограмма Groupby и Plot в Python - PullRequest
0 голосов
/ 16 сентября 2018

Я хочу построить гистограмму продаж за период года.ось X как 'year' и ось Y как сумма еженедельных продаж в год.При построении я получаю 'KeyError: 'year'.Я думаю, это потому, что 'year' стал индексом во время группировки по.

Ниже приведен пример содержимого из файла csv:

Store   year    Weekly_Sales
1   2014    24924.5
1   2010    46039.49
1   2015    41595.55
1   2010    19403.54
1   2015    21827.9
1   2010    21043.39
1   2014    22136.64
1   2010    26229.21
1   2014    57258.43
1   2010    42960.91

Ниже приведен код, который я использовал для группировки по

storeDetail_df = pd.read_csv('Details.csv')
result_group_year= storeDetail_df.groupby(['year'])
total_by_year = result_group_year['Weekly_Sales'].agg([np.sum])

total_by_year.plot(kind='bar' ,x='year',y='sum',rot=0)

Обновлен код и ниже вывод: Вывод DataFrame:

   year          sum
0  2010  42843534.38
1  2011  45349314.40
2  2012  35445927.76
3  2013         0.00

ниже график, который я получаю: enter image description here

Ответы [ 3 ]

0 голосов
/ 16 сентября 2018

Возможно, вы захотите попробовать это

storeDetail_df = pd.read_csv('Details.csv')
result_group_year= storeDetail_df.groupby(['year'])['Weekly_Sales'].sum()

result_group_year = result_group_year.reset_index(drop=False)
result_group_year.plot.bar(x='year', y='Weekly_Sales')
0 голосов
/ 16 сентября 2018

При чтении файла csv необходимо использовать пробел в качестве разделителя как delim_whitespace=True, а затем сбросить индекс после суммирования Weekly_Sales.Ниже приведен рабочий код:

storeDetail_df = pd.read_csv('Details.csv', delim_whitespace=True)
result_group_year= storeDetail_df.groupby(['year'])
total_by_year = result_group_year['Weekly_Sales'].agg([np.sum]).reset_index()
total_by_year.plot(kind='bar' ,x='year',y='sum',rot=0,  legend=False)

Выход

enter image description here

0 голосов
/ 16 сентября 2018

В случае, если год составляет ваш индекс из-за группировки по команде.Вы должны удалить его как индекс, прежде чем строить.Попробуйте

total_by_year = total_by_year.reset_index(drop=False, inplace=True)
...