Гистограмма с накоплением Python из сводной / групповой таблицы - PullRequest
2 голосов
/ 07 мая 2020

Это пример данных. Как я могу получить сумму суммы по оси Y с кварталом в сумме, а регион и год по оси X.

Region Year   Quarter  Sum Amount
 A     2016     1       100
                2       80
                3       70
                4       10
       2017     1       90
                2       50
                3       60
                4       30
B      2016     1       120
                2       80
                3       90
                4       20
       2017     2       80
                3       100

1 Ответ

1 голос
/ 07 мая 2020
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import random

# data
random.seed(365)
data = {'Year': [random.choice([2016, 2017]) for _ in range(1000)],
        'Region': [random.choice(['A', 'B']) for _ in range(1000)],
        'Quarter': [random.choice([1, 2, 3, 4]) for _ in range(1000)],
        'Value': [np.random.randint(10) for _ in range(1000)]}

# dataframe
df = pd.DataFrame(data)

# groupby
gb = df.groupby(['Region', 'Year', 'Quarter'])['Value'].sum().unstack()

     Quarter      1   2   3   4
Region  Year                
     A  2016    306 279 221 261
        2017    209 250 292 415
     B  2016    262 296 261 260
        2017    209 349 272 315

# plot
gb.plot.bar(stacked=True)
plt.legend(title='Quarter', loc='center left', bbox_to_anchor=(1, 0.5))
plt.show()

enter image description here

...