一个「神奇」的Python库,99%的人都爱!
背景介紹
今天介紹Python中一個超級神奇的庫,99%人用過都喜歡它,剩下的1%沒用過!
在如今的大數據時代,數據的價值可想而知。有時候為了做測試,需要模擬真實的環境,但是又不能直接使用真實數據,就需要我們認為制造一些數據出來。
對比Excel,我還是覺得Python制造這樣的?"虛擬"?數據,更省時、省力。
周末,突然想到了曾今做過的這個問題,這里為大家做個復盤吧!
需求:?老板讓模擬一批數據,用于項目實驗,由于一些真實數據不能展示出來,我需要模擬一些數據,字段包括:姓名、所在省份、詳細地址、手機號、身份證號、出生年月、郵箱等。
當然,這批數據肯定是需要你最終寫入到Excel中,一次性交給老板的。那么,這樣的需求,你會做嗎?
實戰:模擬1w條數據寫入Excel
在講述基礎之前,直接上實戰,讓大家體會一下,如何將生成的模擬數據,最終寫入到Excel文件中。
from?faker?import?Faker import?pandas?as?pdfake?=?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?https://pypi.tuna.tsinghua.edu.cn/simple/使用之前,使用如下代碼,導入這個庫。
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()?#?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 亂數假文
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常用數據類型的基本操作(長文系列第①篇)
牛逼!Python的判斷、循環和各種表達式(長文系列第②篇)
牛逼!Python函數和文件操作(長文系列第③篇)
牛逼!Python錯誤、異常和模塊(長文系列第④篇)
總結
以上是生活随笔為你收集整理的一个「神奇」的Python库,99%的人都爱!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 向xxxhub发了一个数据包,发现了··
- 下一篇: 一个傻瓜式构建可视化 web的 Pyth