我有一个电子表格,其中包含来自Pro Evolution Soccer的7,000个球员统计信息,我想根据他的位置获取每个属性的每个值的发生率。
类似的东西:
Striker - Attack = 99: 1.3%; 98: 1.8%; 97: 3.5%;...
CenterBack - Attack = 99: 0.002%; 98: 0.003%; 97: 0.006%;...
然后,我将基于此参数创建一个随机播放器生成器。
答案 0 :(得分:2)
直接回答您的问题:当您想知道某个分布的百分位数时,可以使用numpy
import numpy as np
strikerAttackValueList=np.random.randint(0,100,1000)#example of stats list
percentile50=np.percentile(strikerAttackValueList,50)
但这既是数学统计问题,又是编码问题。
第一步是检查Pro Evolution Soccer中的值如何分配。这可以是正常的,均匀的..(https://en.wikipedia.org/wiki/List_of_probability_distributions,具有一定的平均值和标准偏差。 要知道这一点,请导入您想要学习的统计信息并执行以下操作:http://www.insightsbot.com/blog/WEjdW/fitting-probability-distributions-with-python-part-1
然后,要生成随机玩家统计信息,您可以使用random或numpy(例如,假设均匀分布在0到100之间):
import random
strikerAttackValue=random.randint(0,100)
print(strikerAttackValue)
import numpy as np
strikerAttackValue=np.random.randint(0,100)
print(strikerAttackValue)
答案 1 :(得分:1)
如果您想直接采样,我认为np.random.choice可以解决问题:
import numpy as np
# generate some stats (ie your soccer values)
np.random.seed(1)
soccer_stats = np.random.normal(0, 1, size=100)
# sample from them
sampled_stat = np.random.choice(soccer_stats)
print(sampled_stat)
-0.8452056414987196
查看np.histogram,以观察要从中采样的分布。 collections.Counter非常适合查看非数字数据的分布(也许是您的足球运动员的姓名?)