带有两个关键DataFrame的堆积条形图

时间:2015-10-27 14:11:53

标签: python pandas matplotlib plot

我有一个带有两个键的数据帧。我正在寻找key2中项目数量的堆积条形图(意味着从完全填充的数据列中获取计数值)。

我拥有的数据帧的一小部分是:

df.reset_index

Key1是Sector,Key2是Industry。我希望Symbol中的值(计算的列表示为行业堆栈)在包含Basic Industries的栏中。

我知道如果我做了<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.design.widget.AppBarLayout android:id="@+id/app_bar_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" app:contentScrim="?attr/colorPrimary" app:expandedTitleGravity="center" app:expandedTitleTextAppearance="@style/TextAppearance.AppCompat.Title" app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:minHeight="?attr/actionBarSize" app:layout_scrollFlags="scroll|enterAlways" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> <RelativeLayout android:layout_width="match_parent" android:layout_height="192dp" android:background="#34D043"> <LinearLayout android:id="@+id/ce" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:layout_gravity="center" android:gravity="center" android:orientation="vertical"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="48dp" android:src="@drawable/ic_transportation" /> </LinearLayout> </RelativeLayout> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> </android.support.design.widget.CoordinatorLayout> 我将拥有一个带有(非唯一)Sectors and Industries的列,其中包含一个整数计数器。有没有办法简单地将1,2,3列数据分配给pandas plot或matplotlib来制作堆积条形图?

或者,有没有办法在上述数据框中轻松指定使用两个键?

我正在寻找更有经验的人的方法指导以及实际语法的帮助。

2 个答案:

答案 0 :(得分:5)

我刚添加了一个新的扇区来改进这个例子。

                                           Symbol
Sector            industry                           
Basic Industries  Agricultural Chemicals           17
                  Aluminum                          3
                  Containers/Packaging              1
                  Electric Utilities: Central       2
                  Engineering & Construction       22
Basic Industries2 Agricultural Chemicals            7
                  Aluminum                          8
                  Containers/Packaging             11
                  Electric Utilities: Central       7
                  Engineering & Construction        4

假设您的数据框由["Sector", "industry"]编制索引,则首先需要reset_index,然后转动数据框,最后制作堆积图。

df.reset_index().pivot_table(index="industry", columns="Sector", values="Symbol").T.plot(kind='bar', stacked=True, figsize=(14, 6))

enter image description here

答案 1 :(得分:2)

另一种方式,您可以使用以下方法代替reset_index

df.unstack().Symbol.plot(kind='bar', stacked=True)