在统计软件中3中特殊导入数据的方法包括:3. 随机数生成,也是一种高效自动生成数据的方法。今天我们使用几大统计工具分别进行演示。
在学习随机数生成数据框之前,我们先复习一下怎么在Python中导入自带数据和手工录入数据。
Excel生成随机数字的基础函数是RAND()。RAND():生成0-1的随机小数(8位小数)
RAND()*100:生成0-100的随机型小数(8位小数)
INT(RAND()*100):生成0-100的随机整数
RANDBETWEEN(0, 100):等价于上个命令,生成0-100的随机整数
RAND()*(b-a)+a:生成a到b之间的小数(8位小数)
Excel单元格中由函数生成的随机数字会随着每次新的操作而重新赋值。摁 F9 键也可以刷新数据。这个数据自动刷新被称为“自动重算”功能,可以在Excel的选项中改为“手动Manual”。如下图。
二、Stata中生成随机数字和数据
2.2 生成服从正太分布的随机数
刚才用到的函数是runiform(a, b),同理我们可以使用rnormal(a, b)来生成服从正太分布的随机数字。这里a是均值,b是方差,默认a=0,b=1。
. dis rnormal(0, 1)
.96945125
再次同理,如果想生成服从其它分布的随机数字,自使用相应的函数即可。具体可以参考Stata的帮助文件,如下图。
3.1 均匀分布随机数
> runif(5) ##随机生成5个0-1上服从均匀分布的数字
[1] 0.3721117 0.3533157 0.6245287 0.3629629 0.8267384
> runif(5, 2, 4) ##5个2-4的随机数字
[1] 3.577840 2.545053 3.356163 2.972466 3.524742
> x = runif(50) ##
> x
[1] 0.654313741 0.010750612 0.664279728 0.989241369
[5] 0.157953272 0.623989759 0.532645082 0.688334898
[9] 0.769586590 0.002820428 0.780777032 0.746295074
[13] 0.244242598 0.627596544 0.366842346 0.116852723
[17] 0.552604684 0.873311370 0.175121613 0.718984535
[21] 0.623732384 0.486349491 0.348247474 0.138669228
[25] 0.507153874 0.744990666 0.639488049 0.537489866
[29] 0.587281579 0.488738336 0.778982250 0.254766294
[33] 0.837063889 0.311226703 0.649325096 0.549533070
[37] 0.572817273 0.171129134 0.799913099 0.030952926
[41] 0.478483926 0.721633476 0.992871828 0.960445791
[45] 0.586032312 0.556384402 0.652898723 0.620106651
[49] 0.907198983 0.571987203
3.2 正太分布随机数语法:rnorm(n, mean=0, sd=1),n=个数;mean=均值,默认为0;sd是标准差,默认是1
原理和runif函数类似,我们在此不做演示。
至于其它类型的随机数字生成,则依靠相应的函数。原理和Stata类似。
四、在Python生成随机数字和数据
我们先说个重点,即Python中用NumPy和pandas生成一个随机的数据框。除了NumPy包的random函数,用来生成随机数另外一个重要的模块是random。

4.1 NumPy+pandas快速生成随机数据框
这里NumPy的随机数生成函数是主力。pandas只不过起一个转换数据格式的作用而已。
NumPy重要的随机数生成函数包括:np.random.rand(d0, d1, … , dn):用来生成0-1的随机数字(均匀分布);d0表示第一个维度的参数,d1表示第二个维度的参数,如此类推。
import numpy as np
import pandas as pd
##基于NumPy包生成随机数,再通过pandas转换为数据框
np.random.rand(5,2) ##生成5行2列的数组array
Out[16]:
array([[0.57167719, 0.06628198],
[0.73507217, 0.1703132 ],
[0.41942607, 0.89853925],
[0.58192626, 0.72808664],
[0.54990847, 0.29844433]])
pd.DataFrame(np.random.rand(5,2)) ##转换为5行2列的数据框
Out[17]:
0 1
0 0.365483 0.811755
1 0.211095 0.960215
2 0.537973 0.587952
3 0.607089 0.120266
4 0.269786 0.285295np.random.randn(d0, d1, … , dn):和上面的函数类似。区别在于生成的是服从标准正态分布的随机数。
##randn正太分布
pd.DataFrame(np.random.randn(5,2))
Out[19]:
0 1
0 -0.141764 0.453156
1 0.659923 0.246782
2 -0.898615 -1.436220
3 -1.606697 0.499991
4 -1.297734 -1.494120pn.random.randint(low [, high, size, dtype]):用来在制定范围生成随机整数。
pd.DataFrame(np.random.randint(0,100,[5,2]))
##[0,100)的5行2列随机整数
Out[20]:
0 1
0 24 44
1 56 93
2 95 90
3 42 18
4 39 90
如果要改变随机数字的范围,可以在生成的随机数字的基础上再进行运算。
4.2 Python random模块的random函数random.random():生成一个[0, 1)之间的随机实数
random.uniform(1, 3): 生成一个1-3之间均匀分布的实数
random.randint(a, b):生成一个介于a和b之间的整数
random.randrange(start, stop, step):相当于从start到stop之间,按照步长step随机抽取一个整数
random.randrange(2, 10, 2) ##从2,4,6,8中随机抽取一个
Out[26]: 8
5 小结四大统计软件对比:总的来说,R语言的随机数生成效果是最好的,一个函数可以指定数字个数和分布类型。其次Stata的比较直观,效率也很高。Python的优势在于,转化为数据框很方便
随机数字的生成基于某种函数或分布,通常默认使用的是均匀分布函数,另外正太分布也很常用
Python-R-Stata-Excel多种软件交叉学习,有助于我们对统计知识和数据分析的全面理解
—–全文结束—–
文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览214769 人正在系统学习中 相关资源:解析8583 文工具源码_8583 文60域-C++代码类资源-CSDN文库
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!