首頁 > 軟體

Python中第三方庫Faker的使用詳解

2022-04-01 19:01:53

背景介紹

今天介紹Python中一個超級神奇的庫,99%人用過都喜歡它,剩下的1%沒用過!

在如今的巨量資料時代,資料的價值可想而知。有時候為了做測試,需要模擬真實的環境,但是又不能直接使用真實資料,就需要我們認為製造一些資料出來。

對比Excel,我還是覺得Python製造這樣的 "虛擬" 資料,更省時、省力。

週末,突然想到了曾今做過的這個問題,這裡為大家做個覆盤吧!

需求: 老闆讓模擬一批資料,用於專案實驗,由於一些真實資料不能展示出來,我需要模擬一些資料,欄位包括:姓名、所在省份、詳細地址、手機號、身份證號、出生年月、郵箱等。

當然,這批資料肯定是需要你最終寫入到Excel中,一次性交給老闆的。那麼,這樣的需求,你會做嗎?

實戰:模擬1w條資料寫入Excel

在講述基礎之前,直接上實戰,讓大家體會一下,如何將生成的模擬資料,最終寫入到Excel檔案中。

from faker import Faker
import 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_info


df = 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的官網,用起來超方便。

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-type

8. 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中第三方庫Faker的使用詳解的詳細內容,更多關於Python Faker庫的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com