📜  从 Pandas DataFrame 中随机选择列(1)

📅  最后修改于: 2023-12-03 15:21:53.347000             🧑  作者: Mango

从 Pandas DataFrame 中随机选择列

在处理数据时,我们常常需要从一个 DataFrame 中选取部分数据,而其中一种情况是需要随机选择其中的列。本文将介绍如何使用 Python 的 Pandas 库中的 sample 函数随机选择 DataFrame 中的列。

语法

sample 函数的语法如下所示:

DataFrame.sample(n=None, frac=None, axis=None, random_state=None)

其中:

  • n:要选取的行数或列数,如果不指定,则默认为 1。
  • frac:要选取的行数或列数所占总数的比例,如果不指定,则默认为 None。
  • axis:要选取的维度,0 表示选取行,1 表示选取列,如果不指定,则默认为 0。
  • random_state:用于控制随机种子的参数,确保在多次执行代码时输出结果的一致性。如果不指定,则每次执行程序时随机数都会不同。
示例

我们首先来创建一个简单的 DataFrame:

import pandas as pd
import numpy as np

df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})

现在,我们来随机选择其中的一列。我们可以使用如下的代码:

rand_col = df.sample(n=1, axis=1)
print(rand_col)

输出结果为:

   B
0  4
1  5
2  6

在这里,我们使用了 sample 函数,并且指定了要选取的列数为 1。由于我们想要选取列而不是行,所以我们还需要指定参数 axis=1

如果我们想要选择多列,可以将参数 n 的值设置为所需的列数。例如,如果我们想要选择两列,可以将代码修改为:

rand_cols = df.sample(n=2, axis=1)
print(rand_cols)

输出结果为:

   C  B
0  7  4
1  8  5
2  9  6

在这里,我们选择了两列,其中包括了列名为 B 和 C 的两列数据。

如果不想手动指定要选取的列数,可以使用 frac 参数,它可以指定要选取的列数所占总列数的比例。例如,要选择一半的列,可以将参数设置为 frac=0.5

rand_cols = df.sample(frac=0.5, axis=1)
print(rand_cols)

输出结果为:

   B  C
0  4  7
1  5  8
2  6  9

在这里,我们让 frac=0.5,这意味着我们需要随机选取一半的列。

最后,我们再来看一下如何控制随机种子,以确保随机数的一致性。我们可以在函数的参数中指定一个整数作为随机种子,例如:

rand_cols = df.sample(n=2, axis=1, random_state=42)
print(rand_cols)

输出结果为:

   B  A
0  4  1
1  5  2
2  6  3

在这里,我们将随机种子设置为 42,这样每次执行程序时随机选择的列都将是相同的。

总结

使用 Pandas DataFrame 中的 sample 函数,在数据处理时可以帮助我们轻松地随机选择行或列。在实际的工作中,我们可以根据具体需求,灵活地运用该函数,从而更好地进行数据分析和处理。