使用PYTHON创建假数据(模拟数据)

使用PYTHON创建假数据(模拟数据)

/ 205 / 0

在这篇文章中,我想分享一个有趣的 Python 包和一些我在帮助客户构建原型时发现的示例。该包生成模拟或假数据,使用简单,如果您需要快速生成一些用于测试目的的虚拟或模拟数据,则可以很好地工作。

从我的角度来看,它对于教授分析以及如果您想轻松快速地生成具有许多不同数据类型的假数据或模型数据也很有用。然后,您可以将其导出为 .csv 或将 Pandas 数据框用于其他数据科学和分析用例。

它也包含一些很棒的文档:Faker 的文档

我想分享的几个例子如下所示。首先导入 Faker 库和 Pandas:

from faker import Faker
import pandas as pd

这里我们初始化 Faker 生成器并创建一个为随机名称生成假数据的示例:

faker = Faker()
faker.name()
'Eric Poole'您可能希望一次生成多个虚假数据记录:
for n in range(5):
    print(faker.name())
Whitney Davies
Christopher Johnson
Robert Washington
Zachary Williams
Mark Ramirez

您可以使用“提供者”生成许多其他不同类型的虚假数据。有关提供商列表,请参阅文档。

from faker.providers import internet, geo

您可以生成有关纬度和经度的假模拟数据,例如:

for n in range(5):
    print(faker.local_latlng(country_code="AU", coords_only=False))
('-31.95224', '115.8614', 'Perth', 'AU', 'Australia/Perth')
('-37.88333', '145.06667', 'Carnegie', 'AU', 'Australia/Melbourne')
('-32.05251', '115.88782', 'Willetton', 'AU', 'Australia/Perth')
('-32.05251', '115.88782', 'Willetton', 'AU', 'Australia/Perth')
('-33.75881', '150.99292', 'Baulkham Hills', 'AU', 'Australia/Sydney')

如果您想生成一个自定义的虚假数据类型列表并使用这些虚假数据点创建一个 Pandas 数据框:

df = []

for n in range(5):
    df.append({'Lat': faker.coordinate(center=74.0, radius=0.10),
               'Lon': faker.coordinate(center=40.8, radius=0.10),
               'Txt': faker.sentence(),
               'Nam': faker.name(),
               'Add': faker.address(),
               'Job': faker.job()
              })

df = pd.DataFrame(df)
df = df[['Nam', 'Job', 'Txt', 'Add', 'Lat', 'Lon']]
df

还有一个选项可以带来有关包预先构建的配置文件的虚假数据:

faker.profile()
{'job': 'Architect',
 'company': 'Martinez, Cruz and West',
 'ssn': '311-64-2980',
 'residence': '3864 Sanford Dam Suite 803\nWest Leroy, MS 46211',
 'current_location': (Decimal('-38.669420'), Decimal('86.843925')),
 'blood_group': 'B+',
 'website': ['http://church.com/',
  'https://www.mayer-maldonado.com/',
  'http://matthews.org/'],
 'username': 'ocannon',
 'name': 'David Johnson',
 'sex': 'M',
 'address': '1431 Berry Extensions\nSouth Jameshaven, ME 13555',
 'mail': 'wilkinssteven@gmail.com',
 'birthdate': datetime.date(1947, 1, 10)}

如果我们想 - 再次 - 从相同的模拟假数据创建一个 Pandas 数据框:

df2 = []

for n in range(3):
    df2.append(list(faker.profile().values()))

df2 = pd.DataFrame(df2, columns=faker.profile().keys())
df2

您还可以使用许多其他选项来生成其他虚假数据以及调整某些属性的生成方式。同样,这些文档确实非常有帮助!

0 人收藏

发表评论