以下是一个示例代码,用于从多列中随机抽取经验分布的值:
import pandas as pd
import numpy as np
# 创建一个示例数据集
data = {
'group': ['A', 'A', 'A', 'B', 'B', 'B'],
'col1': [1, 2, 3, 4, 5, 6],
'col2': [7, 8, 9, 10, 11, 12],
'col3': [13, 14, 15, 16, 17, 18]
}
df = pd.DataFrame(data)
# 按组计算列的经验分布
grouped = df.groupby('group')
distributions = grouped.apply(lambda x: x.apply(pd.Series.value_counts))
# 随机抽取值
samples = {}
for col in df.columns[1:]:
samples[col] = grouped.apply(lambda x: np.random.choice(x[col], size=len(x), replace=True, p=None))
# 打印抽样结果
for group, sample in samples.items():
print(f'Group: {group}')
print(sample)
print()
这个示例代码首先创建了一个包含组信息和多列数据的示例数据集。然后使用groupby
函数计算每个组中每列值的经验分布,并将结果保存在distributions
变量中。
接下来,使用np.random.choice
函数从每个组中的每列中随机抽取值,其中size
参数设置为当前组的长度,replace
参数设置为True
表示允许重复抽样,p
参数设置为None
表示采用均匀分布进行抽样。
最后,打印每个组中每列抽样的结果。
请注意,这只是一个示例代码,具体的实现方法可能因数据集的结构和要求的结果而有所不同。
上一篇:按组从多个列中获取最大值的方法
下一篇:按组从列中仅获取值的第一次出现