们在统计,数据分析,建模中常遇到大数据,sql取数太大机器卡死。其实如果我们懂得统计学的随机抽样方法,就可以四两拨千斤。
有时候我觉得大数据是忽悠人的,真正工程师和hacker讲究最小成本得到最优化解。二战中,英国人用随机抽样统计出了德国工厂真实坦克生产量。我们完全没有必要应用大数据,毕竟太耗时间和资源。损失一些精度,换来时间和资源空间是很好选择。这节课,我讲解pandas.DataFrame.sample常用于随机抽样原理。
欢迎各位同学学习我录制的更多相关知识从0到1Python数据科学之旅 :https://edu.csdn.net/combo/detail/1929
1 数据切片选取
1.1 pandas.DataFrame.sample 随机选取若干行
1.1.1 功能说明
有时候我们只需要数据集中的一部分,并不需要全部的数据。这个时候我们就要对数据集进行随机的抽样。pandas中自带有抽样的方法。
功能相似:numpy.random.choice
Generates a random sample from a given 1-D numpy array.
1.1.2 使用说明
1. 函数名及功能
DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None)[source]
2. 输入参数说明
参数名称 参数说明 举例说明
n 要抽取的行数
df.sample(n=3,random_state=1)
提取3行数据列表
注意,使用random_state,以确保可重复性的例子。
frac
抽取行的比例
例如frac=0.8,就是抽取其中80%。
df.sample(frac=0.8, replace=True, random_state=1)
replace
是否为有放回抽样,
True:有放回抽样
False:未放回抽样
True:取行数据后,可以重复放回后再取
False:取行数据后不放回,下次取其它行数据
注意:当N>总数据容量,replace设置为值时有效
weights
字符索引或概率数组
axis=0:为行字符索引或概率数组
axis=1:为列字符索引或概率数组
random_state
int: 随机数发生器种子
或numpy.random.RandomState
random_state=None,取得数据不重复
random_state=1,可以取得重复数据
axis
选择抽取数据的行还是列
axis=0:抽取行
axis=1:抽取列
也就是说axis=1时,在列中随机抽取n列,在axis=0时,在行中随机抽取n行。
3. 返回值说明
返回选择的N行元素的DataFrame对象。
欢迎访问讲师csdn学院教学主页:https://edu.csdn.net/lecturer/5602,学习更多python金融模型实战。