Python 在熊猫中创造分布

Python 在熊猫中创造分布,python,pandas,dataframe,distribution,Python,Pandas,Dataframe,Distribution,我想生成具有特定分布的随机/模拟数据集 例如,该分布具有以下属性 一千人口 性别组合为:男性49%,女性50%,其他1% 年龄分布如下:0-30岁(30%)、31-60岁(40%)、61-100岁(30%) 结果数据框将有1000行,两列称为性别和年龄(具有上述值分布) 在Pandas或其他图书馆中是否有这样做的方法?您可以尝试: N = 1000 gender = np.random.choice(["male","female", "othe

我想生成具有特定分布的随机/模拟数据集

例如,该分布具有以下属性

  • 一千人口
  • 性别组合为:男性49%,女性50%,其他1%
  • 年龄分布如下:0-30岁(30%)、31-60岁(40%)、61-100岁(30%)
  • 结果数据框将有1000行,两列称为性别和年龄(具有上述值分布)

    在Pandas或其他图书馆中是否有这样做的方法?

    您可以尝试:

    N = 1000
    gender = np.random.choice(["male","female", "other"], size=N, p = [.49,.5,.01])
    
    age = np.r_[np.random.choice(range(30),size= int(.3*N)),
           np.random.choice(range(31,60),size= int(.4*N)),
           np.random.choice(range(61,100),size= N - int(.3*N) - int(.4*N) )]
    np.random.shuffle(age)
    
    df = pd.DataFrame({"gender":gender,"age":age})
    
    你可以尝试:

    N = 1000
    gender = np.random.choice(["male","female", "other"], size=N, p = [.49,.5,.01])
    
    age = np.r_[np.random.choice(range(30),size= int(.3*N)),
           np.random.choice(range(31,60),size= int(.4*N)),
           np.random.choice(range(61,100),size= N - int(.3*N) - int(.4*N) )]
    np.random.shuffle(age)
    
    df = pd.DataFrame({"gender":gender,"age":age})
    

    numpy.random.choice
    ?或者你想用这些概率创建一个样本?对于年龄,61+意味着什么(上限是多少?100?120?)。年龄是否均匀分布在年龄范围内?或者年龄只是一个类别指标,而不是实际数字?我编辑了年龄的上界
    numpy.random.choice
    你想要准确的百分比混合吗?或者你想用这些概率创建一个样本?对于年龄,61+意味着什么(上限是多少?100?120?)。年龄是否均匀分布在年龄范围内?或者年龄只是类别的一个指标而不是实际数字?我编辑了ageuse
    randint(31,61,size=…)
    的上界。我从OP上读到,年龄将以括号表示,并且可以以与性别相同的方式生成。@PaulH 61+意味着一个具有长长度的分布,但我要说的是,数组应该从三个类别中选择,而不是从连续分布中选择。这个问题模棱两可。我只是在分享我的想法intrepretation@PaulH完全同意你的看法使用
    randint(31,61,size=…)
    可能更快。我从OP中了解到,年龄将以括号表示,并且可以以与性别相同的方式生成。@PaulH 61+意味着一个长尾巴的分布,但我要说的是,数组应该从三个类别中选择,而不是从连续分布中选择。这个问题模棱两可。我只是在分享我的想法intrepretation@PaulH完全同意你的意见