使用 pandas 的数据框进行概率测试

Doing a probability test using a data frame with pandas

我想使用循环对大型数据集进行概率测试。我知道如何进行计算,但我想将其作为测试。 (比如随机 "flipping the coin" 测试) 用这个假的 df:

df=pd.DataFrame([
['Alex',12, 'Apple'],['Bob',10, 'Banana'],['Clark',13, 'Citrus'], 
['Diana', 11, 'Banana'], ['Elisa', 13, 'Apple']
],columns=['Name','Age', 'Fruit'])

我如何创建一个随机选择一个名字的循环并获得水果 "Banana" 的概率?
我在想与以下内容一致的地方:

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,因为这就是概率。.

这显然行不通,但我希望你明白我在找什么。

这是使用 samplevalue_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

要获取 Banana 的值,只需从 pd.Series 索引 select:

df.sample(n=1000, replace=True)['Fruit'].value_counts(normalize=True)['Banana']

输出:

.418