趋近智
尽管均值、中位数和标准差等数值概括量能提供关于集中趋势和离散度的精确数值,但它们未能完全展现变量分布的形态。数据是集中在均值附近,还是分散开来?是对称的,还是偏向一侧?是否存在多个峰值?为了回答这些问题,我们转向可视化,而用于了解单一数值变量分布的主要工具就是直方图。
直方图将数值分组到“箱体”或“区间”中,然后绘制落在每个箱体中的观测值的频率(计数)。水平轴表示变量的数值范围,被划分为这些箱体,而垂直轴表示每个箱体中观测值的频率或密度。这形成了一个条形图,提供了对潜在概率分布的直观近似表示。
箱体的选择很重要。箱体的数量(或等效地,每个箱体的宽度)能显著影响直方图的外观以及我们从中获得的认识。
虽然均值、中位数和标准差等数值概括提供了关于集中趋势和离散程度的精确值,但它们无法完全捕捉变量分布的形态。数据是集中在均值附近,还是广泛分散?它是对称的,还是偏向一侧?是否存在多个峰值?为了回答这些问题,需要借助可视化方法,而用于理解单个数值变量分布的主要工具是直方图。
我们来看看如何使用流行的Python库生成直方图。我们假设你有一个名为df的Pandas DataFrame,并且对一个名为'age'的数值列感兴趣。
使用Pandas:
Pandas DataFrames有一个内置的.hist()方法,其底层使用Matplotlib。
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
# 创建一个示例 DataFrame,其中包含 'student_heights'(学生身高)数据
data = {'student_heights': np.random.normal(175, 10, 1000)} # 正态分布,均值为 175cm
df_students = pd.DataFrame(data)
# 使用更具描述性的 DataFrame 和列名
df_students['student_heights'].hist(bins=15, grid=False, figsize=(8, 5))
plt.title('学生身高分布')
plt.xlabel('身高 (cm)')
plt.ylabel('频率')
plt.show()
使用Matplotlib:
你可以直接使用Matplotlib以获得更多控制。
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# 创建一个示例 DataFrame,其中包含 'exam_scores'(考试分数)数据
data = {'exam_scores': np.random.normal(75, 15, 500)} # 正态分布,均值为 75
df_class = pd.DataFrame(data)
# 使用更具描述性的 DataFrame 和列名
plt.figure(figsize=(8, 5))
plt.hist(df_class['exam_scores'].dropna(), bins=20, color='#339af0', edgecolor='black')
plt.title('考试分数分布')
plt.xlabel('考试分数')
plt.ylabel('频率')
plt.grid(axis='y', alpha=0.75)
plt.show()
请注意使用.dropna()来处理绘图前可能存在的缺失值。
使用Seaborn:
Seaborn通常能生成更美观的图表,并与Pandas DataFrame很好地集成。histplot函数功能多。
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# 创建一个示例 DataFrame,其中包含 'employee_ages'(员工年龄)数据
data = {'employee_ages': np.random.randint(20, 60, 200)} # 20到60岁之间的均匀分布
df_employees = pd.DataFrame(data)
# 使用更具描述性的 DataFrame 和列名
plt.figure(figsize=(8, 5))
sns.histplot(data=df_employees, x='employee_ages', bins=25, kde=True, color='#20c997')
plt.title('带密度曲线的员工年龄分布')
plt.xlabel('年龄 (岁)')
plt.ylabel('频率')
plt.show()
添加kde=True会叠加一个核密度估计,它提供了分布形态的平滑表示。
这里是一个使用Plotly进行交互式网页可视化的例子:
显示样本数值数据集频率分布的直方图。
查看直方图时,请注意以下特征:
形态:
模态(峰值):
离散度(分散):
异常值和间隙:
直方图提供了即时视觉概括,补充了数值统计量。它们帮助你快速掌握数值变量的性质,辨别偏度或异常值等潜在问题,并指导后续分析步骤。例如,强偏度可能暗示未来考虑数据转换。
这部分内容有帮助吗?
© 2026 ApX Machine LearningAI伦理与透明度•