使用 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,因为这就是概率。.
这显然行不通,但我希望你明白我在找什么。
这是使用 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
要获取 Banana 的值,只需从 pd.Series 索引 select:
df.sample(n=1000, replace=True)['Fruit'].value_counts(normalize=True)['Banana']
输出:
.418
我想使用循环对大型数据集进行概率测试。我知道如何进行计算,但我想将其作为测试。 (比如随机 "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,因为这就是概率。.
这显然行不通,但我希望你明白我在找什么。
这是使用 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
要获取 Banana 的值,只需从 pd.Series 索引 select:
df.sample(n=1000, replace=True)['Fruit'].value_counts(normalize=True)['Banana']
输出:
.418