【发布时间】:2021-09-27 21:37:40
【问题描述】:
我对 python 比较陌生,我想按他们的组对以下数据框中的数据集进行采样,而不是两次选择同一组。我编写的代码确实对数据集进行了正确采样,但是,它可以选择相同的数据集两次。
请注意:以下数据是测试数据,我使用代码的实际数据要大得多,因此无法使用索引。
数据:
d={'group': ['A','A','A','B','B','B','C','C','C','D','D','D','E','E','E'], 'number': [1,2,3,1,2,3,1,2,3,1,2,3,1,2,3],'weather':['hot','hot','hot','cold','cold','cold','hot','hot','hot','cold','cold','cold','hot','hot','hot']}```
df = pd.DataFrame(data=d)
df
group number weather
A 1 hot
A 2 hot
A 3 hot
B 1 cold
B 2 cold
B 3 cold
C 1 hot
C 2 hot
C 3 hot
D 1 cold
D 2 cold
D 3 cold
E 1 hot
E 2 hot
E 3 hot
我的代码
df_s=[]
for typ in df.group.sample(3,replace=False):
df_s.append(df[df['group']==typ])
df_s=pd.concat(df_s)
df_s
结果
group number weather
E 1 hot
E 2 hot
E 3 hot
E 1 hot
E 2 hot
E 3 hot
D 1 cold
D 2 cold
D 3 cold
结果应该给出 3 个不同的组数据,但是可以看出只有 2 个(E & D),这意味着代码可以多次选择同一组。
【问题讨论】:
-
您可以使用
np.random.seed(32)使数据可重现。您可以将值32替换为您想要的任何值。因此,如果您共享代码或重新运行代码,您将生成相同的随机数据样本。
标签: python pandas random sample sample-data