Pandas数据分析面试基础题(十三)

318 阅读2分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

在数据分析中,有时候数据集特别大,使用起来可能很慢,而我们并不需要数据集全部的数据,而是其中的一部分,这时我们就可以对数据集进行随机抽样,接下来就来说一下 Pandas 中的随机抽样。

试题:如何对 DataFrame 数据进行随机抽样?

(难度:medium)

分析 在 Pandas 中,如果想要对数据集进行随机抽样,可以使用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,表示取得数据不会重复,如果设置为任意实数,则每次随机的结果是一样的。
  • axis:表示在哪个方向上进行数据抽取,axis=1表示列,axis=0表示行。 具体使用如下:
import pandas as pd

data = pd.DataFrame({
         'stu_no':[1,2,3,4,5],
         'name': ['Zhangyi', 'Zhanger', 'Zhangsan', 'Zhangsi', 'Zhangwu'],
         'score':[90,87,76,60,68]})

# 默认随机选择两行
print(data.sample(n=2))
# 随机选择两列
print(data.sample(n=2, axis=1))

结果输出如下:

   stu_no     name  score
0       1  Zhangyi     90
3       4  Zhangsi     60
   score  stu_no
0     90       1
1     87       2
2     76       3
3     60       4
4     68       5

如果没有设置random_state参数的话,默认每次抽样结果有可能是不一致的,如果想要每次抽样的结果不变,可以设置random_state为任意实数。

# 设置抽样结果不变
print(data.sample(n=2, random_state=111))
print(data.sample(n=2, axis=1, random_state=22))

原创不易,如果小伙伴们觉得有帮助,麻烦点个赞再走呗~

最后,感谢女朋友在工作和生活中的包容、理解与支持 !