Выполнение теста вероятности с использованием фрейма данных с пандами - PullRequest
0 голосов
/ 13 марта 2019

Я хочу предварительно выполнить проверку вероятности большого набора данных с помощью цикла.Я знаю, как сделать расчет, но я хочу сделать это в качестве теста.(как случайный тест «подбрасывание монеты») с этим фальшивым 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 Ответ

3 голосов
/ 13 марта 2019

Вот один из способов сделать это, используя 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 
...