如何从 Pandas DataFrame 创建直方图?

pythonpandasserver side programmingprogramming

直方图是数据集分布的图形表示。它是可视化数据集的形状、分布和集中趋势的强大工具。直方图通常用于数据分析、统计和机器学习,以识别数据中的模式、异常和趋势。

Pandas 是 Python 中流行的数据操作和分析库。它提供了各种函数和工具来处理结构化数据,包括读取、写入、过滤、清理和转换数据。Pandas 还可以与其他数据可视化库(如 Matplotlib、Seaborn 和 Plotly)很好地集成。

要从 Pandas DataFrame 创建直方图,我们首先需要提取要绘制的数据。我们可以通过使用其名称或索引从 DataFrame 中选择一列来实现这一点。一旦我们有了数据,我们就可以将其传递给可视化库中的直方图函数来生成图。

有几种方法可以使用不同的可视化库从 Pandas DataFrame 创建直方图。例如,我们可以使用 Pandas 中的"hist"方法、NumPy 中的"histogram"函数或 Seaborn 中的"distplot"函数。我们还可以通过更改颜色、箱体、标题、轴标签和其他属性来自定义直方图的外观。

语法

我们将使用以下语法从 Pandas DataFrame 创建直方图。

DataFrame.hist(column=None, by=None, grid=True, xlabelsize=None, xrot=None, ylabelsize=None, yrot=None, ax=None, sharex=False, sharey=False, figsize=None, layout=None, bins=10, backend=None, legend=False, **kwargs)

解释

以下是主要参数的解释 −

  • column  要绘制的列的名称或索引。如果为 None,则绘制所有列。

  • by  用于对数据进行分组的列的名称或索引。如果提供,则创建多个直方图,每个组一个。

  • grid  是否在图表上显示网格线。

  • xlabelsize, xrot, ylabelsize, yrot  x 轴和 y 轴标签的大小和旋转。

  • ax  要在其上绘图的 Matplotlib 轴对象。如果为 None,则创建一个新轴。

  • sharex, sharey  是否在子图之间共享 x 轴或 y 轴。

  • figsize  图形尺寸(英寸)(宽度,高度)。

  • layout  (行,列)子图布局。如果提供,则忽略"by"参数。

  • bins  用于直方图的 bin 数量。这可以是整数或 bin 边界序列。

  • backend  要使用的绘图后端,例如"matplotlib"或"plotly"。

  • legend −  是否在图表上显示图例。

现在让我们探索创建这些直方图的示例。

单列直方图

Python 中的单列直方图是仅包含一列数据的数据集频率分布的图形表示。考虑下面显示的代码。

import pandas as pd
import matplotlib.pyplot as plt

# 将 CSV 文件读入 DataFrame
df = pd.read_csv('data.csv')

# 绘制 DataFrame 中单个列的直方图
df.hist(column='column_name')

# 设置标题和轴标签
plt.title('Histogram of Column Name')
plt.xlabel('Values')
plt.ylabel('Frequency')

# 显示直方图
plt.show()

解释

  • 导入必要的库,包括 pandas 和 matplotlib.pyplot。

  • 使用 pd.read_csv() 函数将 CSV 文件读入 Pandas DataFrame。

  • 使用 df.hist() 函数绘制 DataFrame 中单个列的直方图。

  • 使用 plt.title()、plt.xlabel() 和 plt.ylabel() 函数设置标题和轴标签。

  • 使用 plt.show() 函数显示直方图。

要运行上述代码,您需要安装 pandas 和 matplotlib 库,为此,您可以使用以下命令 -

pip3 install pandas matplotlib

输出

成功安装 pandas 和 matplotlib 后,您可以执行代码,它将生成以下直方图 -

多列直方图

Python 中的多列直方图是具有多列数据的数据集频率分布的图形表示。考虑下面显示的代码。

import pandas as pd
import matplotlib.pyplot as plt

# 将 CSV 文件读入 DataFrame
df = pd.read_csv('data.csv')

# 绘制 DataFrame 中所有列的直方图
df.hist()

# 为每个直方图设置标题和轴标签
for ax in plt.gcf().axes:
    ax.set_title(ax.get_title().replace('Histogram of ', ''))
    ax.set_xlabel('Values')
    ax.set_ylabel('Frequency')

# 显示直方图
plt.show()

解释

此 Python 代码读取 CSV 文件并使用绘制文件中所有列的直方图Pandas 和 Matplotlib。然后,它会在屏幕上显示每个直方图之前设置它们的标题和轴标签。

输出

执行时,它将产生以下输出 -

结论

总之,从 Pandas DataFrame 创建直方图是一种简单有效的可视化数据分布的方法。借助 Pandas 和 Matplotlib 库,您可以快速为 DataFrame 中的单列或多列数据创建直方图,自定义直方图的外观,并添加轴标签和标题以使其更具信息性。


相关文章