我想使用循环对大数据集进行概率测试。我知道如何进行计算,但我想将其作为测试。 (如随机的“掷硬币”测试) 这个伪造的df:
df=pd.DataFrame([
['Alex',12, 'Apple'],['Bob',10, 'Banana'],['Clark',13, 'Citrus'],
['Diana', 11, 'Banana'], ['Elisa', 13, 'Apple']
],columns=['Name','Age', 'Fruit'])
如何创建一个随机选择一个名称的循环并获得获得“香蕉”果实的可能性?
我在想符合以下条件的地方:
experiments = 10000
bananas = 0
for i in range(experiments):
for draw in range(1):
result = df[df['Fruit']=='Banana'][random.randrange(len(df))]
if result=='Banana':
bananas += 1
bananas/experiments
结果接近0.4,因为那是概率。
它显然不起作用,但我希望您理解我在寻找什么。
答案 0 :(得分:3)
这是使用sample
和value_counts
的一种方法:
df.sample(n=1000, replace=True)['Fruit'].value_counts(normalize=True)
输出:
Banana 0.418
Apple 0.387
Citrus 0.195
Name: Fruit, dtype: float64
要获取香蕉的值,只需从pd.Series中选择索引:
df.sample(n=1000, replace=True)['Fruit'].value_counts(normalize=True)['Banana']
输出:
.418