迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Pandas DataFrame DataFrame.plot.bar() 函数

作者:迹忆客 最近更新:2024/04/22 浏览次数:

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)

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

如果我们不设置 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)

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


示例代码: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>]


示例代码: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)

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

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)


示例代码: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()

它为 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()

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

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便