Python分布图
简介
分布图是用来显示数据的分布情况的常用可视化工具。Python提供了多个库用于绘制各种类型的分布图,包括直方图、箱线图、核密度图等。本文将详细介绍常用的分布图及其代码示例。
背景知识
在阅读本文之前,建议读者对Python基础有一定的了解,并熟悉常用数据科学库,如NumPy、Pandas和Matplotlib。
1. 直方图(Histogram)
直方图通过将数据划分为若干个区间,并统计每个区间中数据点的数量来显示数据的分布情况。直方图的横轴表示区间的范围,纵轴表示每个区间中数据点的数量。
代码示例
import numpy as np
import matplotlib.pyplot as plt
# 生成1000个随机数
data = np.random.randn(1000)
# 绘制直方图
plt.hist(data, bins=30)
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Histogram')
plt.show()
2. 箱线图(Box Plot)
箱线图用于显示数据的分布情况,并可查看异常值。箱线图展示了数据的中位数、四分位数以及上下边界。
代码示例
import numpy as np
import matplotlib.pyplot as plt
# 生成三组随机数据
data1 = np.random.randn(100)
data2 = np.random.normal(loc=2, scale=1, size=100)
data3 = np.random.exponential(scale=2, size=100)
# 绘制箱线图
plt.boxplot([data1, data2, data3], labels=['Data 1', 'Data 2', 'Data 3'])
plt.ylabel('Value')
plt.title('Box Plot')
plt.show()
3. 核密度图(Kernel Density Plot)
核密度图使用曲线来表示数据的分布情况,并通过计算每个数据点周围的核密度估计绘制而成。与直方图类似,核密度图也能反映数据的密度分布。
代码示例
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
# 生成随机数据
data = np.random.randn(1000)
# 通过核密度估计计算核密度函数
kde = stats.gaussian_kde(data)
# 生成一组X轴上的值
x = np.linspace(-4, 4, 100)
# 绘制核密度图
plt.plot(x, kde(x))
plt.xlabel('Value')
plt.ylabel('Density')
plt.title('Kernel Density Plot')
plt.show()
4. 频率多边形图(Frequency Polygon)
频率多边形图用于展示数据的分布情况,并通过连续线段将数据点连接起来,形成一个多边形。频率多边形图可以看作是直方图的变体,但更加平滑。
代码示例
import numpy as np
import matplotlib.pyplot as plt
# 生成随机数据
data = np.random.randn(1000)
# 绘制频率多边形图
counts, bins, _ = plt.hist(data, bins=30, density=True, alpha=0.5)
plt.plot((bins[:-1] + bins[1:]) / 2, counts, '-')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Frequency Polygon')
plt.show()
5. 散点图(Scatter Plot)
散点图用于展示两个变量之间的关系,并以点的位置表示数据的分布情况。散点图常用于寻找变量之间的相关性。
代码示例
import numpy as np
import matplotlib.pyplot as plt
# 生成两组随机数据
x = np.random.randn(100)
y = np.random.randn(100)
# 绘制散点图
plt.scatter(x, y)
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Scatter Plot')
plt.show()
总结
本文介绍了常用的Python分布图,包括直方图、箱线图、核密度图、频率多边形图和散点图,并提供了相应的代码示例。这些分布图能够帮助我们更直观地理解数据的分布情况,从而做出更准确的数据分析和决策。