#python #matplotlib #seaborn
#python #matplotlib #seaborn
Вопрос:
Следующее изображение представляет собой фрейм данных, показывающий иммиграцию с каждого континента в страну. Как я могу построить столбчатый график, показывающий сумму за каждый год, и на каждом столбчатом графике показывать вклад каждого континента, используя разные цвета для каждого континента?
Мой код, который до сих пор меня доставал, выглядит следующим образом:
df_continent = df_can.groupby('Continent').sum()
years = df_continent.columns.tolist()
Ответ №1:
У меня нет четкого примера результата, который вы ожидаете, но я уверен, что вы обнаружите, что первый пример — это просто график ежегодных иммиграционных показателей, сложенных по континентам. Второй пример представляет собой пример композиционного графика для каждого континента по годам.
import pandas as pd
import numpy as np
import io
data = '''
continent 1980 1981 1982 1983 1984
Africa 3951 4363 3819 2617 2639
Asiz 31025 34314 30214 24696 27274
Europe 39760 44802 42720 24638 22287
"Latin America" 13081 15215 16769 15427 13678
"Northern America" 9378 10030 9074 7100 6661
Oceania 1942 1839 1675 1018 878
'''
# df = pd.read_csv(io.StringIO(data), sep='s ')
df = pd.read_csv(io.StringIO(data), delim_whitespace=True)
df.plot(x='continent', kind='bar', stacked=True)
процентный тип
d = df[df.columns[1:]].div(df[df.columns[1:]].sum())
df1 = pd.concat([df[['continent']],d],1)
df1.set_index('continent', inplace=True)
df1
1980 1981 1982 1983 1984
continent
Africa 0.039854 0.039462 0.036626 0.034664 0.035945
Asiz 0.312951 0.310357 0.289764 0.327117 0.371494
Europe 0.401061 0.405217 0.409702 0.326348 0.303567
Latin America 0.131949 0.137614 0.160821 0.204342 0.186306
Northern America 0.094596 0.090718 0.087023 0.094045 0.090728
Oceania 0.019589 0.016633 0.016064 0.013484 0.011959
df1.T.plot(kind='bar', stacked=True)