【问题标题】:Creating pandas dataframe in normal distribution在正态分布中创建熊猫数据框
【发布时间】:2021-04-16 16:56:39
【问题描述】:

想要创建一个示例数据框——基于 json 模板——看起来尽可能真实。因此正态分布。

这是我尝试过的

import json, random
import pandas as pd

sample_data = """{"product1":[
    {"category":"Fruits",
    "productlist":["Bell Peppers","Red Chillies", "Onions", "Tomatoes"]}
],
"product2":[
    {"category":"Vegetables",
    "productlist":["Apple","Mango","Banana"]}
]}"""

products = json.loads(sample_data)

colHeaders = []

for k,v in products.items():
    colHeaders.append(v[0]['category'])

df = pd.DataFrame(columns= colHeaders)

for i in range (1000):
    itemlist = []
    for k,v in products.items():
        itemlist.append(random.choice(v[0]['productlist']))
    #print(itemlist)
    df.loc[len(df)] = itemlist

print(df)

我不确定我做的是否正确。如果没有,请帮助我

  • 如何检查数据框行是否代表正态分布?
  • 在这种情况下如何尝试其他发行版?

我提到的其他相关 Stack Overflow 问题是:

【问题讨论】:

    标签: python pandas dataframe random


    【解决方案1】:

    我认为你应该做的是生成正态分布的整数并将它们作为列表的索引。在我看来,绘制您生成的数字也是检查它们是否为正态分布的最佳方法,它应该类似于正态分布的钟形。然而,由于 20 是一个很小的数字,它可能并不完全是需要记住的所需形状。我认为以下链接包含您需要的所有信息。

    How to generate a random normal distribution of integers

    【讨论】:

    • productlist = ["Apple","Mango","Banana"] 可以被视为productlist = [0,1,2],但其余的逻辑不会保持不变吗?`
    • 不确定你的意思,但我认为你的方法很好,我只是不确定它是否会产生随机分布。如果您决定使用不同的随机生成器,您的代码将更改为:for k,v in products.items(): itemlist.append(v[0]['productlist'][random_integer]) 这里唯一的问题是它分别为两个列表生成随机整数,这意味着您有两个范围的四舍五入分布(0,3 ) 和 (0,4) 如果这确实是你想要的
    • 根据您的建议,random_integer 将处于正态分布,但不是产品列表中的值。这个想法是附加到数据框(作为行)的产品列表看起来像真实发生的事情。
    • 好吧,因为您的产品列表中有项目,所以没有真正的方法可以在它们之间进行正态分布。我所描述的东西只有在列表被排序时才有用。据我所知,任何随机函数都会做你想做的事,尤其是因为示例列表太小了。
    猜你喜欢
    • 1970-01-01
    • 2015-09-12
    • 2016-08-28
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 2019-12-21
    • 2022-01-18
    • 2019-06-07
    相关资源
    最近更新 更多