一个「神奇」的Python库,99%的人都爱!
背景介紹
今天介紹Python中一個超級神奇的庫,99%人用過都喜歡它,剩下的1%沒用過!
在如今的大數(shù)據(jù)時代,數(shù)據(jù)的價值可想而知。有時候?yàn)榱俗鰷y試,需要模擬真實(shí)的環(huán)境,但是又不能直接使用真實(shí)數(shù)據(jù),就需要我們認(rèn)為制造一些數(shù)據(jù)出來。
對比Excel,我還是覺得Python制造這樣的?"虛擬"?數(shù)據(jù),更省時、省力。
周末,突然想到了曾今做過的這個問題,這里為大家做個復(fù)盤吧!
需求:?老板讓模擬一批數(shù)據(jù),用于項(xiàng)目實(shí)驗(yàn),由于一些真實(shí)數(shù)據(jù)不能展示出來,我需要模擬一些數(shù)據(jù),字段包括:姓名、所在省份、詳細(xì)地址、手機(jī)號、身份證號、出生年月、郵箱等。
當(dāng)然,這批數(shù)據(jù)肯定是需要你最終寫入到Excel中,一次性交給老板的。那么,這樣的需求,你會做嗎?
實(shí)戰(zhàn):模擬1w條數(shù)據(jù)寫入Excel
在講述基礎(chǔ)之前,直接上實(shí)戰(zhàn),讓大家體會一下,如何將生成的模擬數(shù)據(jù),最終寫入到Excel文件中。
from?faker?import?Faker import?pandas?as?pdfake?=?Faker(["zh_CN"]) Faker.seed(0)def?get_data():key_list?=?["姓名","詳細(xì)地址","所在省份","手機(jī)號","身份證號","出生年月","郵箱"]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=["姓名","詳細(xì)地址","所在省份","手機(jī)號","身份證號","出生年月","郵箱"]) 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ù)每次運(yùn)行結(jié)果都不一樣,所以我才用切片方式,生成省份。當(dāng)然這里也有特定函數(shù),生成省份。
fake.province()結(jié)果如下:
4. 生成手機(jī)號
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é)果如下:
補(bǔ)充
當(dāng)然,faker庫不僅可以幫助我們生成上述信息,還有很多其它方法可用,這些方法分為以下幾類:
address 地址
person 人物類:性別、姓名等
barcode 條碼類
color 顏色類
company 公司類:公司名、email、公司名前綴等
credit_card 銀行卡類:卡號、有效期、類型等
currency 貨幣
date_time 時間日期類:日期、年、月等
file 文件類:文件名、文件類型、文件擴(kuò)展名等
internet 互聯(lián)網(wǎng)類
job 工作
lorem 亂數(shù)假文
misc 雜項(xiàng)類
phone_number 手機(jī)號碼類:手機(jī)號、運(yùn)營商號段
python python數(shù)據(jù)
profile 人物描述信息:姓名、性別、地址、公司等
ssn 社會安全碼(身份證號碼)
user_agent 用戶代理
關(guān)于這些方法的使用,我們直接參考faker的官網(wǎng),用起來超方便。
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()??#?經(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)?#?隨機(jī)日期時間 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)??#?兩個時間間的一個隨機(jī)時間 fake.timezone()?#?時區(qū) fake.time(pattern="%H:%M:%S")?#?時間(可自定義格式) fake.am_pm()?#?隨機(jī)上午下午 fake.month()?#?隨機(jī)月份 fake.month_name()?#?隨機(jī)月份名字 fake.year()?#?隨機(jī)年 fake.day_of_week()?#?隨機(jī)星期幾 fake.day_of_month()?#?隨機(jī)月中某一天 fake.time_delta()?#?隨機(jī)時間延遲 fake.date_object()??#?隨機(jī)日期對象 fake.time_object()?#?隨機(jī)時間對象 fake.unix_time()?#?隨機(jī)unix時間(時間戳) fake.date(pattern="%Y-%m-%d")?#?隨機(jī)日期(可自定義格式) fake.date_time_ad(tzinfo=None)??#?公元后隨機(jī)日期7. file 文件
fake.file_name(category="image",?extension="png")?#?文件名(指定文件類型和后綴名) fake.file_name()?#?隨機(jī)生成各類型文件 fake.file_extension(category=None)?#?文件后綴 fake.mime_type(category=None)?#?mime-type8. 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擴(kuò)展名 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()?#?免費(fèi)郵箱 fake.company_email()??#?公司郵箱 fake.email()?#?郵箱9. job 工作
fake.job()#工作職位10. lorem 亂數(shù)假文
fake.text(max_nb_chars=200)?#?隨機(jī)生成一篇文章 fake.word()?#?隨機(jī)單詞 fake.words(nb=3)??#?隨機(jī)生成幾個字 fake.sentence(nb_words=6,?variable_nb_words=True)??#?隨機(jī)生成一個句子 fake.sentences(nb=3)?#?隨機(jī)生成幾個句子 fake.paragraph(nb_sentences=3,?variable_nb_sentences=True)??#?隨機(jī)生成一段文字(字符串) fake.paragraphs(nb=3)??#?隨機(jī)生成成幾段文字(列表)11. phone_number 電話號碼
fake.phone_number()?#?手機(jī)號碼 fake.phonenumber_prefix()?#?運(yùn)營商號段,手機(jī)號碼前三位12. ssn 社會安全碼(身份證)
fake.ssn()?#?隨機(jī)生成身份證號(18位)13. user_agent 用戶代理
fake.user_agent()各位伙伴們好,詹帥本帥搭建了一個個人博客和小程序,匯集各種干貨和資源,也方便大家閱讀,感興趣的小伙伴請移步小程序體驗(yàn)一下哦!(歡迎提建議)
推薦閱讀
牛逼!Python常用數(shù)據(jù)類型的基本操作(長文系列第①篇)
牛逼!Python的判斷、循環(huán)和各種表達(dá)式(長文系列第②篇)
牛逼!Python函數(shù)和文件操作(長文系列第③篇)
牛逼!Python錯誤、異常和模塊(長文系列第④篇)
總結(jié)
以上是生活随笔為你收集整理的一个「神奇」的Python库,99%的人都爱!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 向xxxhub发了一个数据包,发现了··
- 下一篇: 一个傻瓜式构建可视化 web的 Pyth