Python中第三方庫Faker的使用詳解
背景介紹
今天介紹Python中一個超級神奇的庫,99%人用過都喜歡它,剩下的1%沒用過!
在如今的大數(shù)據(jù)時代,數(shù)據(jù)的價值可想而知。有時候為了做測試,需要模擬真實的環(huán)境,但是又不能直接使用真實數(shù)據(jù),就需要我們認(rèn)為制造一些數(shù)據(jù)出來。
對比Excel,我還是覺得Python制造這樣的 "虛擬" 數(shù)據(jù),更省時、省力。
周末,突然想到了曾今做過的這個問題,這里為大家做個復(fù)盤吧!
需求: 老板讓模擬一批數(shù)據(jù),用于項目實驗,由于一些真實數(shù)據(jù)不能展示出來,我需要模擬一些數(shù)據(jù),字段包括:姓名、所在省份、詳細(xì)地址、手機號、身份證號、出生年月、郵箱等。
當(dāng)然,這批數(shù)據(jù)肯定是需要你最終寫入到Excel中,一次性交給老板的。那么,這樣的需求,你會做嗎?
實戰(zhàn):模擬1w條數(shù)據(jù)寫入Excel
在講述基礎(chǔ)之前,直接上實戰(zhàn),讓大家體會一下,如何將生成的模擬數(shù)據(jù),最終寫入到Excel文件中。
from faker import Faker import pandas as pd fake = Faker(["zh_CN"]) Faker.seed(0) def get_data(): key_list = ["姓名","詳細(xì)地址","所在省份","手機號","身份證號","出生年月","郵箱"] 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_info df = pd.DataFrame(columns=["姓名","詳細(xì)地址","所在省份","手機號","身份證號","出生年月","郵箱"]) for i in range(10000): person_info = [get_data()] df1 = pd.DataFrame(person_info) df = pd.concat([df,df1]) df.to_excel("模擬數(shù)據(jù).xlsx",index=None)
結(jié)果如下:
上述數(shù)據(jù)純屬模擬,如果雷同,請勿對號!
Python庫講解
這么好用的Python庫,究竟應(yīng)該怎么使用呢?
我們直接使用下面的代碼,可以完成這個庫的安裝。
pip install Faker -i https://pypi.tuna.tsinghua.edu.cn/simple/
使用之前,使用如下代碼,導(dǎo)入這個庫。
from faker import Faker
在講述寫入到Excel之前,我們先分布講述一下,每個函數(shù)的用法。
1. 生成姓名
fake = Faker(locale='zh_CN') name = fake.name() name
結(jié)果如下:
2. 生成詳細(xì)地址
address = fake.address() address
結(jié)果如下:
3. 生成所在省份
province = address[:3] province
結(jié)果如下:
由于這個函數(shù)每次運行結(jié)果都不一樣,所以我才用切片方式,生成省份。當(dāng)然這里也有特定函數(shù),生成省份。
fake.province()
結(jié)果如下:
4. 生成手機號
number = fake.phone_number() number
結(jié)果如下:
5. 生成身份證號
id_card = fake.ssn() id_card
結(jié)果如下:
6. 生成出生年月
birth_date = id_card[6:14] birth_date
結(jié)果如下:
7. 生成郵箱
email = fake.email() email
結(jié)果如下:
補充
當(dāng)然,faker庫不僅可以幫助我們生成上述信息,還有很多其它方法可用,這些方法分為以下幾類:
- address 地址
- person 人物類:性別、姓名等
- barcode 條碼類
- color 顏色類
- company 公司類:公司名、email、公司名前綴等
- credit_card 銀行卡類:卡號、有效期、類型等
- currency 貨幣
- date_time 時間日期類:日期、年、月等
- file 文件類:文件名、文件類型、文件擴展名等
- internet 互聯(lián)網(wǎng)類
- job 工作
- lorem 亂數(shù)假文
- misc 雜項類
- phone_number 手機號碼類:手機號、運營商號段
- python python數(shù)據(jù)
- profile 人物描述信息:姓名、性別、地址、公司等
- ssn 社會安全碼(身份證號碼)
- user_agent 用戶代理
關(guān)于這些方法的使用,我們直接參考faker的官網(wǎng),用起來超方便。
1. address 地址
fake.country() # 國家 fake.city() # 城市 fake.city_suffix() # 城市的后綴,中文是:市或縣 fake.address() # 地址 fake.street_address() # 街道 fake.street_name() # 街道名 fake.postcode() # 郵編 fake.latitude() # 維度 fake.longitude() # 經(jīng)度
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進(jìn)制表示的顏色 fake.rgb_css_color() # css用的rgb色 fake.rgb_color() # 表示rgb色的字符串 fake.color_name() # 顏色名字 fake.safe_hex_color() #安全16進(jìn)制色 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標(biāo)準(zhǔn)輸出的日期 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) # 本年代內(nèi)的一個日期 fake.date_time_this_century(before_now=True, after_now=False, tzinfo=None) # 本世紀(jì)一個日期 fake.date_time_between(start_date="-30y", end_date="now", tzinfo=None) # 兩個時間間的一個隨機時間 fake.timezone() # 時區(qū) 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-type
8. internet 互聯(lián)網(wǎng)
fake.ipv4(network=False) # ipv4地址 fake.ipv6(network=False) # ipv6地址 fake.uri_path(deep=None) # uri路徑 fake.uri_extension() # uri擴展名 fake.uri() # uri fake.url() # url fake.image_url(width=None, height=None) # 圖片url fake.domain_word() # 域名主體 fake.domain_name() # 域名 fake.tld() # 域名后綴 fake.user_name() # 用戶名 fake.user_agent() # UA fake.mac_address() # MAC地址 fake.safe_email() # 安全郵箱 fake.free_email() # 免費郵箱 fake.company_email() # 公司郵箱 fake.email() # 郵箱
9. job 工作
fake.job()#工作職位
10. lorem 亂數(shù)假文
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()
以上就是Python中第三方庫Faker的使用詳解的詳細(xì)內(nèi)容,更多關(guān)于Python Faker庫的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python pandas最常用透視表實現(xiàn)應(yīng)用案例
透視表是一種可以對數(shù)據(jù)動態(tài)排布并且分類匯總的表格格式,它在數(shù)據(jù)分析中有著重要的作用和地位,在本文中,我將為你介紹python中如何使用pandas包實現(xiàn)透視表的功能,以及一些常見的應(yīng)用案例2024-01-01caffe binaryproto 與 npy相互轉(zhuǎn)換的實例講解
今天小編就為大家分享一篇caffe binaryproto 與 npy相互轉(zhuǎn)換的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07在多種情況/開發(fā)環(huán)境中運行python腳本和代碼的技巧分享
Python腳本或程序是包含可執(zhí)行Python代碼的文件,能夠運行Python腳本和代碼可能是您作為Python開發(fā)人員所需的最重要的技能,在本教程中,您將學(xué)習(xí)一些運行Python腳本和代碼的技術(shù),在每種情況下使用的技術(shù)將取決于您的環(huán)境、平臺、需求和技能2023-11-11