python生成正态分布矩阵_使用Numpy生成正态分布数据
如何使用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生成正态分布数据相关推荐
- python使用np.argsort对一维numpy概率值数据排序获取倒序索引、获取的top索引(例如top2、top5、top10)索引二维numpy数组中对应的原始数据:原始数据概率最大的头部数据
python使用np.argsort对一维numpy概率值数据排序获取倒序索引.获取的top索引(例如top2.top5.top10)索引二维numpy数组中对应的原始数据:原始数据概率最大的头部数据 ...
- python使用np.argsort对一维numpy概率值数据排序获取升序索引、获取的top索引(例如top2、top5、top10)索引二维numpy数组中对应的原始数据:原始数据概率最小的头部数据
python使用np.argsort对一维numpy概率值数据排序获取升序索引.获取的top索引(例如top2.top5.top10)索引二维numpy数组中对应的原始数据:原始数据概率最小的头部数据 ...
- 怎么在python中输入矩阵_如何使用NumPy在Python中实现矩阵?
矩阵被用作数学工具,在现实世界中有多种用途.在本文中,我们将按照以下顺序讨论Python中关于使用著名的NumPy库的矩阵的所有内容:什么是NumPy以及何时使用它?在NumPy 矩阵被用作数学工具, ...
- python 函数作用于矩阵_图解NumPy:常用函数的内在机制
原标题:图解NumPy:常用函数的内在机制 来源: 机器之心 支持大量多维数组和矩阵运算的 NumPy 软件库是许多机器学习开发者和研究者的必备工具,本文将通过直观易懂的图示解析常用的 NumPy 功 ...
- python正态分布随机数_Python使用numpy产生正态分布随机数的向量或矩阵操作示例...
本文实例讲述了Python使用numpy产生正态分布随机数的向量或矩阵操作.分享给大家供大家参考,具体如下: 简单来说,正态分布(Normal distribution)又名高斯分布(Gaussian ...
- python做圆柱绕流_基于snappyHexMesh生成网格的圆柱绕流算例
基于snappyHexMesh生成网格的圆柱绕流算例 1.创建几何体STL文件 在了解了原理之后,要生成网格第一步就是要创建一个几何体的STL文件,可以使用3Dbulider,3DCAD等软件生成几何 ...
- python绘制混淆矩阵_如何实现python绘制混淆矩阵?
大家从python基础到如今的入门,想必都对python有一定基础,今天小编给大家带来一个关于python的高阶内容--绘制混淆矩阵,一起来看下吧~ 介绍: 混淆矩阵通过表示正确/不正确标签的计数来表 ...
- python画成绩正态分布图_终于搞清楚正态分布、指数分布到底是啥了!
来源:可乐的数据分析之路作者:可乐 今天这篇文章接2个月以前的那篇文章 离散型随机变量的概率分布,继续来聊聊连续型随机变量的概率分布,以及用Python如何实现. 并非所有的数据都是连续的,根据数据类 ...
- python算法专项(五)——numpy基础、数据保存,方差、标准差、协方差、协方差矩阵
目录 1.numpy基础 2.数据保存与加载 2.1使用numpy方法保存和加载数据 2.2.使用pickle方法保存与加载数据 2.2.1保存加载一般的数据类型 2.2.2保存加载类及调用类方法 3 ...
最新文章
- 事件冒泡和阻止事件冒泡
- oracle 12c安装psu,Oracle 12C数据库PSU补丁安装方式的变化---新增datapatch
- 微信红包技术架构,防外挂贼牛逼!(附胶片下载)
- android h5 ftp,HBuilderX ftp插件使用教程
- django 1.8 官方文档翻译: 2-1-3 模型元选项
- tornado、flask、c++zmq-req-rep记录
- 湖南职称计算机模拟试题,湖南职称计算机考试培训软件:集职称计算机考试模拟题、长沙职称计算机考试题库...
- 获取access_token报错errcode: 40125,errmsg: invalid appsecret, view more at http://t.cn/RAEkdV
- 深圳必去的50个免费景点 景色绝美
- 关于为什么频宽越大传输越快 、 频率越高传输距离越短
- 3月13日云栖精选夜读 | Serverless 风暴来袭,前端工程师如何应对?
- cocoscreator初学笔记001
- 计算机专业对口大学,计算机专业对口升学有哪些大学
- asp.net文件下载,实现隐藏文件下载地址
- STM32F429 笔记(一)- Keil 创建HAL工程
- 【51nod 1326】遥远的旅途【最短路】
- python网页登录钉钉_【Python】关于钉钉接口使用Python,Post 500报错
- 【 rbx1翻译 第七章、控制移动基座】第九节、使用里程计走正方形
- 八年级上学期计算机教学计划,八年级上学期劳技教学计划
- python-docx在word中表格添加表格
热门文章
- 巴比特 | 元宇宙每日必读:老字号企业纷纷搭车元宇宙卖“月饼”,今年中秋“空气月饼”最吃香?...
- 移动端ios问题总结
- 沙盒勇者服务器维护,沙盒勇者新手攻略 新手入门少走弯路[多图]
- 欧盟健康码疑遭泄露 天威诚信证书管理系统助力私钥安全
- 微信小程序页面使内容充满整个屏幕(高度、宽度100%),并使内容水平和竖直都居中
- 法式料理都有哪些特点?简豪餐厅带你了解
- web前端——页面设计
- sublime的自动保存
- Linux stm32 字体库,关于显示32*32大字体
- 【ogg】GoldenGate介绍