Pandas 如何从DataFrame创建直方图
直方图是一种数据集分布的图形表示。它是可视化数据集形状、波动和中心趋势的强大工具。直方图在数据分析、统计学和机器学习中常用于识别数据中的模式、异常和趋势。
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
# 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中的单个列或多个列创建直方图,自定义直方图的外观,并添加坐标轴标签和标题以使其更具信息性。