让我们了解一下如何在pandas中创建直方图以及它的作用。
直方图在统计分析中非常有用。直方图通常用来表示一个数字数组的频率分布,它被分割成大小相等的小仓。由于我们用pandas来处理表格数据,所以知道如何在pandas数据框中处理直方图是很重要的。
pandas.dataframe.hist 和pandas.dataframe.plot.hist 是两个流行的函数。你可以用它们来直接绘制pandas数据框架中的直方图。
在这篇文章中,你将看到这两个函数的不同特点,它们之间的区别,以及你可以使用它们的场景。
创建一个样本数据集
第1步:导入pandas
import pandas as pd
import numpy as np
import warnings
warnings.filterwarnings("ignore")
第2步:创建一个数据框架
df = pd.DataFrame({
'Subject_1': [70.5, 80.7, 50.4, 70.5, 80.9],
'Subject_2': [40.24, 50.9, 70.6, 80.1, 50.9],
'Subject_3': [30, 50.5, 70.8, 90.88, 30],
'School': ['School_1', 'School_1', 'School_1', 'School_2', 'School_2']
})
df

使用pandas的.hist()函数绘制柱状图
默认绘图
为了使用pandas绘制直方图,请将.hist() 函数链接到数据框中。这将返回pandas数据框架中每个数字列的柱状图。
注意:在代码末尾添加分号可以抑制函数的文本输出
# Histogram function on dataframe
df.hist();

定义Bins来控制直方图的条数。
Bins是我们的数据被分组的类区间。你可以根据每个区间的值的数量来创建一个图。默认情况下,hist() 函数需要10个Bins。你可以通过两种方式改变仓的数量。
1.传递分层的数量
你可以直接传递你在直方图中想要的bin数。
# Histogram with bins=3
df.hist(bins=3);

2.传递分栏本身
你也可以传递所需的bin的列表。Pandas会用列表中的值的边缘来做宾格。
# Histogram with custom bins
df.hist(bins=[20, 35, 50, 80]);

为一个特定的列制作直方图。
默认情况下,你将为你的数据框架的每一列获得一个直方图。如果你只想要一个特定的柱状图,那么请使用hist()函数的参数column 。你可以给特定的列名作为函数的输入。
# Histogram of 'Subject_1' column
df.hist(column='Subject_1');

如何在pandas中为一个给定列中的不同组绘制直方图
hist() 在pandas中,函数提供了为不同数据组绘制独立直方图的能力。通过使用 参数,你可以指定不同组的列名。这将为每组数据创建单独的直方图。'by'
在下面的例子中,我们为Subject_1 列创建了两个直方图。这些组是根据School 列创建的。
df.hist(column='Subject_1', by='School');
在pandas中使用.plot()函数而不是.hist()绘制直方图
直方图也可以通过在pandas数据帧上使用plot() 函数来创建。.hist() 和.plot() 函数之间的主要区别是,.plot 函数在同一个图上为数据框架的所有数字列创建直方图。在.plot 函数的情况下,不做单独的图。
Plot函数也可以像hist函数一样接收bins 和by 参数。plot 函数可以通过两种方式用于直方图的绘制。
1.通过使用kind 参数
plot() 函数有一个 参数,用于接收要创建的图的种类。对于直方图,你需要将该值作为 。其他图有不同的值。kind hist
df.plot(kind='hist');

请注意,plot() 函数已经自动为创建的绘图分配了颜色和图例。
2.通过使用plot 函数的hist 方法
你可以直接从plot 函数中访问直方图hist 方法。只需在.plot 函数之后添加.hist() 。
df.plot.hist();

实用提示
- 你应该使用pandas的快速绘图选项来获得即时的数据可视化。这样就不需要使用外部库了(尽管这些绘图功能在引擎盖下使用了matplotlib)。
- 你也可以使用matplotlib提供的其他参数,如旋转x标签、标题,以提高绘图的可读性。
测试你的知识
Q1: hist 函数中的哪个参数是用来绘制单列直方图的?
答: column 参数是用来绘制单列直方图的。
Q2: plot 函数中的kind 参数有什么用?
答: kind 参数用于定义绘图的类型。bar 用于绘制条形图,line 用于绘制线形图,以此类推。你可以在这里查看完整的列表
Q3: 我们可以用interval 参数来定义直方图的分档。正确/错误?
答: 错。可以使用bins 参数。