使用带有熊猫的数据框进行概率测试

时间:2019-03-13 15:37:15

标签: python pandas probability

我想使用循环对大数据集进行概率测试。我知道如何进行计算,但我想将其作为测试。 (如随机的“掷硬币”测试) 这个伪造的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,因为那是概率。

它显然不起作用,但我希望您理解我在寻找什么。

1 个答案:

答案 0 :(得分:3)

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

要获取香蕉的值,只需从pd.Series中选择索引:

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

输出:

.418