如何从 Pandas DataFrame 创建直方图?
直方图是数据集分布的图形表示。它是可视化数据集的形状、扩展和集中趋势的强大工具。直方图常用于数据分析、统计和机器学习,以识别数据中的模式、异常和趋势。
Pandas 是 Python 中一个流行的数据操作和分析库。它提供各种功能和工具来处理结构化数据,包括读取、写入、过滤、清理和转换数据。Pandas 还与其他数据可视化库(如 Matplotlib、Seaborn 和 Plotly)很好地集成。
要从 Pandas DataFrame 创建直方图,我们首先需要提取要绘制的数据。我们可以通过使用其名称或索引从 DataFrame 中选择列来实现。获得数据后,我们可以将其传递给可视化库中的直方图函数以生成绘图。
使用不同的可视化库,有几种方法可以从 Pandas DataFrame 创建直方图。例如,我们可以使用 Pandas 的“hist”方法、NumPy 的“histogram”函数或 Seaborn 的“distplot”函数。我们还可以通过更改颜色、bin、标题、轴标签和其他属性来自定义直方图的外观。
语法
我们将使用以下语法从 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 # Read the CSV file into a DataFrame df = pd.read_csv('data.csv') # Plot a histogram of a single column in the DataFrame df.hist(column='column_name') # Set the title and axis labels plt.title('Histogram of Column Name') plt.xlabel('Values') plt.ylabel('Frequency') # Display the histogram 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 # Read the CSV file into a DataFrame df = pd.read_csv('data.csv') # Plot histograms of all columns in the DataFrame df.hist() # Set the title and axis labels for each histogram for ax in plt.gcf().axes: ax.set_title(ax.get_title().replace('Histogram of ', '')) ax.set_xlabel('Values') ax.set_ylabel('Frequency') # Display the histograms plt.show()
解释
此 Python 代码读取 CSV 文件并使用 Pandas 和 Matplotlib 绘制文件中所有列的直方图。然后,它在屏幕上显示它们之前设置每个直方图的标题和轴标签。
输出
执行后,它将生成以下输出:
结论
总之,从 Pandas DataFrame 创建直方图是可视化数据分布的一种简单有效的方法。借助 Pandas 和 Matplotlib 库,您可以快速为 DataFrame 中的一列或多列数据创建直方图,自定义直方图的外观,并添加轴标签和标题以使其更具信息性。