在统计软件中3中特殊导入数据的方法包括:3. 随机数生成,也是一种高效自动生成数据的方法。今天我们使用几大统计工具分别进行演示。

在学习随机数生成数据框之前,我们先复习一下怎么在Python中导入自带数据和手工录入数据。

##导入sklearn机器学习包自带的数据集

from sklearn import datasets ##导入datasets

iris = datasets.load_iris() ##导入iris数据集

##手工录入数据

import pandas as pd ##导入pandas包

data = {'name': ['Steph', 'LeBron'],

##用字典的方式,完成数据一列一列的输入

'age': [32, 36 ],

'height': [1.92, 2.06],

'score': [97, 99]}

labels = ['a', 'b']

df1 = pd.DataFrame(data, index=labels)

##用列表labels的取值来当成每行的索引

df1

Out[9]:

name age height score

a Steph 32 1.92 97

b LeBron 36 2.06 99

##添加新行(新的观测值)

df1.loc['c'] = ['Harden', '32', 1.96, 98]

df1

Out[10]:

name age height score

a Steph 32 1.92 97

b LeBron 36 2.06 99

c Harden 32 1.96 98

接下来,我们将逐一讲解如何使用Excel、Stata、R和Python生成随机数字和数据。

一、Excel中的随机数字生成Excel,翻译成中文就是牛p的意思

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”。如下图。

用Excel基于上面4种随机函数生成随机数字,结果如下图。

二、Stata中生成随机数字和数据商业统计软件之王 Stata

2.1 生成[a, b]之间的随机数

通过rniform(a, b)函数实现。默认a=0,b=1

. dis runiform() //返回一个7位的0-1的均匀分布随机小数

. dis 2+(5-2)*runiform() //a+(b-a)*runiform(),生成a到b之间的均匀分布随机小数

2.8006571

可以上句命令的基础上取整:

. dis int(2+(5-2)*runiform())

2

还可以通过指定seed的值来重现随机的结果(可见计算机中随机不是真正的随机,而是随机的模拟)。

. set seed 1898

. set obs 50

. gen var1 = runiform() //0-1之间的随机小数

. gen var2 = int(0+(100-0)*runiform()) //0-100之间的随机整数

*等价于 runiform(0, 100)

结果如下:

2.2 生成服从正太分布的随机数

刚才用到的函数是runiform(a, b),同理我们可以使用rnormal(a, b)来生成服从正太分布的随机数字。这里a是均值,b是方差,默认a=0,b=1。

. dis rnormal(0, 1)

.96945125

再次同理,如果想生成服从其它分布的随机数字,自使用相应的函数即可。具体可以参考Stata的帮助文件,如下图。

三、R语言中的随机数生成开源统计之王 R语言

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。Life is 苦短, you need Python!

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随机生成一个整数n、求s=1+2+3_随机数字生成与数据杜撰—Python、Stata、R和Excel同步实现(附代码)...相关推荐

  1. JS如何随机生成一个整数

    随机生成一个整数的第一步是要了解2个js方法: 1.JavaScript random() 方法 Math.random(): 返回介于 0(包含) ~ 1(不包含) 之间的一个随机数 2.JavaS ...

  2. Java黑皮书课后题第3章:3.10(游戏:加法测试)程序清单3-3随机产生一个减法问题。修改这个程序,随机产生一个计算两个小于100的整数的加法问题

    3.10(游戏:加法测试)程序清单3-3随机产生一个减法问题.修改这个程序,随机产生一个计算两个小于100的整数的加法问题 题目 题目概述 参考:程序清单3-3 代码 题目 题目概述 3.10(游戏: ...

  3. 1+r的n次方c 语言怎么写,(1+R)的负N次方等于一个整数,求R的公式!

    (1+R)的负N次方等于一个整数,求R的公式! 关注:177  答案:4  手机版 解决时间 2021-01-23 23:11 提问者慢慢学会遗忘 2021-01-23 17:23 比如说(1+R)的 ...

  4. 3.12 编写程序从键盘输入一个整数,计算并输出该数的数字之和。例如:请输入 一个整数:8899123 各位数字之和为:40

    package booksTest;import java.util.Scanner;public class p54_3_12 {public static void main(String[] a ...

  5. python如何随机生成一个整数_Python生成随机数的方法

    如果你对在Python生成随机数与random模块中最常用的几个函数的关系与不懂之处,下面的文章就是对Python生成随机数与random模块中最常用的几个函数的关系,希望你会有所收获,以下就是这篇文 ...

  6. python生成一个含有20个随机数的列表_python随机模块22个函数详解(上)

    作者:小伍哥 来源: AI入门学习 今天给大家纤细介绍下python中的随机模块,随机数可以用于数学,游戏,安全等领域中,还经常被嵌入到算法中,用以提高算法效率,并提高程序的安全性.平时数据分析各种分 ...

  7. python随机密码生成以整数17为随机数种子_简述pythonpytorch 随机种子的实现

    随机数广泛应用在科学研究, 但是计算机无法产生真正的随机数, 一般成为伪随机数. 它的产生过程: 给定一个随机种子(一个正整数), 根据随机算法和种子产生随机序列. 给定相同的随机种子, 计算机产生的 ...

  8. python输入一个三位数的整数、求该数的3个数字之和_Python3 数字(Number)

    Python 数字数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间. 以下实例在变量赋值时 Number 对象将被创建: var1 = 1 var ...

  9. 用一个随机函数random(),求[0,1]之间的随机小数

    srand函数是随机数发生器的初始化函数.原型:void srand(unsigned seed); 用法:它初始化随机种子,会提供一个种子,这个种子会对应一个随机数,如果使用相同的种子后面的rand ...

  10. python怎么定义一个整数_python整数实现

    整数对象定义: typedef struct { PyObject_HEAD long ob_ival; } PyIntObject; 可以看到仅多了一个long域ob_ival来保存整数.之所以用l ...

最新文章

  1. “编程不规范,同事两行泪!”
  2. mysql null排在最后面
  3. 问题排查:vue项目刷新页面加载了500多个请求?
  4. linux的常用操作——查看和修改文件权限
  5. 去德国做汉语老师,月薪四万
  6. python自动化开发和全栈开发_python全栈开发devops运维自动化方向初到高级在线课程分享...
  7. spring cloud中gateway存在的意义是什么?
  8. 联想ThinkPad E420安装7450M的显卡驱动后进入不了系统,试了4个系统都不..
  9. 如何利用Python程序读取Excel创建折线图
  10. LSTM(长短期记忆网络)原理与在脑电数据上的应用
  11. vue开发银行流水查询系统--基于巨杉数据库
  12. 四路组相联原理_计算机组成原理中是如何求是几路组相联映像?
  13. Stereo Parallel Tracking and Mapping for robot localization(S-PTAM)
  14. 阿俊带你用Kotlin刷算法(四)
  15. 计蒜客 2018南京网络赛 I Skr(马拉车+哈希)
  16. Windows10 2004五月更新正式版官方ISO纯净版镜像下载
  17. BUG解决记录--iOS13中iPhoneX系统右箭头出现黑框
  18. “币圈贾跃亭”天价碰瓷巴菲特,王小川隔空回应:骗子!
  19. 金融专业术语之——信用转换+期限转换+流动性转换
  20. mt7620a上带机量的提高(一)

热门文章

  1. 关注小升初 | 中考分数线刷屏的背后是数千东昌家长学生的泪水
  2. (附源码)springboot电影院售票与管理系统 毕业设计 011449
  3. Nginx 局域网共享
  4. android 根据屏幕大小自行选择图片
  5. UML for mac
  6. 如何面对软件工程师考试?
  7. 如何使用保存实例状态保存活动状态?
  8. 置信区间 置信水平 边际误差
  9. 获取openwrt mac地址
  10. Update Strategy小记