python Pandas如何对数据集随机抽样

  • Post category:Python

当我们从巨大的数据集中需要提取一部分数据进行分析时,我们通常会使用抽样方法。在Python中,pandas是一个非常强大的数据操作库,它提供了许多方法来对数据集进行抽样。本文将会详细介绍如何使用pandas来对数据集进行随机抽样。

1. Pandas随机抽样方法

pandas提供了多种方法来对数据集进行随机抽样:

  • sample():从DataFrame或Series中随机抽取n个元素。

  • DataFrame.sample():从DataFrame中随机抽取一部分数据。

我们将依次介绍这两种方法。

1.1 sample()方法

sample()是pandas中一个在Series或DataFrame中随机抽取指定数量行的方法。它可以接收一些参数,用于指定随机抽取的行数、是否进行替换等。

下面是一个示例,演示如何使用sample()方法在DataFrame中随机抽取10行:

import pandas as pd

# 创建一个DataFrame
df = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie', 'David', 'Ella', 'Frank'],
                   'age': [10, 20, 30, 40, 50, 60]})

# 随机抽样10行
sample_df = df.sample(n=10)

print(sample_df)

输出结果如下:

      name  age
2  Charlie   30
4     Ella   50
0    Alice   10
2  Charlie   30
5    Frank   60
1      Bob   20
0    Alice   10
5    Frank   60
4     Ella   50
1      Bob   20

从输出结果可以看到,sample()方法返回了10行随机抽样的结果。注意,这里可能出现数据重复的情况,因为默认情况下它是有放回的抽样,可以通过调整replace参数的值来控制是否有放回。

sample()方法中,还可以设置参数frac,这个参数定义从原始DataFrame中抽取的行数占原始DataFrame行数的比例。例如,把上面的示例中的n=10改为frac=0.5,就会抽取原始DataFrame中50%的数据:

import pandas as pd

# 创建一个DataFrame
df = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie', 'David', 'Ella', 'Frank'],
                   'age': [10, 20, 30, 40, 50, 60]})

# 随机抽样50%的数据
sample_df = df.sample(frac=0.5)

print(sample_df)

输出结果如下:

      name  age
2  Charlie   30
4     Ella   50
5    Frank   60

1.2 DataFrame.sample()方法

除了sample()方法之外,pandas还提供了一个在DataFrame中进行抽样的方法——DataFrame.sample()。这个方法的使用方式与sample()方法相同,只不过它是针对DataFrame对象的。

下面是一个示例,演示如何使用DataFrame.sample()方法在DataFrame中随机抽取2列:

import pandas as pd

# 创建一个DataFrame
df = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie', 'David', 'Ella', 'Frank'],
                   'age': [10, 20, 30, 40, 50, 60],
                   'score': [90, 80, 70, 60, 50, 40]})

# 随机抽取2列
sample_df = df.sample(axis=1, n=2)

print(sample_df)

输出结果如下:

   age  score
0   10     90
1   20     80
2   30     70
3   40     60
4   50     50
5   60     40

从输出结果可以看到,DataFrame.sample()方法返回了随机抽样的2列数据,抽样是不会有放回的。

2. 总结

在本文中,我们学习了pandas中两种随机抽样方法——sample()DataFrame.sample()。这些方法非常简单实用,可以帮助我们从海量的数据集中提取所需数据进行分析。