如何在Python中创建钟形曲线?


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

正态分布在其有限均值周围是对称的。有时,任务是显示此钟形曲线以进行数据可视化。在本文中,使用三个不同的示例,Python库Plotly与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 = []
#throw 2 dices at same time and add their outcomes
#Repeat this 2000 times
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 this library to make the bell curve
import plotly.figure_factory as ffdemo

# Pandas library
import pandas as pdd

# read the csv and make a dataframe
datafrm = pdd.read_csv("C:\Users\saba2\Desktop\article\articles_py\bellcurve\SOCR-HeightWeight.csv")
#print the dataframe
print(datafrm)

#make the bell curve
bell_fig = ffdemo.create_distplot([datafrm["Height(Inches)"].tolist()], ["Height"], show_hist=False)

#show the bell curve
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 this library to make the bell curve
import plotly.figure_factory as ffdemo

# Pandas library
import pandas as pdd

# read the csv and make a dataframe
datafrm =
pdd.read_csv("C:\Users\saba2\Desktop\article\articles_py\bellcurve\SO
CR-HeightWeight.csv")

#print the dataframe
print(datafrm)

#make the bell curve
bell_fig = ffdemo.create_distplot([datafrm["Weight(Pounds)"].tolist()],
["Weight In Pounds"], show_hist=False)

#show the bell curve
bell_fig.show()

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

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

在这篇关于Python和Plotly的文章中,给出了三个不同的示例,说明了如何使用名为Plotly的Python库创建钟形曲线。首先,给出了一个方法,通过重复投掷两个骰子2000次并添加其结果来创建一个具有正态趋势的数据集。然后使用此数据集来创建钟形曲线。在示例2和示例3中,根据从Kaggle获取的身高和体重数据集编写了Python程序,并使用此数据创建了钟形曲线。

更新于:2023年7月14日

1K+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告