使用熊猫创建水平条形图

原文:https://www . geesforgeks . org/creating-横条图-使用-pandas/

先决条件 : 熊猫

条形图将分类数据和相应的数据值表示为矩形条。通常,x 轴代表分类值,y 轴代表数据值或频率。这叫做垂直条形图,相反的叫做水平条形图。在某些情况下,水平条形图提供更好的可读性。

Python 有各种可视化库,比如 MatplotlibSeaborn 。与 Matplotlib 紧密集成的熊猫库允许通过数据框和系列对象直接创建情节。本文探讨了使用 Pandas 创建水平条形图的方法。

使用熊猫数据框的绘图实例,可以创建各种图形,包括条形图。代表复杂类别的条形图有两种类型:

  1. 分组或复合条形图–当您有一个主类别的子类别时,该图会在相应的类别中为每个变量或子类别分配一个单独的条形图。
  2. 堆叠条形图–当您有一个主类别的子类别时,该图将子类别堆叠在彼此之上以产生一个条形。

熊猫的条形图()条形图()方法分别绘制垂直和水平条形图。本质上,data frame . plot(kind =“bar”)相当于 DataFrame.plot.bar() 。下面是一些使用上述函数创建不同类型条形图的示例。

简单水平条形图

语法:

DataFrame.plot.barh()

barh() 方法接受 x 和 y 参数,其中 x 取分类值(默认情况下,它取数据框的索引),y 取所有数值列。 DataFrame.plot() 支持的关键字参数(如标题或图形大小)可以传递给 barh() 方法,以自定义条形图。给出了描绘水平条形图的实现,该图表示偏爱特定种类菜肴的人数。

示例:

Python 3

# Import required libraries
import pandas as pd

# Create a sample dataframe
df = pd.DataFrame({'Cuisine': ['Italian', 'Indian', 'Mexican', 'Chinese'],
                   'Number of People': [20, 25, 15, 10]})

# Plot a bar chart
df.plot.barh(x='Cuisine', y='Number of People',
             title='Cuisine Preference', color='green')

输出:

复合水平条形图

从上面的例子中,如果人们被分成男性和女性的子群体,那么我们可以用一个复合的水平条形图来表示这个数据。这个例子显示了一个水平条形图,表示使用两种方法偏好特定种类菜肴的男性和女性的数量。

例 2 :

条形图使用 barh() 方法

Python 3

# Import required libraries
import pandas as pd

# Create a sample dataframe
df = pd.DataFrame({'Number of Males': [10, 15, 25, 14],
                   'Number of Females': [20, 25, 15, 10]},
                  index=['Italian', 'Indian', 'Mexican', 'Chinese'])

# Plot grouped horizontal bar chart
df.plot.barh(title="Gender wise Cuisine preference chart",
             color={"green", "pink"})

输出:

例 3:

条形图使用绘图()方法

Python 3

# Import required libraries
import pandas as pd

# Create a sample dataframe
df = pd.DataFrame({'Number of Males': [10, 15, 25, 14],
                   'Number of Females': [20, 25, 15, 10]},
                  index=['Italian', 'Indian', 'Mexican', 'Chinese'])

# Plot stacked horizontal bar chart
df.plot(kind="barh", title="Gender wise Cuisine preference chart",
        color={"green", "pink"})

输出:

堆叠水平条形图

堆叠条形图有助于表示不同子组的组成或贡献。下面的例子显示了一个横条图,代表了男性和女性偏爱特定种类菜肴的百分比。堆叠水平条形图将数据框中每个观察点的值并排放在单个条形图中。但是,它堆叠的是数值,而不是整体的百分比。因此,我们首先将数据值转换为整体的百分比,然后使用 barh() 函数,将堆叠参数设置为真,以创建填充的堆叠水平条形图。

例 4 :

Python 3

# Import required libraries
import pandas as pd

# Create a sample dataframe
df = pd.DataFrame({'Number of Males': [10, 15, 25, 14],
                   'Number of Females': [20, 25, 15, 10]},
                  index=['Italian', 'Indian', 'Mexican', 'Chinese'])

# Convert numeric values to percentage of whole
percent_df = df.apply(lambda x: (x * 100) / sum(x), axis=1)

# Plot stacked horizontal bar chart
percent_df.plot.barh(stacked=True,
                     title="Male-Female percentage composition of Cuisine preferences")

输出: