大熊猫复杂堆积的barplot

时间:2014-10-28 03:19:12

标签: python pandas bar-chart

我有以下数据:

    Year    LandUse     Region  Area
0   2005    Corn        LP  2078875
1   2005    Corn        UP  149102.4
2   2005    Open Lands      LP  271715
3   2005    Open Lands      UP  232290.1
4   2005    Soybeans        LP  1791342
5   2005    Soybeans        UP  50799.12
6   2005    Other Ag        LP  638010.4
7   2005    Other Ag        UP  125527.2
8   2005    Forests/Wetlands        LP  69629.86
9   2005    Forests/Wetlands        UP  26511.43
10  2005    Developed       LP  10225.56
11  2005    Developed       UP  1248.442
12  2010    Corn        LP  2303999
13  2010    Corn        UP  201977.2
14  2010    Open Lands      LP  131696.3
15  2010    Open Lands      UP  45845.81
16  2010    Soybeans        LP  1811186
17  2010    Soybeans        UP  66271.21
18  2010    Other Ag        LP  635332.9
19  2010    Other Ag        UP  257439.9
20  2010    Forests/Wetlands        LP  48124.43
21  2010    Forests/Wetlands        UP  23433.76
22  2010    Developed       LP  7619.853
23  2010    Developed       UP  707.4816

如何使用pandas制作一个堆积条形图,在y轴上显示区域并使用' REGION'构造堆栈并在x轴上使用YEAR和LandUse。

1 个答案:

答案 0 :(得分:1)

pandas图的主要内容是弄清楚哪些形状的pandas期望数据在哪里。如果我们重塑以使Year在索引中并且不同的区域在不同的列中:

# Assuming that we want to sum the areas for different
# LandUse's within each region
plot_table = df.pivot_table(index='Year', columns='Region', 
                            values='Area', aggfunc='sum')
plot_table

Out[39]: 
Region           LP           UP
Year                            
2005    4859797.820  585478.6920
2010    4937958.483  595675.3616

绘图非常简单:

plot_table.plot(kind='bar', stacked=True)

在X轴上同时使用Year和LandUse不需要额外的工作,你可以 在创建用于绘图的表时将两者都放在索引中:

plot_table = df.pivot_table(index=['Year', 'LandUse'], 
                            columns='Region', 
                            values='Area', aggfunc='sum')

enter image description here