问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

10种令人惊叹的数据分布可视化方法

创作时间:
作者:
@小白创作中心

10种令人惊叹的数据分布可视化方法

引用
1
来源
1.
https://www.bmabk.com/index.php/post/276056.html

数据可视化是理解数据、提取见解和做出明智决策的关键。它简化了数据的复杂性,揭示隐藏的模式,并有效传达数据见解。通过可视化,我们能发现数据中的模式、趋势、异常值和潜在关系。识别数据分布类型(如正态、偏斜、双峰),把握数据的范围和变异性,观察任何显著偏差或异常都成为可能。这种视觉呈现让我们更全面地理解数据,从而做出更明智的决策。

以下是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()  

这些可视化技术可以帮助用户更好地理解和分析数据的分布情况,从而做出更准确的决策和推断。不同的技术适用于不同的数据类型和分析目的,因此在实际应用中需要根据具体情况选择合适的技术。

上述代码中的模拟数据仅用于示例,实际应用中你需要使用自己的数据集。此外,对于树状图的解释和解读需要基于你的具体应用场景和数据背景。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号