如何在 Python 中制作钟形曲线?

pythonserver side programmingprogramming

众所周知的现象是,如果我们对一个随机变量的许多观测值取平均值,随着观测值的增加,分布会收敛到正态分布。例如,如果我们掷两个骰子并计算每次骰子上显示的随机值的总和,它将显示一个钟形曲线,因为测量的值将显示正常趋势。还观察到,如果只做 50 次,它不会显示完美的钟形曲线,如果重复 1000 次或更多,它将显示一个好的钟形曲线。

正态分布围绕其有限均值对称。有时,任务是显示这个钟形曲线以进行数据可视化。在本文中,使用三个不同的示例,名为 Plotly 的 Python 库与 Python 代码一起使用来制作钟形曲线。在第一个示例中,Python 代码用于使用两个骰子的随机结果之和来创建数据集,然后使用它来绘制曲线。在另外两个示例中,使用了 Kaggle 的身高和体重数据集,以显示身高和体重也呈现这些正常的钟形曲线。

示例 1:将两个骰子的结果相加,并使用此数据使用 Python 和 Plotly 绘制钟形曲线

示例 1 的 Python 代码设计步骤

  • 步骤 1 - 首先导入 pandas 和 plotly。Plotly 是用于绘制不同类型图表的 Python 开源图形库。

  • 步骤 2 - 现在使用 random.randint(1, 6) 获取骰子一和骰子二的随机值。添加这些值。

  • 步骤 3 - 将所有这些总和插入 dice_oneplustwo[] 中。

  • 步骤 4 - 打印存储在 dice_oneplustwo[] 中的值。

  • 步骤 5 - 从  plotly.figure_factory,使用名为 create_distplot() 的函数并制作图表。

  • 步骤 6 - 使用 cmd 窗口运行程序。图表将在浏览器的新选项卡中打开,并显示钟形曲线。

创建一个名为 dice.py 的文件。在此文件中写入以下代码

import plotly.figure_factory as ffdemo
import random
dice_oneplustwo = []
#同时投掷 2 个骰子并添加它们的结果
#重复此操作 2000 次
for i in range(0, 2000):
   diceone = random.randint(1, 6)
   dicetwo = random.randint(1, 6)
   dice_oneplustwo.append(diceone + dicetwo)
print(dice_oneplustwo)
dice_bellcurve = ffdemo.create_distplot([dice_oneplustwo],["Result"],show_hist = False)
dice_bellcurve.show()

在命令窗口中运行 Python 文件

查看钟形曲线结果 - 示例 1

示例 2:使用 Kaggle 身高数据集显示钟形曲线

Python 代码设计步骤

  • 步骤 1 - 首先导入 pandas 和 plotly。Plotly 是用于制作不同类型的图的 Python 开源图形库。

  • 步骤 2 - 登录 Kaggle 并下载身高和体重的数据集

  • (SOCR-HeightWeight.csv)。
  • 步骤 3 - 读取此 csv 文件并制作数据框。打印此数据框。

  • 步骤 4 - 从 plotly.figure_factory 中,使用名为 create_distplot() 的函数。

  • 步骤 5 - 使用高度数据列制作图表。(示例 2)或使用权重数据列制作图表。(示例 3)

  • 步骤 6 - 使用 cmd 窗口运行程序。图表将在浏览器的新选项卡中打开,并显示钟形曲线。

保存数据分析所需的数据文件/csv 文件

为了制作钟形曲线,我们将使用 Kaggle 上的高度数据集 (SOCR-HeightWeight.csv)。登录 Kaggle,然后从此链接下载 csv 文件 −

https://www.kaggle.com/datasets/burnoutminer/heights-and-weightsdataset/download?datasetVersionNumber=1

创建一个名为 Weight.py 的文件。在此文件中写入以下代码。

# 导入此库以制作钟形曲线
import plotly.figure_factory as ffdemo

# Pandas 库
import pandas as pdd

# 读取 csv 并制作数据框
datafrm = pdd.read_csv("C:\Users\saba2\Desktop\article\articles_py\bellcurve\SOCR-HeightWeight.csv")
# 打印数据框
print(datafrm)

# 制作钟形曲线
bell_fig = ffdemo.create_distplot([datafrm["Height(Inches)"].tolist()], ["Height"], show_hist=False)

# 显示钟形曲线
bell_fig.show()

在命令窗口中运行 python 文件−

查看钟形曲线结果 - 示例 2

示例 3:使用 Kaggle 数据集作为权重显示钟形曲线。

Python 代码设计步骤

  • 步骤 1 − 导入所需的库。 Plotly 是 Python 的开源图形库,用于制作不同类型的图表。

  • 第 2 步 - 登录 Kaggle 并下载数据集

(SOCR-HeightWeight.csv) for heights and weights
  • 步骤 3 - 读取此 csv 文件并创建数据框。打印此数据框。

  • 步骤 4 - 从 plotly.figure_factory 中使用名为 create_distplot() 的函数。

  • 步骤 5 - 利用权重数据列制作图表。

  • 步骤 6 - 使用 cmd 窗口部署程序。图表将在浏览器的新选项卡中打开并显示钟形曲线。

保存数据分析所需的数据文件/csv 文件 -

为了制作钟形曲线,我们将使用 Kaggle 上的高度数据集 (SOCR-HeightWeight.csv)。登录 Kaggle,然后从此链接下载 CSV 文件 −

https://www.kaggle.com/datasets/burnoutminer/heights-and-weightsdataset/download?datasetVersionNumber=1

创建一个名为 Weight.py 的文件。在此文件中写入以下代码。

# 导入此库以制作钟形曲线
import plotly.figure_factory as ffdemo

# Pandas 库
import pandas as pdd

# 读取 csv 并制作数据框
datafrm =
pdd.read_csv("C:\Users\saba2\Desktop\article\articles_py\bellcurve\SO
CR-HeightWeight.csv")

#打印数据框
print(datafrm)

#制作钟形曲线
bell_fig = ffdemo.create_distplot([datafrm["Weight(Pounds)"].tolist()],
["Weight In Pounds"], show_hist=False)

#显示钟形曲线
bell_fig.show()

在命令窗口 −

查看钟形曲线作为结果 - 示例 3

在这篇 Python 和 Plotly 文章中,给出了三个不同的示例,展示了如何使用名为 Plotly 的 Python 库制作钟形曲线的方法。首先,给出了一种方法,通过重复投掷两个骰子 2000 次并添加它们的结果来制作正常趋势数据集。然后使用该数据集制作钟形曲线。在示例 2 和示例 3 中,Python 程序是根据从 Kaggle 获取的身高和体重数据集编写的,并且该数据用于制作钟形曲线。


相关文章