Quiero trazar un gráfico de barras para las ventas durante el período del año. eje x como 'year' y eje y como suma de ventas semanales por año. Mientras trazo, obtengo 'KeyError: 'year'. Supongo que es porque 'year' se convirtió en índice durante el grupo por.

A continuación se muestra el contenido de muestra del archivo 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

A continuación se muestra el código que solía agrupar por

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)

Actualizó el Código y a continuación se muestra el resultado: Salida del marco de datos:

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

A continuación se muestra el gráfico que estoy obteniendo: ingrese la descripción de la imagen aquí

1
user1882624 16 sep. 2018 a las 18:57

3 respuestas

La mejor respuesta

Mientras leía el archivo csv, tenía que usar el espacio en blanco como delimitador como delim_whitespace=True y luego restablecer el índice después de resumir el Weekly_Sales. A continuación se muestra el código de trabajo:

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)

Salida

enter image description here

3
Sheldore 16 sep. 2018 a las 16:16

Tal vez quieras probar esto

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
Ravi 16 sep. 2018 a las 16:05

En caso de que sea año su índice debido al grupo por comando. debe eliminarlo como índice antes de trazar. Tratar

total_by_year = total_by_year.reset_index(drop=False, inplace=True)
0
SaKu. 16 sep. 2018 a las 16:05