使用python实现随机正态分布数据,并导出到表格(超详细)
文章目录
- 一、前言
- 二、使用步骤
- 1.引入库
- 2.随机正态分布生成算法
- 2.1.利用np.random.normal函数生成二维数据
- 2.2.利用for循环生成100*100数据
- 3.生成分布图
- 4. 导出到表格
- 5. 完整算法
- 5.1.利用np.random.normal函数生成二维数据
- 5.2.利用for循环生成100*100数据
- 总结
一、前言
最近需要大量的正态分布的数据,为了方便,使用python实现随机正态分布,画出理想正态分布图和实际的矩形分布,并导出到表格里面。
二、使用步骤
1.引入库
下面是编写代码所用到的库
import numpy as np #随机数
import matplotlib.pyplot as plt #画图
import xlwt #导出表格
2.随机正态分布生成算法
生成的数据是100*100,且使用了两种生成正态分布的算法。
- 一种是基于最大值、最小值范围得到的随机分布。
result = np.random.randint(0, 100, size=100) # 最小值,最大值,数量
- 一种是基于均值和标准差得到的随机分布。
result = np.random.normal(60, 20, (row,cols)) # 均值,标准差,数量
可以看到,两种算法当中,基于均值和标准差得到的数据更接近正态分布,接下来以第二种做演示。
2.1.利用np.random.normal函数生成二维数据
# 根据均值、标准差,求指定范围的正态分布概率值
def normfun(x, mu, sigma):pdf = np.exp(-((x - mu)**2)/(2*sigma**2)) / (sigma * np.sqrt(2*np.pi))return pdfrow = 100 #行
cols = 100 #列#随机生成,整体正态分布
# result = np.random.randint(0, 100, size=100) # 最小值,最大值,数量
result = np.random.normal(60, 20, (row,cols)) # 均值,标准差,数量
#print(result)
生成的数据
2.2.利用for循环生成100*100数据
# 根据均值、标准差,求指定范围的正态分布概率值
def normfun(x, mu, sigma):pdf = np.exp(-((x - mu)**2)/(2*sigma**2)) / (sigma * np.sqrt(2*np.pi))return pdfrow = 100 #行
cols = 84 #列
result_arr = [[0 for i in range(cols)] for j in range(row)]#随机生成,行正态分布
for i in range(0,row):# result = np.random.randint(0, 100, size=100) # 最小值,最大值,数量result = np.random.normal(100, 50, cols) # 均值,标准差,数量x = 0for j in result:result_arr[i][x] = round(j) #取整x = x+1for i in range(0,row):print(result_arr[i])
对数据做了取整,生成的部分数据
3.生成分布图
可以修改bins个数
#正态分布图
x = np.arange(min(result), max(result), 1) #步长为1
# 设定 y 轴,载入刚才的正态分布函数
print("均值:",result.mean(), "标准差:",result.std()) #均值、标准差
y = normfun(x, result.mean(), result.std())
plt.plot(x, y) # 这里画出理论的正态分布概率曲线# 这里画出实际的参数概率与取值关系
plt.hist(result, bins=100, rwidth=0.9, density=True) # bins个柱状图,宽度是rwidth(0~1),=1没有缝隙
plt.title('distribution')
plt.xlabel('temperature')
plt.ylabel('probability')
# 输出
plt.show() # 最后图片的概率和不为1是因为正态分布是从负无穷到正无穷,这里指截取了数据最小值到最大值的分布
- 可以修改柱状图个数,个数=100,bins=10生成的图示:
- 个数=100,bins=100生成的图示:
4. 导出到表格
不同的算法对应不同的导出格式
#导出为表格
workbook = xlwt.Workbook(encoding="utf-8") # 创建workbook对象
worksheet = workbook.add_sheet('sheet1') # 创建工作表
for i in range(0,row):for j in range(0,cols):worksheet.write(i, j, result_arr[i][j])
workbook.save('test.xls')
生成的部分数据
5. 完整算法
虽然采取了不同的算法,但总体思路是一样的,但是会有一些细节上的改动,下面将利用函数自身生成的数据算法与利用for循环算法生成的数据结果一并展示。
5.1.利用np.random.normal函数生成二维数据
import numpy as np
import matplotlib.pyplot as plt
import xlwt# 根据均值、标准差,求指定范围的正态分布概率值
def normfun(x, mu, sigma):pdf = np.exp(-((x - mu)**2)/(2*sigma**2)) / (sigma * np.sqrt(2*np.pi))return pdfrow = 100 #行
cols = 100 #列#随机生成,整体正态分布
#result = np.random.randint(0, 100, size=1000) # 最小值,最大值,数量
result = np.random.normal(60, 20, (row,cols)) # 均值,标准差,数量
print(result)#导出为表格n=0
workbook = xlwt.Workbook(encoding="utf-8") # 创建workbook对象
worksheet = workbook.add_sheet('sheet1') # 创建工作表
for i in range(0,row):for j in range(0,cols):worksheet.write(i, j, round(result[i][j]))
workbook.save('test_3.xls')#正态分布图
result = result[2]
x = np.arange(min(result), max(result), 1) #步长为1
# 设定 y 轴,载入刚才的正态分布函数
print("均值:",result.mean(), "标准差:",result.std()) #均值、标准差
y = normfun(x, result.mean(), result.std())
plt.plot(x, y) # 这里画出理论的正态分布概率曲线# 这里画出实际的参数概率与取值关系
plt.hist(result, bins=100, rwidth=0.9, density=True) # bins个柱状图,宽度是rwidth(0~1),=1没有缝隙
plt.title('distribution')
plt.xlabel('temperature')
plt.ylabel('probability')
# 输出
plt.show() # 最后图片的概率和不为1是因为正态分布是从负无穷到正无穷,这里指截取了数据最小值到最大值的分布
5.2.利用for循环生成100*100数据
import numpy as np
import matplotlib.pyplot as plt
import xlwt# 根据均值、标准差,求指定范围的正态分布概率值
def normfun(x, mu, sigma):pdf = np.exp(-((x - mu)**2)/(2*sigma**2)) / (sigma * np.sqrt(2*np.pi))return pdfrow = 100 #行
cols = 100 #列
result_arr = [[0 for i in range(cols)] for j in range(row)]#随机生成,行正态分布
for i in range(0,row):# result = np.random.randint(0, 100, size=100) # 最小值,最大值,数量result = np.random.normal(60, 20, cols) # 均值,标准差,数量#print(result)x = 0for j in result:result_arr[i][x] = round(j)x = x+1for i in range(0,row):print(result_arr[i])#导出为表格
workbook = xlwt.Workbook(encoding="utf-8") # 创建workbook对象
worksheet = workbook.add_sheet('sheet1') # 创建工作表
for i in range(0,row):for j in range(0,cols):worksheet.write(i, j, result_arr[i][j])
workbook.save('test_2.xls')x = np.arange(min(result), max(result), 1) #步长为1
# 设定 y 轴,载入刚才的正态分布函数
print(result.mean(), result.std()) #均值、标准差
y = normfun(x, result.mean(), result.std())
plt.plot(x, y) # 这里画出理论的正态分布概率曲线# 这里画出实际的参数概率与取值关系
plt.hist(result, bins=100, rwidth=0.9, density=True) # bins个柱状图,宽度是rwidth(0~1),=1没有缝隙
plt.title('distribution')
plt.xlabel('temperature')
plt.ylabel('probability')
# 输出
plt.show() # 最后图片的概率和不为1是因为正态分布是从负无穷到正无穷,这里指截取了数据最小值到最大值的分布
总结
以上就是今天要讲的内容,本文仅仅简单介绍了使用python随机生成正态分布的数据,画图,并导出。正态分布是机器学习中很常见的一种需求,往往需要大量的数据进行测试,此时,本文的方法就可以大大减少因数据而花费的时间啦!
如有问题,欢迎评论区留言啊!
使用python实现随机正态分布数据,并导出到表格(超详细)相关推荐
- Python数据可视化之Plotnine库超详细教程系列
Python数据可视化之Plotnine库超详细教程系列(一):概述 一.Plotnine库简介 ggplot2包奠定了R语言数据可视化在数据科学中的地位,数据可视化一直是Python的短板,即使有M ...
- 剪映导出SRT字幕超详细图文教程
剪映导出SRT字幕超详细图文教程 视频的字幕是制作视频的过程当中一个很麻烦的事情. 不仅要使得字幕和人声出现的时间匹配,还要校对错别字,删减字幕,增加字幕等繁琐的操作.在以往为视频添加字幕的操作中,有 ...
- python mongodb 随机抽取数据
import sys import importlib importlib.reload(sys)#需要xlwt库的支持 from xlwt import * #指定file以utf-8的格式打开 f ...
- Python 生成随机经纬度数据
Python 生成随机经纬度 Description: python 自动生成经纬度, 该脚本适用于python3, 如果是python2请把# from __future__ import divi ...
- matlab自动生成excel工作区,matlab数据怎么导出excel表格-matlab工作区数据怎么转为excel...
怎样将MATLAB中的数据输出到excel中 使用 xlswrite()函数可以将matlab中数据保存到excel中,请看下面例子: >> data = magic(5) % 示例数据 ...
- matlab数据导出excel,matlab数据点导出excel表格-怎样将matlab中数据导出到excel中?...
怎样将matlab中数据导出到excel中? xlswrite('E:系数.xls',B,'','A2') E:系数.xls 是路径 B是需要导入的矩阵 A2是指矩阵从表格中的A2开始输入 希望可以帮 ...
- freemarker模板导出带表格word详细教程
前言:另外一篇是手机端的word导出,需要兼容性,不然在安卓手机会乱码 freemarker模板导出word循环图片表格详细教程_Java大表哥的博客-CSDN博客 并且另存为模版格式不同数据绑定方 ...
- python怎么随机生成数据_Python-随机生成数据
from random importchoice,randintimportstringimportcodecsimportrandomimportopenpyxlimporttimefrom ope ...
- 使用python自动生成病例数据并导出excel(附代码)
因为实验需要处理大量的数据,便考虑进行自动生成,结果如下 代码如下 import time import random province=['河北','山西','辽宁','吉林','黑龙江','江苏' ...
最新文章
- visual paradigm 表示选择关系_css3选择器用法介绍
- 【Under-the-hood-ReactJS-Part13】源码解读
- 为什么产品经理总在焦虑
- yolo-v2 v3实现笔记 mAP:mean average precision 平均精度均值
- php 观察者模式怎么用,php怎么实现观察者模式
- MySql 你真的会使用字符串索引吗???
- 《Reids 设计与实现》第十九章 慢查询日志
- Cron 表达式一篇通
- linux下qemu共享文件夹,QEMU Windows来宾和Linux主机之间的共享文件夹
- 洛谷——P1614 爱与愁的心痛
- 计算机硬盘满了怎么解决,电脑磁盘满了怎样清理
- 简单的个人介绍网页【附代码】
- win10系统自带的日历hover效果
- Python实现自动挂机脚本(基础篇)
- 2022_WWW_Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learning
- 职场漂流记:过往皆为浮云
- Java 获取当前时间前一个小时的时间
- 用于阿尔茨海默症分期早期检测的多模态深度学习模型
- 联想服务器TS130主板芯片组,【ThinkServer TS130配置】ThinkServer TS130塔式服务器配置-ZOL中关村在线...
- 潘建伟:与量子“纠缠”的逐梦者