社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python造假数据,用这个库

Crossin的编程教室 • 5 年前 • 544 次点击  


大家好,欢迎来到 Crossin的编程教室 !

在程序测试的时候,常常需要用到很多数据来进行测试。

比如姓名、性别、年龄、电话、邮箱等等。

如果手动制造数据的话,起名字比如“小明”、“小红”、“张三”、“李四”这些,有没有考虑这些名字的感受,他们也很累的吧。

再比如密码,网上排名最烂的密码,不也是“123456”,“abcdef”,“asdf”这些。

这样无厘头地制作数据确实很伤神,效率还低,那该怎么办?

Faker扩展库

这时,Python扩展库Faker来了,带着它那各种各样的数据来了。

先安装faker

pip install Faker

创建faker对象

from faker import Faker
fake = Faker()

随机生成一个名字

fake.name()  # 'Nancy Horton'

上边生成的名字是英文的,想要个中文名字怎么办?

很简单,在创建Faker对象的时候,指定语言“中文”就可以。

fake = Faker("zh_CN")

一些常用的语言包括以下等等:

  • 简体中文:zh_CN
  • 繁体中文:zh_TW
  • 美国英文:en_US
  • 英国英文:en_GB
  • 德文:de_DE
  • 日文:ja_JP
  • 韩文:ko_KR
  • 法文:fr_FR

都有什么样的数据

用faker可以生成哪些数据呢?

faker 提供了一些Standard Providers,列出了一些较为较为常用的数据。

  • address
  • company
  • date_time
  • job
  • person
  • phone_number
  • profile
  • python
  • user_agent

比如生成“地址”信息

In [1]: fake.address()
Out[1]: '北京市大冶市海陵赵路x座 941837'

这里给出的是一整条“地址”的信息,你也可以通过building_number()、city()、street_address()等获取单个信息

这些字段其实记不住也没什么,需要用哪个的时候查阅官方文档就行。

文档链接

https://faker.readthedocs.io/en/master/providers.html

再比如生成“职位”信息

In [2]: fake.job()
Out[2]: '电气/电器工程师'

生成python的数据类型

# 生成一个字典
In [3]: fake.pydict()
Out[3]:
{'生产': 'OlmMWPfQMJYxeiJtZSFC',
 '有些': 'jUYzbWgDEqvzjiAsubSX',
 '资源': 7670,
 '应用': 804210265906561.0,
 '国际': 9113,
 '电影': 'https://yangtang.cn/homepage.jsp',
 '方面': 'RGfbqIgxqTbnjkGDpoVO',
 '为什': 1947,
 '地址': 7021,
 '时候': 'oxia@hotmail.com'}

生成user_agent

In [4]: fake.chrome()
Out[4]: 'Mozilla/5.0 (iPad; CPU iPad OS 4_2_1 like Mac OS X) AppleWebKit/531.2 (KHTML, like Gecko) CriOS/55.0.807.0 Mobile/62B715 Safari/531.2'

生成个人信息

In [5]: fake.profile()
Out[5]:
{'job': '仓库管理员',
 'company': '太极传媒有限公司',
 'ssn': '370302198911123749',
 'residence': '云南省桂英市沈北新王路k座 204494',
 'current_location': (Decimal('32.942144'), Decimal('95.019663')),
 'blood_group': 'O-',
 'website': ['https://www.minyan.cn/'],
 'username': 'yangwen',
 'name': '蒋璐',
 'sex': 'M',
 'address': '宁夏回族自治区宁德县丰都长沙街a座 685268',
 'mail': 'oliao@yahoo.com',
 'birthdate': datetime.date(1971, 2, 13)}

如果想生成多条个人信息,可以利用for循环,把每个字典在添加到列表里,导出一个DataFrame

小结

本文主要介绍了使用Faker库,生成一些“假”数据,方便测试的时候使用。可针对自己的需求,写好脚本,直接生成DateFrame,岂不是很自动化。

如遇到想要的数据,忘记了关键词,记得随时翻阅官方文档。

祝大家玩得愉快。如果文章对你有帮助,欢迎转发/点赞/收藏~

作者:天作

来源:GitPython


_往期文章推荐_

狗屁不通的Python文章生成器




如需了解 付费精品课程及教学答疑服务
请在Crossin的编程教室内回复: 666

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/116011