虚拟数据:生成随机文本和数字数据到一个CSV/Excel文件?

exdqitrt  于 5个月前  发布在  其他
关注(0)|答案(1)|浏览(63)

因此,我尝试生成包含3列的虚拟数据:平方英尺,价格和自治区。对于前两个,这是纯粹的数字,这是好的。我有50,000行的数据都在电子表格上。然而,当我添加自治区,并指定随机值从列表中,我收到以下输出:

Sq. feet    Price  Borough
0           112   345382        5
1           310   901500        5
2           215   661033        5
3           147  1038431        5
4           212   296497        5

字符串
我没有使用过像 * np.random.randint * 这样与数值生成相关的软件包
使用"Borough" : random.randrange(len(word))
我哪里做错了?
下面的代码

import random

import pandas as pd
import numpy as np

WORDS = ["Chelsea", "Kensington", "Westminster", "Pimlico", "Bank", "Holborn", "Camden", "Islington", "Angel", "Battersea", "Knightsbridge", "Bermondsey", "Newham"]
word = random.choice(WORDS)
np.random.seed(1)
data3 = pd.DataFrame({"Sq. feet" : np.random.randint(low=75, high=325, size=50000),
                     "Price" : np.random.randint(low=200000, high=1250000, size=50000),
                      "Borough" : random.randrange(len(word))
                     })

df = pd.DataFrame(data3)
df.to_csv("/Users/thomasmcnally/PycharmProjects/real_estate_dummy_date/realestate.csv", index=False)

print(df)


我期望从WORDS []中得到一行随机的单词值,而返回值只是数字5。显然,为基于文本的数据创建另一个模块并将它们打印在不同的文件中是没有意义的。

x8diyxa7

x8diyxa71#

我猜你想从WORDS中生成一个包含50,000个随机选择的列表-它本身可以被有效地重命名为BOROUGHS:

import random
import pandas as pd
import numpy as np

SIZE = 50_000
BOROUGHS = ["Chelsea", "Kensington", "Westminster", "Pimlico", "Bank", "Holborn", "Camden", "Islington", "Angel", "Battersea", "Knightsbridge", "Bermondsey", "Newham"]

np.random.seed(1)
data3 = pd.DataFrame({"Sq. feet" : np.random.randint(low=75, high=325, size=SIZE),
  "Price" : np.random.randint(low=200000, high=1250000, size=SIZE),
  "Borough" : [random.choice(BOROUGHS) for _ in range(SIZE)]
})

df = pd.DataFrame(data3)
df.to_csv("realestate.csv", index=False)
print(df)

字符串

输出

Sq. feet    Price      Borough
0           112   345382      Pimlico
1           310   901500    Battersea
2           215   661033      Holborn
3           147  1038431  Westminster
4           212   296497      Holborn
...         ...      ...          ...
49995       252  1065034      Holborn
49996       117   752615      Holborn
49997       238   803058       Camden
49998       147  1163555         Bank
49999       269   888623  Westminster


除此之外.无论你在代码中有一个重复的数字,比如你的50,000,通常是一个好主意,让它成为一个变量,并在顶部声明它,然后它可以被改变,而不会给一些可怜的未来程序员带来维护噩梦,他们会到处寻找每一个出现的50,000。
如果你想了解它们,这个结构被称为 “list comprehension”

[random.choice(BOROUGHS) for _ in range(SIZE)]

相关问题