看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
pandas 的 sample
方法用于从 DataFrame
或 Series
中随机抽取样本。它可以用于数据抽样、生成测试数据、或对数据进行随机化处理。
DataFrame
Series
语法如下:
DataFrame.sample(
n=None,
frac=None,
replace=False,
weights=None,
random_state=None,
axis=None,
ignore_index=False
)
n
:整数,可选。要返回的随机样本数。如果指定了 frac
,则忽略此参数。frac
:浮点数,可选。要返回的样本占总行数或列数的比例(在 0 和 1 之间)。如果指定了 n
,则忽略此参数。replace
:布尔值,默认值为 False
。是否允许重采样(即样本可以重复)。weights
:str
或者 ndarray-like
,可选。每一行的抽样权重。如果没有指定,则每一行被选中的概率相同。random_state
:整数或 numpy.random.RandomState
,可选。随机数生成器的种子。如果没有指定,则使用系统时间。axis
:{0 or ‘index’, 1 or ‘columns’},默认 0。抽样的轴,0 代表行,1 代表列。ignore_index
:布尔值,默认值为 False
。如果为 True
,则忽略原始索引,将返回的样本索引重置。返回与输入类型相同的对象(即 DataFrame
或 Series
)。
import pandas as pd
# 构造示例数据
data = pd.DataFrame({
'A': range(10),
'B': [x ** 2 for x in range(10)]
})
# 从 DataFrame 中抽取 3 个随机样本
sampled_data = data.sample(n=3, random_state=1)
# 输出结果
print(sampled_data)
输出:
A B
2 2 4
9 9 81
6 6 36
import pandas as pd
# 构造示例数据
data = pd.Series(range(10))
# 从 Series 中抽取 30% 的随机样本
sampled_data = data.sample(frac=0.3, random_state=1)
# 输出结果
print(sampled_data)
输出:
2 2
9 9
6 6
dtype: int64
import pandas as pd
# 构造示例数据
data = pd.DataFrame({
'A': range(10),
'B': [x ** 2 for x in range(10)]
})
# 指定权重
weights = [0.1] * 5 + [0.02] * 5
# 根据权重抽取 3 个随机样本
sampled_data = data.sample(n=3, weights=weights, random_state=1)
# 输出结果
print(sampled_data)
输出:
A B
0 0 0
4 4 16
3 3 9
import pandas as pd
# 构造示例数据
data = pd.DataFrame({
'A': range(10),
'B': [x ** 2 for x in range(10)]
})
# 允许重采样,抽取 15 个样本
sampled_data = data.sample(n=15, replace=True, random_state=1)
# 输出结果
print(sampled_data)
输出:
A B
2 2 4
9 9 81
6 6 36
4 4 16
0 0 0
0 0 0
1 1 1
7 7 49
3 3 9
2 2 4
4 4 16
9 9 81
6 6 36
1 1 1
7 7 49
语法是 GroupBy.sample(n=None, frac=None, replace=False, weights=None, random_state=None)
,从每组中随机返回一个项目样本。您可以使用random_state进行再现。
df = pd.DataFrame(
{"a": ["red"] * 2 + ["blue"] * 2 + ["black"] * 2, "b": range(6)}
)
df
a b
0 red 0
1 red 1
2 blue 2
3 blue 3
4 black 4
5 black 5
# 为a列中的每个不同值随机选择一行。
# random_state参数可用于保证再现性:
df.groupby("a").sample(n=1, random_state=1)
a b
4 black 4
2 blue 2
1 red 1
# 将 frac 设置为采样固定比例,而不是计数:
df.groupby("a")["b"].sample(frac=0.5, random_state=2)
5 5
2 2
0 0
Name: b, dtype: int64
# 通过设置权重来控制组内的样本概率:
df.groupby("a").sample(
n=1,
weights=[1, 1, 1, 0, 0, 1],
random_state=1,
)
a b
5 black 5
2 blue 2
0 red 0
通过这些示例,我们可以看到如何使用 sample
方法从 DataFrame
或 Series
中抽取随机样本。该方法在数据分析和处理过程中非常有用,特别是在需要随机化数据或生成子集时。
更新时间:2024-07-15 08:24:41 标签:pandas python sample 随机 样本