如何使用Python生成正态分布的人员身高体重信息?

下面是生成的数据的分布情况,身高数据在各个区间大致呈正态分布。

对应的代码如下,先用pd.cut进行各个区间分桶,然后使用sort_index按照区间名排序。

df = pd.read_csv('./datasets/boygirl200.csv', encoding='gbk')

des = df.describe()

bins = range(des.height['min'].astype(int), des.height['max'].astype(int), 2)

cutdf = pd.cut(df.height, bins=bins, include_lowest=True)

cutdf.value_counts().sort_index().plot.bar()

生成正态分布数据

使用np.random.normal(mean,scale,size)可以生成很多数值呈正态分布数字。如下图所示,mean就是中间竖线的位置,scale就是横向挤压或拉伸程度,size是生成数字个数。

但是这里也有问题,由于是基于概率的,就无法避免生成及少量超级小或超级大的值,比如身高1厘米或体重300公斤的异常值数据都有可能产生。最简单的情况是对生成后的数据用DataFrame.loc()条件表达式直接截取最小值和最大值之间的值。

下面是代码部分。首先使用一个男生名字列表来生成一系列name字段,这个数据可以从下面的百度网盘下载(请参见留言区)。

girlnamedf=pd.read_csv('datasets/En_girl_names.csv',index_col=0)

girldf.head()

下面是生成数据的代码,先生成正态分布的身高,然后生成正态分布的bmi体重指数,然后根据身高和体重指数计算出体重,根据bmi进行分箱操作生成fitness健康标签。最后使用loc把异常值去除。

girldf2 = pd.DataFrame(girlnamedf.sample(frac=1)[:ncount]['0'].to_list(),columns=['name'])

girldf2['height'] = np.random.normal(170, 5, ncount).astype(int) #正态分布身高

girldf2['bmi'] = np.random.normal(20, 5, ncount).round(1) #正态分布bmi

girldf2['weight'] = [int(h * h * b / 10000) for h, b in zip(girldf2.height, girldf2.bmi)]

bins = [0, 18, 25, 100]

labels = ['slim', 'healthy', 'fat']

girldf2['fitness'] = pd.cut(girldf2['bmi'], bins=bins, labels=labels)

girldf2['sex'] = 'woman'

girldf2 = girldf2.loc[(girldf2.height > 150) & (girldf2.height < 210), :]

girldf2 = girldf2.loc[(girldf2.bmi > 15) & (girldf2.bmi < 30), :]

girldf2=girldf2[:100]

girldf2.head(5)

合并数据表

同理也可以生成女生数据girldf2。男女生数据合并使用concat方法,代码如下:

boygirldf=pd.concat([boydf2,girldf2])

boygirldf=pd.DataFrame(boygirldf.sample(frac=1))

boygirldf

最后保存为csv文件。

boygirldf.to_csv('datasets/boygirl200.csv')

最终可以使用开篇的代码进行测试,也可以随时使用boygirldf.fitness.value_counts()查看实际数据分布情况。

每个人的智能新时代

如果您发现文章错误,请不吝留言指正;

如果您觉得有用,请点喜欢;

如果您觉得很有用,欢迎转载~

END

python生成正态分布矩阵_使用Numpy生成正态分布数据相关推荐

  1. python使用np.argsort对一维numpy概率值数据排序获取倒序索引、获取的top索引(例如top2、top5、top10)索引二维numpy数组中对应的原始数据:原始数据概率最大的头部数据

    python使用np.argsort对一维numpy概率值数据排序获取倒序索引.获取的top索引(例如top2.top5.top10)索引二维numpy数组中对应的原始数据:原始数据概率最大的头部数据 ...

  2. python使用np.argsort对一维numpy概率值数据排序获取升序索引、获取的top索引(例如top2、top5、top10)索引二维numpy数组中对应的原始数据:原始数据概率最小的头部数据

    python使用np.argsort对一维numpy概率值数据排序获取升序索引.获取的top索引(例如top2.top5.top10)索引二维numpy数组中对应的原始数据:原始数据概率最小的头部数据 ...

  3. 怎么在python中输入矩阵_如何使用NumPy在Python中实现矩阵?

    矩阵被用作数学工具,在现实世界中有多种用途.在本文中,我们将按照以下顺序讨论Python中关于使用著名的NumPy库的矩阵的所有内容:什么是NumPy以及何时使用它?在NumPy 矩阵被用作数学工具, ...

  4. python 函数作用于矩阵_图解NumPy:常用函数的内在机制

    原标题:图解NumPy:常用函数的内在机制 来源: 机器之心 支持大量多维数组和矩阵运算的 NumPy 软件库是许多机器学习开发者和研究者的必备工具,本文将通过直观易懂的图示解析常用的 NumPy 功 ...

  5. python正态分布随机数_Python使用numpy产生正态分布随机数的向量或矩阵操作示例...

    本文实例讲述了Python使用numpy产生正态分布随机数的向量或矩阵操作.分享给大家供大家参考,具体如下: 简单来说,正态分布(Normal distribution)又名高斯分布(Gaussian ...

  6. python做圆柱绕流_基于snappyHexMesh生成网格的圆柱绕流算例

    基于snappyHexMesh生成网格的圆柱绕流算例 1.创建几何体STL文件 在了解了原理之后,要生成网格第一步就是要创建一个几何体的STL文件,可以使用3Dbulider,3DCAD等软件生成几何 ...

  7. python绘制混淆矩阵_如何实现python绘制混淆矩阵?

    大家从python基础到如今的入门,想必都对python有一定基础,今天小编给大家带来一个关于python的高阶内容--绘制混淆矩阵,一起来看下吧~ 介绍: 混淆矩阵通过表示正确/不正确标签的计数来表 ...

  8. python画成绩正态分布图_终于搞清楚正态分布、指数分布到底是啥了!

    来源:可乐的数据分析之路作者:可乐 今天这篇文章接2个月以前的那篇文章 离散型随机变量的概率分布,继续来聊聊连续型随机变量的概率分布,以及用Python如何实现. 并非所有的数据都是连续的,根据数据类 ...

  9. python算法专项(五)——numpy基础、数据保存,方差、标准差、协方差、协方差矩阵

    目录 1.numpy基础 2.数据保存与加载 2.1使用numpy方法保存和加载数据 2.2.使用pickle方法保存与加载数据 2.2.1保存加载一般的数据类型 2.2.2保存加载类及调用类方法 3 ...

最新文章

  1. 事件冒泡和阻止事件冒泡
  2. oracle 12c安装psu,Oracle 12C数据库PSU补丁安装方式的变化---新增datapatch
  3. 微信红包技术架构,防外挂贼牛逼!(附胶片下载)
  4. android h5 ftp,HBuilderX ftp插件使用教程
  5. django 1.8 官方文档翻译: 2-1-3 模型元选项
  6. tornado、flask、c++zmq-req-rep记录
  7. 湖南职称计算机模拟试题,湖南职称计算机考试培训软件:集职称计算机考试模拟题、长沙职称计算机考试题库...
  8. 获取access_token报错errcode: 40125,errmsg: invalid appsecret, view more at http://t.cn/RAEkdV
  9. 深圳必去的50个免费景点 景色绝美
  10. 关于为什么频宽越大传输越快 、 频率越高传输距离越短
  11. 3月13日云栖精选夜读 | Serverless 风暴来袭,前端工程师如何应对?
  12. cocoscreator初学笔记001
  13. 计算机专业对口大学,计算机专业对口升学有哪些大学
  14. asp.net文件下载,实现隐藏文件下载地址
  15. STM32F429 笔记(一)- Keil 创建HAL工程
  16. 【51nod 1326】遥远的旅途【最短路】
  17. python网页登录钉钉_【Python】关于钉钉接口使用Python,Post 500报错
  18. 【 rbx1翻译 第七章、控制移动基座】第九节、使用里程计走正方形
  19. 八年级上学期计算机教学计划,八年级上学期劳技教学计划
  20. python-docx在word中表格添加表格

热门文章

  1. 巴比特 | 元宇宙每日必读:老字号企业纷纷搭车元宇宙卖“月饼”,今年中秋“空气月饼”最吃香?...
  2. 移动端ios问题总结
  3. 沙盒勇者服务器维护,沙盒勇者新手攻略 新手入门少走弯路[多图]
  4. 欧盟健康码疑遭泄露 天威诚信证书管理系统助力私钥安全
  5. 微信小程序页面使内容充满整个屏幕(高度、宽度100%),并使内容水平和竖直都居中
  6. 法式料理都有哪些特点?简豪餐厅带你了解
  7. web前端——页面设计
  8. sublime的自动保存
  9. Linux stm32 字体库,关于显示32*32大字体
  10. 【ogg】GoldenGate介绍