Pandas DataFrame DataFrame.plot.bar() 函数

Minahil Noor 2023年1月30日
  1. pandas.DataFrame.plot.bar() 语法
  2. 示例代码:DataFrame.plot.bar()
  3. 示例代码:DataFrame.plot.bar() 与多数据列的关系
  4. 示例代码:DataFrame.plot.bar()subplots=True 创建子图
  5. 示例代码:DataFrame.plot.bar() 来绘制单个数据列
  6. 示例代码:DataFrame.plot.bar() 与指定的颜色
Pandas DataFrame DataFrame.plot.bar() 函数

Python Pandas DataFrame.plot.bar() 函数沿着指定的轴线绘制一个条形图。它将图形按类别绘制。分类在 X 轴上给出,数值在 Y 轴上给出。

pandas.DataFrame.plot.bar() 语法

DataFrame.sample(x=None, y=None, **kwds)

参数

x 这是绘制类别的轴。如果没有指定,则使用 DataFrame 的索引
y 它代表的是针对类别绘制的数值。如果没有指定,那么它就会将 DataFrame 的所有数字列与类别进行对比
**kwds 这些是额外的关键字参数,用于自定义绘制的图形。你可以参考这里

返回值

它返回一个 N 维的数组,如果 subplots=True,则返回 N 维的数组,每列有 matplotlib.axes.Axes。如果 subplots=True,则返回 N 维数组,每列有是 matplotlib.axes.Axes

示例代码:DataFrame.plot.bar()

我们先用一个简单的 DataFrame 来理解这个函数。

import pandas as pd
dataframe = pd.DataFrame({'Value':[100, 200, 300]})
print(dataframe)

我们的 DataFrame 为,

 Value
0  100
1  200
2  300

这个函数的所有参数都是可选的。如果我们在执行这个函数时没有传递任何参数,那么它将索引作为 X 轴,数字数据列作为 Y 轴。

import pandas as pd
import matplotlib.pyplot as plt

dataframe = pd.DataFrame({"Value": [100, 200, 300]})
axis = dataframe.plot.bar(rot=0)
print(axis)
plt.show()

输出:

AxesSubplot(0.125,0.125;0.775x0.755)

Pandas DataFrame.plot.bar Basic 函数

参数 rot 是一个附加的关键字参数。它改变了 X 轴上类别名称的旋转。

如果我们不设置 rot,图中会出现下面的情况。

Pandas DataFrame.plot.bar Basic - 不设置 rot

示例代码:DataFrame.plot.bar() 与多数据列的关系

现在,我们将把我们的 DataFrame 改成一个复杂的数据。

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Age": [23, 17, 40, 38, 24, 12, 45],
        "Avg Age in Family": [70, 65, 80, 55, 60, 63, 90],
    },
    index=["Olivia", "John", "Laura", "Ben", "Kevin", "Robin", "Elsa"],
)
print(dataframe)

我们的 DataFrame 为,

        Age  Avg Age in Family
Olivia   23                 70
John     17                 65
Laura    40                 80
Ben      38                 55
Kevin    24                 60
Robin    12                 63
Elsa     45                 90

使用 DataFrame.plot.bar() 函数绘制这个 DataFrame

import pandas as pd
import matplotlib.pyplot as plt

dataframe = pd.DataFrame(
    {
        "Age": [23, 17, 40, 38, 24, 12, 45],
        "Avg Age in Family": [70, 65, 80, 55, 60, 63, 90],
    },
    index=["Olivia", "John", "Laura", "Ben", "Kevin", "Robin", "Elsa"],
)
axis = dataframe.plot.bar(rot=0)
print(axis)
plt.show()

输出:

AxesSubplot(0.125,0.125;0.775x0.755)

Pandas DataFrame.plot.bar,有多列

它能生成一个包含每个类别的两个条形数字数据的条形图。它有助于有效地分析数据。

示例代码:DataFrame.plot.bar()subplots=True 创建子图

如果 subplots=True,那么函数返回一个 N 维的数组,每列有 matplotlib.axes.Axes。使用这个函数,我们可以将数据列分成不同的子图,而不是一个单一的图。

import pandas as pd
import matplotlib.pyplot as plt

dataframe = pd.DataFrame(
    {
        "Age": [23, 17, 40, 38, 24, 12, 45],
        "Avg Age in Family": [70, 65, 80, 55, 60, 63, 90],
    },
    index=["Olivia", "John", "Laura", "Ben", "Kevin", "Robin", "Elsa"],
)
axes = dataframe.plot.bar(rot=0, subplots=True)
print(axes)
plt.show()

输出:

[<matplotlib.axes._subplots.AxesSubplot object at 0x0000029A89B06DC8>
 <matplotlib.axes._subplots.AxesSubplot object at 0x0000029A89B4B2C8>]

Pandas DataFrame.plot.bar 子图

示例代码:DataFrame.plot.bar() 来绘制单个数据列

import pandas as pd
import matplotlib.pyplot as plt

dataframe = pd.DataFrame(
    {
        "Age": [23, 17, 40, 38, 24, 12, 45],
        "Avg Age in Family": [70, 65, 80, 55, 60, 63, 90],
    },
    index=["Olivia", "John", "Laura", "Ben", "Kevin", "Robin", "Elsa"],
)
axis = dataframe.plot.bar(y="Age", rot=0)
print(axis)
plt.show()

输出:

AxesSubplot(0.125,0.125;0.775x0.755)

Pandas DataFrame.plot.bar 单列绘图

我们还可以将任何数据列与其他列进行对比,而不是将索引作为类别进行绘制。

import pandas as pd
import matplotlib.pyplot as plt

dataframe = pd.DataFrame(
    {
        "Age": [23, 17, 40, 38, 24, 12, 45],
        "Avg Age in Family": [70, 65, 80, 55, 60, 63, 90],
    },
    index=["Olivia", "John", "Laura", "Ben", "Kevin", "Robin", "Elsa"],
)
axis = dataframe.plot.bar(x="Age", rot=0)
print(axis)
plt.show()

输出:

AxesSubplot(0.125,0.125;0.775x0.755)

Pandas DataFrame.plot.bar - 使用一列作为 X 轴

示例代码:DataFrame.plot.bar() 与指定的颜色

import pandas as pd
import matplotlib.pyplot as plt

dataframe = pd.DataFrame(
    {
        "Age": [23, 17, 40, 38, 24, 12, 45],
        "Avg Age in Family": [70, 65, 80, 55, 60, 63, 90],
    },
    index=["Olivia", "John", "Laura", "Ben", "Kevin", "Robin", "Elsa"],
)
axis = dataframe.plot.bar(rot=0, color="m")
plt.show()

Pandas DataFrame.plot.bar - 不同列的单色

它为 DataFrame 中的所有列指定颜色为 m

import pandas as pd
import matplotlib.pyplot as plt

dataframe = pd.DataFrame(
    {
        "Age": [23, 17, 40, 38, 24, 12, 45],
        "Avg Age in Family": [70, 65, 80, 55, 60, 63, 90],
    },
    index=["Olivia", "John", "Laura", "Ben", "Kevin", "Robin", "Elsa"],
)
axis = dataframe.plot.bar(rot=0, color=["r", "b"])
print(axis)
plt.show()

Pandas DataFrame.plot.bar - 不同的列有不同的颜色

我们还可以通过给 color 参数提供一个颜色列表,为 DataFrame 中的不同列指定不同的颜色。

相关文章 - Pandas DataFrame

相关文章 - Pandas DataFrame Plot