一个「神奇」的Python库,99%的人都爱!

↑ 关注 + 星标 ,每天学Python新技能

后台回复【大礼包】送你Python自学大礼包

人生苦短,快学Python!

今天介绍Python中一个超级神奇的库,99%人用过都喜欢它,剩下的1%没用过!文末还有更多有用有趣的Python库推荐。

在如今的大数据时代,数据的价值可想而知。有时候为了做测试,需要模拟真实的环境,但是又不能直接使用真实数据,就需要我们人为制造一些数据出来。

对比Excel,我还是觉得Python制造这样的 "虚拟"数据,更省时、省力。

周末,突然想到了曾今做过的这个问题,这里为大家做个复盘吧!

需求: 老板让模拟一批数据,用于项目实验,由于一些真实数据不能展示出来,我需要模拟一些数据,字段包括:姓名、所在省份、详细地址、手机号、身份证号、出生年月、邮箱等。

当然,这批数据肯定是需要你最终写入到Excel中,一次性交给老板的。那么,这样的需求,你会做吗?

模拟1w条数据写入Excel

在讲述基础之前,直接上实战,让大家体会一下,如何将生成的模拟数据,最终写入到Excel文件中。

from faker import Fakerimport pandas as pd fake = Faker(["zh_CN"])Faker.seed(0)def get_data():    key_list = ["姓名","详细地址","所在省份","手机号","身份证号","出生年月","邮箱"]    name = fake.name()    address = fake.address()    province = address[:3]    number = fake.phone_number()    id_card = fake.ssn()    birth_date = id_card[6:14]    email = fake.email()    info_list = [name,address,province,number,id_card,birth_date,email]    person_info = dict(zip(key_list,info_list))    return person_infodf = pd.DataFrame(columns=["姓名","详细地址","所在省份","手机号","身份证号","出生年月","邮箱"])for i in range(10000):    person_info = [get_data()]    df1 = pd.DataFrame(person_info)    df = pd.concat([df,df1])df.to_excel("模拟数据.xlsx",index=None)

结果如下:

以上数据为模拟生成,如果雷同,纯属巧合!

Python库讲解

这么好用的Python库,究竟应该怎么使用呢?

我们直接使用下面的代码,可以完成这个库的安装。

pip install Faker -i 

使用之前,使用如下代码,导入这个库。

from faker import Faker

在讲述写入到Excel之前,我们先分布讲述一下,每个函数的用法。

1. 生成姓名fake = Faker(locale=zh_CN)name = fake.name()name

结果如下:

2. 生成详细地址address = fake.address()address

结果如下:

3. 生成所在省份province = address[:3]province

结果如下:

由于这个函数每次运行结果都不一样,所以我才用切片方式,生成省份。当然这里也有特定函数,生成省份。

fake.province()

结果如下:

4. 生成手机号number = fake.phone_number()number

结果如下:

5. 生成身份证号id_card = fake.ssn()id_card

结果如下:

6. 生成出生年月birth_date = id_card[6:14]birth_date

结果如下:

7. 生成邮箱email = fake.email()email

结果如下:

补充

当然,faker库不仅可以帮助我们生成上述信息,还有很多其它方法可用,这些方法分为以下几类:

address 地址person 人物类:性别、姓名等barcode 条码类color 颜色类company 公司类:公司名、email、公司名前缀等credit_card 银行卡类:卡号、有效期、类型等currency 货币date_time 时间日期类:日期、年、月等file 文件类:文件名、文件类型、文件扩展名等internet 互联网类job 工作lorem 乱数假文misc 杂项类phone_number 手机号码类:手机号、运营商号段python python数据profile 人物描述信息:姓名、性别、地址、公司等ssn 社会安全码(身份证号码)user_agent 用户代理

关于这些方法的使用,我们直接参考faker的官网,用起来超方便。

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

1. address 地址fake.country()# 国家fake.city()# 城市fake.city_suffix()# 城市的后缀,中文是:市或县fake.address()# 地址fake.street_address()# 街道fake.street_name()# 街道名fake.postcode()# 邮编fake.latitude()# 维度fake.longitude()# 经度2. person 人物fake.name() # 姓名fake.last_name() # 姓fake.first_name() # 名fake.name_male() # 男性姓名fake.last_name_male() # 男性姓fake.first_name_male() # 男性名fake.name_female() # 女性姓名3. color 颜色fake.hex_color() # 16进制表示的颜色fake.rgb_css_color() # css用的rgb色fake.rgb_color()# 表示rgb色的字符串fake.color_name() # 颜色名字fake.safe_hex_color()#安全16进制色fake.safe_color_name() # 安全颜色名字4. company 公司fake.company() # 公司名fake.company_suffix() # 公司名后缀5. credit_card 银行信用卡fake.credit_card_number(card_type=None) # 卡号fake.credit_card_provider(card_type=None) # 卡的提供者fake.credit_card_security_code(card_type=None)# 卡的安全密码fake.credit_card_expire() # 卡的有效期fake.credit_card_full(card_type=None) # 完整卡信息6. date_time 时间日期fake.date_time(tzinfo=None) # 随机日期时间fake.iso8601(tzinfo=None) # 以iso8601标准输出的日期fake.date_time_this_month(before_now=True, after_now=False, tzinfo=None) # 本月的某个日期fake.date_time_this_year(before_now=True, after_now=False, tzinfo=None) # 本年的某个日期fake.date_time_this_decade(before_now=True, after_now=False, tzinfo=None)# 本年代内的一个日期fake.date_time_this_century(before_now=True, after_now=False, tzinfo=None)# 本世纪一个日期fake.date_time_between(start_date="-30y", end_date="now", tzinfo=None)# 两个时间间的一个随机时间fake.timezone() # 时区fake.time(pattern="%H:%M:%S") # 时间(可自定义格式)fake.am_pm() # 随机上午下午fake.month() # 随机月份fake.month_name() # 随机月份名字fake.year() # 随机年fake.day_of_week() # 随机星期几fake.day_of_month() # 随机月中某一天fake.time_delta() # 随机时间延迟fake.date_object()# 随机日期对象fake.time_object() # 随机时间对象fake.unix_time() # 随机unix时间(时间戳)fake.date(pattern="%Y-%m-%d") # 随机日期(可自定义格式)fake.date_time_ad(tzinfo=None)# 公元后随机日期7. file 文件fake.file_name(category="image", extension="png") # 文件名(指定文件类型和后缀名)fake.file_name() # 随机生成各类型文件fake.file_extension(category=None) # 文件后缀fake.mime_type(category=None) # mime-type8. internet 互联网fake.ipv4(network=False)# ipv4地址fake.ipv6(network=False)# ipv6地址fake.uri_path(deep=None) # uri路径fake.uri_extension() # uri扩展名fake.uri() # urifake.url() # urlfake.image_url(width=None, height=None)# 图片urlfake.domain_word() # 域名主体fake.domain_name() # 域名fake.tld() # 域名后缀fake.user_name() # 用户名fake.user_agent() # UAfake.mac_address() # MAC地址fake.safe_email() # 安全邮箱fake.free_email() # 免费邮箱fake.company_email()# 公司邮箱fake.email() # 邮箱9. job 工作fake.job()#工作职位10. lorem 乱数假文fake.text(max_nb_chars=200) # 随机生成一篇文章fake.word() # 随机单词fake.words(nb=3)# 随机生成几个字fake.sentence(nb_words=6, variable_nb_words=True)# 随机生成一个句子fake.sentences(nb=3) # 随机生成几个句子fake.paragraph(nb_sentences=3, variable_nb_sentences=True)# 随机生成一段文字(字符串)fake.paragraphs(nb=3)# 随机生成成几段文字(列表)11. phone_number 电话号码fake.phone_number() # 手机号码fake.phonenumber_prefix() # 运营商号段,手机号码前三位12. ssn 社会安全码(身份证)fake.ssn() # 随机生成身份证号(18位)13. user_agent 用户代理fake.user_agent()

百看不如一练, 247 个 Python 实战案例!

记一次爬虫逆向攻防的详细全过程

您看此文用   分  秒,转发只需1秒