10种令人惊叹的数据分布可视化方法
-
数据可视化是理解数据、提取见解和做出明智决策的关键。它简化了数据的复杂性,揭示隐藏的模式,并有效传达数据见解。通过可视化,我们能发现数据中的模式、趋势、异常值和潜在关系。识别数据分布类型(如正态、偏斜、双峰),把握数据的范围和变异性,观察任何显著偏差或异常都成为可能。这种视觉呈现让我们更全面地理解数据,从而做出更明智的决策。
以下是10种可视化数据分布的技术,每种技术都附带有解释和示例:
-
当涉及到可视化数据分布时,可以使用各种编程语言和库来实现。下面是使用Python和常见的数据可视化库matplotlib和seaborn以及plotly的代码示例:
首先,我们需要导入所需的库:
import matplotlib.pyplot as plt
import seaborn as sns
直方图(Histogram)
-
解释:直方图通过一系列不等高的矩形条来展示数据的分布情况。每个矩形的宽度代表一个数据范围(称为组距),而高度则代表该范围内数据的频数或频率
import matplotlib.pyplot as plt
import numpy as np
# 随机数据
data = np.random.randn(1000)
# 绘制直方图
plt.hist(data, bins=30, edgecolor='black')
plt.title('Histogram')
plt.xlabel('Value')
plt.ylabel('Frequency')
# 保存图形为文件
plt.savefig('histogram.png')
# 显示图形
plt.show()
箱型图(Box Plot)
-
解释:箱型图通过展示数据的五个关键统计量(最小值、第一四分位数、中位数、第三四分位数和最大值)来概括数据的分布情况。
import matplotlib.pyplot as plt
import numpy as np
# 随机数据
np.random.seed(10)
data = np.random.normal(100, 20, 200)
# 绘制箱型图
plt.boxplot(data, vert=False)
plt.title('Box Plot')
plt.xlabel('Value')
plt.yticks([])
# 保存图形为文件
plt.savefig('boxplot.png')
# 显示图形
plt.show()
核密度估计图(Kernel Density Estimation Plot)
-
解释:核密度估计图是一种非参数方法,用于估计数据的概率密度函数。它通过将每个数据点视为一个核函数,并将这些核函数叠加起来得到整体的密度估计。
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
# 随机数据
data = np.random.randn(1000)
# 绘制核密度估计图
sns.kdeplot(data)
plt.title('Kernel Density Estimation Plot')
plt.xlabel('Value')
plt.ylabel('Density')
# 保存图形为文件
plt.savefig('kdeplot.png')
# 显示图形
plt.show()
小提琴图(Violin Plot)
-
解释:小提琴图结合了箱型图和核密度估计图的特性,不仅展示了数据的五个关键统计量,还通过核密度估计展示了数据的概率密度。
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
# 随机数据
np.random.seed(10)
data1 = np.random.normal(100, 20, 200)
data2 = np.random.normal(90, 25, 200)
# 绘制小提琴图
plt.figure(figsize=(10, 6))
sns.violinplot(data=[data1, data2])
plt.title('Violin Plot')
plt.xticks([0, 1], ['Group 1', 'Group 2'])
plt.ylabel('Value')
# 保存图形为文件
plt.savefig('violinplot.png')
# 显示图形
plt.show()
累积分布函数图(Cumulative Distribution Function Plot)
-
解释:累积分布函数图展示了数据中小于或等于某个值的比例。它通常用于描述数据的整体分布趋势。
import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import norm
# 均值和标准差
mu, sigma = 0, 0.1
# 累积分布函数值
s = np.arange(mu - 3*sigma, mu + 3*sigma, 0.01)
y = norm.cdf(s, mu, sigma)
# 绘制累积分布函数图
plt.plot(s, y)
plt.title('Cumulative Distribution Function Plot')
plt.xlabel('Value')
plt.ylabel('Cumulative Probability')
plt.show()
散点图(Scatter Plot)
-
解释:散点图用于展示两个变量之间的关系,通过点的位置和分布来揭示变量间的相关性或趋势。
import matplotlib.pyplot as plt
import numpy as np
# 随机数据
x = np.random.rand(100)
y = np.random.rand(100)
# 绘制散点图
plt.scatter(x, y)
plt.title('Scatter Plot')
plt.xlabel('X')
plt.ylabel('Y')
# 保存图形为文件
plt.savefig('scatterplot.png')
# 显示图形
plt.show()
热力图(Heatmap)
-
解释:热力图通过颜色的深浅来表示数据的大小或密度,适用于展示多维数据或空间数据的分布情况。
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
# 随机数据矩阵
data = np.random.rand(10, 12)
# 绘制热力图
plt.figure(figsize=(10, 8))
sns.heatmap(data, annot=True, cmap='coolwarm')
plt.title('Heatmap')
plt.xlabel('Columns')
plt.ylabel('Rows')
# 保存图形为文件
plt.savefig('heatmap.png')
# 显示图形
plt.show()
二维密度图(2D Density Plot)
-
解释:二维密度图用于展示两个连续变量之间的联合概率分布。它通过颜色的深浅来表示概率密度的高低,二维密度图通常用于展示两个变量之间的联合概率分布 -
在Python中,可以使用seaborn库中的kdeplot函数或者jointplot函数来绘制二维密度图。这里我们使用jointplot函数,因为它同时绘制了二维密度图和两个变量的单变量分布。
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
# 随机生成二维数据
np.random.seed(0)
x = np.random.randn(1000)
y = x + np.random.randn(1000) * 0.3
# 绘制二维密度图
sns.jointplot(x, y, kind="kde", color="m")
plt.title('2D Density Plot')
# 显示图形
plt.show()
树状图(Tree Diagram)
-
解释:树状图用于展示数据的层次结构和分类情况,通过树的分支和节点来表示不同类别的数据和它们之间的关系, 树状图通常用于展示层次聚类结果或系统发育树等树形结构数据。在Python中,可以使用scipy库的cluster.hierarchy模块和matplotlib库来绘制树状图。
from scipy.cluster.hierarchy import dendrogram, linkage
from matplotlib import pyplot as plt
from sklearn.datasets import make_blobs
# 创建模拟数据
X, _ = make_blobs(n_samples=150, centers=3, cluster_std=0.60, random_state=0)
# 使用'single'方法进行层次聚类
linked = linkage(X, 'single')
# 绘制树状图
labelList = range(1, 151)
dendrogram(linked,
orientation='top',
labels=labelList,
distance_sort='descending',
show_leaf_counts=True)
plt.title('Dendrogram')
plt.show()
概率密度函数图 (Probability Density Function, PDF)
-
概率密度函数图用于表示连续型随机变量的概率分布。通过PDF图,可以直观地观察到数据在某个取值范围内的概率分布情况。在Python中,可以使用matplotlib或seaborn等库来绘制PDF图。
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
# 生成正态分布的随机数据
data = np.random.normal(0, 1, 1000)
# 计算数据的均值和标准差
mu, std = np.mean(data), np.std(data)
# 创建正态分布的概率密度函数
xmin, xmax = plt.xlim()
x = np.linspace(xmin, xmax, 100)
p = norm.pdf(x, mu, std)
# 绘制概率密度函数图
plt.plot(x, p, 'k', linewidth=2)
title = "Probability Density Function"
plt.title(title)
plt.show()
-
这些可视化技术可以帮助用户更好地理解和分析数据的分布情况,从而做出更准确的决策和推断。不同的技术适用于不同的数据类型和分析目的,因此在实际应用中需要根据具体情况选择合适的技术。
-
上述代码中的模拟数据仅用于示例,实际应用中你需要使用自己的数据集。此外,对于树状图的解释和解读需要基于你的具体应用场景和数据背景.
-
如果你觉得文章还不错,请大家 点赞、分享、收藏、留言,创作不易,因为这将是我持续输出更多优质文章的最大动力!
-
原文始发于微信公众号(python小胡子):10种令人惊叹的数据分布可视化方法
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/276056.html