Pandas sample随机抽样
随机抽样,是统计学中常用的一种方法,它可以帮助我们从大量的数据中快速地构建出一组数据分析模型。在 Pandas 中,如果想要对数据集进行随机抽样,需要使用 sample() 函数。
sample() 函数的语法格式如下:
DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None)
参数说明如下表所示:
参数名称 | 参数说明 |
---|---|
n | 表示要抽取的行数。 |
frac | 表示抽取的比例,比如 frac=0.5,代表抽取总体数据的50%。 |
replace | 布尔值参数,表示是否以有放回抽样的方式进行选择,默认为 False,取出数据后不再放回。 |
weights | 可选参数,代表每个样本的权重值,参数值是字符串或者数组。 |
random_state | 可选参数,控制随机状态,默认为 None,表示随机数据不会重复;若为 1 表示会取得重复数据。 |
axis | 表示在哪个方向上抽取数据(axis=1 表示列/axis=0 表示行)。 |
该函数返回与数据集类型相同的新对象,相当于 numpy.random.choice()。实例如下:
import pandas as pd
import numpy as np
empdata = pd.read_csv("C:\\Users\\qwy\\Desktop\\data\\empdata.csv")
print("随机抽取3行数据:\n",empdata.sample(n=3))
print("随机抽取3列数据:\n",empdata.sample(n=3,axis=1))
输出结果:
随机抽取3行数据:
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
9 7844 TURNER SALESMAN 7698.0 1981-09-08 1500 0.0 30
4 7654 MARTIN SALESMAN 7698.0 1981-09-28 1250 1400.0 30
0 7369 SMITH CLERK 7902.0 1980-12-17 800 NaN 20
随机抽取3列数据:
EMPNO ENAME DEPTNO
0 7369 SMITH 20
1 7499 ALLEN 30
2 7521 WARD 30
3 7566 JONES 20
4 7654 MARTIN 30
5 7698 BLAKE 30
6 7782 CLARK 10
7 7788 SCOTT 20
8 7839 KING 10
9 7844 TURNER 30
10 7876 ADAMS 20
11 7900 JAMES 30
12 7902 FORD 20
13 7934 MILLER 10
再来看一组示例:
import pandas as pd
import numpy as np
empdata = pd.read_csv("C:\\Users\\qwy\\Desktop\\data\\empdata.csv")
print("随机抽取三个数据:\n",empdata['ENAME'].sample(n=3))
print("随机抽取50%数据:\n",empdata.sample(frac=0.5,replace=True))
输出结果:
随机抽取三个数据:
1 ALLEN
8 KING
9 TURNER
Name: ENAME, dtype: object
随机抽取50%数据:
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
0 7369 SMITH CLERK 7902.0 1980-12-17 800 NaN 20
5 7698 BLAKE MANAGER 7839.0 1981-05-01 2850 NaN 30
12 7902 FORD ANALYST 7566.0 1981-12-03 3000 NaN 20
5 7698 BLAKE MANAGER 7839.0 1981-05-01 2850 NaN 30
2 7521 WARD SALESMAN 7698.0 1981-02-22 1250 500.0 30
0 7369 SMITH CLERK 7902.0 1980-12-17 800 NaN 20
5 7698 BLAKE MANAGER 7839.0 1981-05-01 2850 NaN 30