1. 程式人生 > 程式設計 >python產生模擬資料faker庫的使用詳解

python產生模擬資料faker庫的使用詳解

簡介

使用faker可以獲取很多模擬資料,如:姓名、電話、地址、銀行、汽車、條形碼、公司、信用卡、email、user_agen等等

學會使用這個庫,再也不用為製造假資料發愁了。。。。。。

同時,使用起來非常簡單,只需要安裝,匯入庫,並建立例項,即可使用,如下:

主要的方法分類

如上面例子,每次呼叫 fake 例項的 name()方法時,都會產生不同隨機姓名。fake 例項還有很多方法可用,這些方法分為以下幾類:

  • address 地址
  • person 人物類:性別、姓名等
  • barcode 條碼類
  • color 顏色類
  • company 公司類:公司名、公司email、公司名字首等
  • credit_card 銀行卡類:卡號、有效期、型別等
  • currency 貨幣
  • date_time 時間日期類:日期、年、月等
  • file 檔案類:檔名、檔案型別、副檔名等
  • internet 網際網路類
  • job 工作
  • lorem 亂數假文
  • misc 雜項類
  • phone_number 手機號碼類:手機號、運營商號段
  • python python資料
  • profile 人物描述資訊:姓名、性別、地址、公司等
  • ssn 社會安全碼(身份證號碼)
  • user_agent 使用者代理

address 地址

>>> fake.country() # 國家
'奧地利' 
>>> fake.city() # 城市
'鄭州市'
>>> fake.city_suffix() # 城市的字尾,中文是:市或縣
'市'
>>> fake.address() # 地址
'河北省巢湖縣懷柔南寧路f座 169812'
>>> fake.street_address() # 街道
'邯鄲路W座'
>>> fake.street_name() # 街道名
'合肥路'
>>> fake.postcode() # 郵編
'314548'
>>> fake.latitude() # 維度
Decimal('68.0228435')
>>> fake.longitude() # 經度
Decimal('155.964341')

person 人物

>>> fake.name() # 姓名
'單玉珍'
>>> fake.last_name() # 姓
'潘'
>>> fake.first_name() # 名
'琴'
>>> fake.name_male() # 男性姓名
'官平'
>>> fake.last_name_male() # 男性姓
'安'
>>> fake.first_name_male() # 男性名
'文'
>>> fake.name_female() # 女性姓名
'許穎'

barcode 條碼

>>> fake.ean8() # 8位條碼
'12771363'
>>> fake.ean13() # 13位條碼
'9133134950963'
>>> fake.ean(length=8) # 自定義位數條碼,只能選8或者13
'20417161'

color 顏色

>>> fake.hex_color() # 16進製表示的顏色
'#671f6d'
>>> fake.rgb_css_color() # css用的rgb色
'rgb(237,74,237)'
>>> fake.rgb_color() # 表示rgb色的字串
'208,102,218'
>>> fake.color_name() # 顏色名字
'Brown'
>>> fake.safe_hex_color() #安全16進位制色
'#ee4400'
>>> fake.safe_color_name() # 安全顏色名字
'maroon'

company 公司

>>> fake.company() # 公司名
'時空盒數字科技有限公司'
>>> fake.company_suffix() # 公司名字尾
'科技有限公司'

credit_card 銀行信用卡

>>> fake.credit_card_number(card_type=None) # 卡號
'375325478746231'
>>> fake.credit_card_provider(card_type=None) # 卡的提供者
'VISA 13 digit'
>>> fake.credit_card_security_code(card_type=None)# 卡的安全密碼
'450'
>>> fake.credit_card_expire() # 卡的有效期
'04/22'
>>> fake.credit_card_full(card_type=None) # 完整卡資訊
'Maestro\n秀芳 商\n502001016117 04/27\nCVV: 144\n'

currency 貨幣

>>> fake.currency_code() # 貨幣程式碼
'HNL'

date_time 時間日期

>>> fake.date_time(tzinfo=None) # 隨機日期時間
datetime.datetime(2001,3,18,17,57,44)
>>> fake.iso8601(tzinfo=None) # 以iso8601標準輸出的日期
'1973-11-16T22:58:37'

>>> fake.date_time_this_month(before_now=True,after_now=False,tzinfo=None) # 本月的某個日期
datetime.datetime(2017,11,1,14,33,48)
>>> fake.date_time_this_year(before_now=True,tzinfo=None) # 本年的某個日期
datetime.datetime(2017,2,13,55,31)
>>> fake.date_time_this_decade(before_now=True,tzinfo=None) # 本年代內的一個日期
datetime.datetime(2010,26,6,23)
>>> fake.date_time_this_century(before_now=True,tzinfo=None) # 本世紀一個日期
datetime.datetime(2015,7,21,19,27,53)
>>> fake.date_time_between(start_date="-30y",end_date="now",tzinfo=None) # 兩個時間間的一個隨機時間
datetime.datetime(2005,12,15)

>>> fake.timezone() # 時區
'America/Guatemala'
>>> fake.time(pattern="%H:%M:%S") # 時間(可自定義格式)
'11:21:52'
>>> fake.am_pm() # 隨機上午下午
'PM'
>>> fake.month() # 隨機月份
'02'
>>> fake.month_name() # 隨機月份名字
'August'
>>> fake.year() # 隨機年
'1974'
>>> fake.day_of_week() # 隨機星期幾
'Sunday'
>>> fake.day_of_month() # 隨機月中某一天
'02'
>>> fake.time_delta() # 隨機時間延遲
datetime.timedelta(13371,27637)
>>> fake.date_object() # 隨機日期物件
datetime.date(1983,26)
>>> fake.time_object() # 隨機時間物件
datetime.time(17,8,56)
>>> fake.unix_time() # 隨機unix時間(時間戳)
1223246848
>>> fake.date(pattern="%Y-%m-%d") # 隨機日期(可自定義格式)
'1984-04-20'
>>> fake.date_time_ad(tzinfo=None) # 公元后隨機日期
datetime.datetime(341,9,9)

file 檔案

>>> fake.file_name(category="image",extension="png") # 檔名(指定檔案型別和字尾名)
'增加.png'
>>> fake.file_name() # 隨機生成各型別檔案
'提供.pdf'
>>> fake.file_extension(category=None) # 檔案字尾
'txt'
>>> fake.mime_type(category=None) # mime-type
'image/png'

internet 網際網路

>>> fake.ipv4(network=False) # ipv4地址
'104.225.105.10'
>>> fake.ipv6(network=False) # ipv6地址
'dea6:ca11:39d0:b49f:fff1:82f1:bf88:698b'
>>> fake.uri_path(deep=None) # uri路徑
'search/categories'
>>> fake.uri_extension() # uri副檔名
'.htm'
>>> fake.uri() # uri
'https://www.wei.com/terms/'
>>> fake.url() # url
'http://zheng.org/'
>>> fake.image_url(width=None,height=None) # 圖片url
'https://www.lorempixel.com/700/990'
>>> fake.domain_word() # 域名主體
'hu'
>>> fake.domain_name() # 域名
'hu.cn'
>>> fake.tld() # 域名字尾
'com'
>>> fake.user_name() # 使用者名稱
'xia13'
>>> fake.user_agent() # UA
'Opera/8.33.(Windows NT 5.1; an-ES) Presto/2.9.171 Version/10.00'
>>> fake.mac_address() # MAC地址
'd6:38:cc:2a:76:b2'
>>> fake.safe_email() # 安全郵箱
'[email protected]'
>>> fake.free_email() # 免費郵箱
'[email protected]'
>>> fake.company_email() # 公司郵箱
'[email protected]'
>>> fake.email() # 郵箱
'[email protected]'

job 工作

>>> fake.job()#工作職位
'Dealer'
>>> fake.job() 
'Musician'

lorem 亂數假文

>>> fake.text(max_nb_chars=200) # 隨機生成一篇文章
'語言無法應用為什一點國內.要求完成如何世界電腦釋出作品.經濟不同教育個人科技全國.\n線上學生髮布資訊上海狀態.\n聯絡一次通過其實介紹世界.增加也是使用成功那個.\n商品免費管理公司.留言自己這種內容.\n次數內容知道這樣女人感覺.操作他的生產出現如何報告文章只有.\n個人文化中心不能釋出最新.質量一下提高.感覺最大工具表示最後計劃.這是還有次數結果其實特別.'

>>> 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) # 隨機生成成幾段文字(列表)
['就是釋出要求有關這裡國際.美國裝置深圳經營.首頁也是支援報告.','決定可是隻有發現開始一直.最後有些專案正在深圳關係決定.下載註冊圖片更多進行他的那些.','必須他們發生資料準備聯絡.同時這樣內容學校精華.']

misc 雜項

>>> fake.binary(length=10) # 隨機二進位制字串(可指定長度)
b'U\xa9@\x1e\x96\xe7\xca\x82\x14f'

>>> fake.language_code()  # 隨機語言程式碼
'tg'

>>> fake.md5(raw_output=False) # 隨機md5,16進位制字串
'cc4feebe419791332bbcff5e0fdf084a'

>>> fake.sha1(raw_output=False) # 隨機sha1,16進位制字串
'8ac0e9980f880860b6e45ae6fd257cc847b7ae8d'

>>> fake.sha256(raw_output=False)  # 隨機sha256,16進位制字串
'033151f173f4a389e38e7df2363d89741f752c474e7bdfa2ee0a794bf0b505b5'

>>> fake.boolean(chance_of_getting_true=50) # 隨機真假值(得到True的機率是50%)
False

>>> fake.null_boolean() # 隨機真假值和null
>>> fake.null_boolean()
True

>>> fake.password(length=10,special_chars=True,digits=True,upper_case=True,lower_case=True) # 隨機密碼(可指定密碼策略)
'F%722TJg_U'
>>> fake.locale() # 隨機原生代碼
'hy_AM'
>>> fake.uuid4() # 隨機uuid
'a50d17e7-bc4f-37a3-27b3-04a24fdd0055'
>>>

phone_number 電話號碼

>>> fake.phone_number() # 手機號碼
'13334603608'
>>> fake.phonenumber_prefix() # 運營商號段,手機號碼前三位
158

python python資料

>>> fake.pyint() # 隨機int
7775
>>> fake.pyfloat(left_digits=None,right_digits=None,positive=False) # 浮點數
-84901.5586333
>>> fake.pydecimal(left_digits=None,positive=False) # 隨機高精度數
Decimal('-12273687068527.0')
>>> fake.pystr(min_chars=None,max_chars=20) # 隨機字串(可指定長度)
'cblutNKFIyegfcHPrjzx'
>>> fake.pybool() # 隨機bool值
True

>>> fake.pyiterable(nb_elements=10,variable_nb_elements=True) # 隨機iterable
['ODfeVvcbAjPDBGwzljQw','https://www.tan.cn/list/category/homepage.php','YQlrsFkBieyKYaXlCljJ',Decimal('42778240911787.2'),Decimal('957411812.6383'),'TGbqZufoiUXLQTZDrVcP','http://yan.com/posts/tags/search/terms.php',3.680492634254,'[email protected]',datetime.datetime(2001,16,10,49),'xMMOjlETIgKGqVGTrChG','[email protected]']

>>> fake.pylist(nb_elements=10,variable_nb_elements=True ) # 隨機生成一個list
['KXQMXAkcEMSLfnIZkgJb','BtowiRsuIqyyULnSYYdr',datetime.datetime(2011,44,2),datetime.datetime(2008,5,38,38),'[email protected]','QEsdUpEqHLpThyWCjkNx',Decimal('-801375867.9'),'ucDyeZnHAXfZtkwdVUbR',4707,datetime.datetime(1974,54,29)]

>>> fake.pydict(nb_elements=10,variable_nb_elements=True)  # 隨機字典
{'其中': 9047,'一直': 'AUiUjuqccIdVAWSqzDbW','選擇': '[email protected]','開發': datetime.datetime(1972,20,9),'電影': 'KYmolBhkjSRxloXXFUUT','文化': 2681,'這裡': '[email protected]','不會': 'ZPkwuxWsrJSHMNuFiWEx','社會': 'CiujeaZMZSuyYwuKzEdN'}

>>> fake.pyset(nb_elements=10,variable_nb_elements=True) # 隨機set
{'[email protected]','http://fu.cn/list/home.htm','MlJluVirRkofBnKNtphM',296,'ghoUSHkuEGmCzlJFKyHZ',4,4),'AgbynHjdvwYpUkbMsfqr',8751,9649,'[email protected]',Decimal('5727570036.91'),'HmDkExndcQIOaTtsSpsc','hjQlLLXuHVVzENEwoHJK'}

>>> fake.pytuple(nb_elements=10,variable_nb_elements=True)  # 隨機tuple
('http://www.cai.com/index/',datetime.datetime(1973,28,23),'khltJQMYJvIDRMYodviZ','uJezUsEqiHaiFxwOPWvl','qojwZHyytBSQQavkDaTu','AHUCHYuVJTHnoSEuQDSY',1012,'uEYVuzeTlgVhrnCATfKw','https://www.zhou.com/categories/tags/main/','LbLSFZPeATtzHvbmYhGr')

>>> fake.pystruct() # 隨機生成3個有10個元素的python資料結構
([datetime.datetime(1996,35,26),datetime.datetime(1998,8),'[email protected]','yEWMrpTqtAHfbxqldGrb','YgKYOnrjuthOrOXhlYIl',datetime.datetime(1994,30),Decimal('-6865068.3'),'SYHFHiFvJlRVPcCKumUM',-8619.4354,'kwGipwcASeALLeKdaWBi'],{'同時': 'BvtYdkNTHwZNMiIIRwKd','空間': 310959668662.457,'特別': 'PZQDBuuQWkcdryMloyKS','音樂': Decimal('-7219015925.0'),'專案': 'https://www.zhou.cn/main.php','回覆': 30.408750841,'顯示': 'etZMrsjXJgZpDfZWhpoS','大小': 7472,'型別': 'OsjpxgLqnTcdVOlHoMoP','什麼': 'http://www.xia.com/posts/app/index/'},{'朋友': {0: -415025.243093017,1: [1799,585,'[email protected]'],2: {0: 9980,1: 'qnOnFTzGnsjvXGybBnMF',2: ['http://zheng.cn/list/search/tag/faq.html',Decimal('964285276661463.0')]}},'發生': {1: -5339010.6134,2: [datetime.datetime(1987,23,15,45),'SvSpvKqTXlJvdQhHScwM','PZjKOYzZzoNVsHLRcARQ'],3: {1: 'https://www.yan.cn/register/',2: 2191,3: ['HMHKQuLRBQaaAypRbtHU',datetime.datetime(2014,24,32,36)]}},'我的': {2: '[email protected]',3: ['http://gu.com/about.php','DhzpWYkgLCobGSHDLXzI',1420],4: {2: datetime.datetime(1986,22,50,12),3: 'rRHwQQzkpAMBQxwVITBa',4: [datetime.datetime(1984,52,18),-73821572962388.7]}},'全部': {3: 'uMQeeBXYNGhrHnAerdjp',4: [323329.56403,'kFvqXFhhtQPNtrOjKtxa','http://peng.cn/'],5: {3: 'lcaoeisYIAOsuRjbOXia',4: Decimal('-902407032449085.0'),5: [2296,'uyuWgnsONzLluXqXdASM']}},'大小': {4: '[email protected]',5: [datetime.datetime(1991,48),'cDYEScdIokWuvGhRkWqs','XeDJojWyywFvzmWYaokO'],6: {4: Decimal('-4167029.2915827'),5: 4030,6: [6372,'xfRXXEFGsNQpeIGmbaHU']}},'語言': {5: 'https://www.guo.cn/',6: [6498,datetime.datetime(1981,29),42598100345.61],7: {5: 'http://zheng.cn/',6: -229316.268238,7: ['https://www.qiao.cn/home/','GtaEXeVxjRnnkggjEguv']}},'表示': {6: 'xcBvcGUWxdMhDqgzmhSd',7: ['kwDaFhyTKqHajGSaNOMf',8561,5456],8: {6: 'https://zhou.cn/tags/tag/faq.html',7: 'IGayAZtTQVlSOasQwgug',8: ['iCjwBzHfmPSLqAgmIOle',70511766106574.5]}},'電子': {7: 'http://www.lu.org/tags/posts/terms/',8: [datetime.datetime(1978,35),'https://song.cn/main/categories/homepage.html','https://long.com/register.html'],9: {7: 'nFJNhyMYBvfTxrYwYPUQ',8: -2252757903.0,9: ['GuJnhMEgXoMAivrgGZie',29,50)]}},'的人': {8: 'WgHePwYSPgSiPllXpLlJ',9: [1782,'fSepbXwpvhiBphzDTDNC',-9117731.63459416],10: {8: 5602,9: 3664,10: ['http://www.mao.com/search/tag/main/',Decimal('5579.7377')]}},'不過': {9: 'rOfkDPTHvzKbfvQHbPNm',10: [314.397,'StqeLyXkIDKHfExSjggk','[email protected]'],11: {9: 'BLKNdcccamYzBwRcMxlx',10: '[email protected]',11: ['ZocoQHdbhaNloWALnzwt','eWVvvHurAlZZRxlYHZXi']}}})

profile 人物描述資訊

>>> fake.profile(fields=None,sex=None) # 人物描述資訊:姓名、性別、地址、公司等
{'job': 'Licensed conveyancer','company': '萬迅電腦資訊有限公司','ssn': '370684199902182726','residence': '福建省小紅市南長廣州街K座 406448','current_location': (Decimal('18.050895'),Decimal('-0.877117')),'blood_group': '0-','website': ['https://www.yi.org/','https://www.hu.com/','https://www.yin.cn/'],'username': 'minghuang','name': '後英','sex': 'F','address': '安徽省秀榮市璧山嘉禾路T座 954960','mail': '[email protected]','birthdate': '1975-03-09'}
>>> s = fake.simple_profile(sex="m") # 人物精簡資訊
>>> for i,v in s.items():
...   print(i,v)
...
username chao85
name 邴宇
sex M
address 陝西省東市朝陽廖街Y座 757661
mail [email protected]
birthdate 1996-09-20

ssn 社會安全碼(身份證)

>>> fake.ssn() # 隨機生成身份證號(18位)
'140100196612297997'
>>> len(fake.ssn())
18

user_agent 使用者代理

常用在偽造瀏覽器資訊

>>> fake.user_agent() # 偽造UA
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/5361 (KHTML,like Gecko) Chrome/15.0.812.0 Safari/5361'

平臺資訊偽造

>>> fake.linux_platform_token()
'X11; Linux i686'
>>> fake.linux_processor()
'i686'
>>> fake.windows_platform_token()
'Windows CE'
>>> fake.mac_platform_token()
'Macintosh; Intel Mac OS X 10_7_4'
>>> fake.mac_processor()
'PPC'

瀏覽器偽造

>>> fake.internet_explorer() # IE瀏覽器
'Mozilla/5.0 (compatible; MSIE 5.0; Windows NT 6.1; Trident/4.0)'
>>> fake.opera() # opera瀏覽器
'Opera/9.37.(Windows 95; doi-IN) Presto/2.9.178 Version/10.00'
>>> fake.firefox() # firefox瀏覽器
'Mozilla/5.0 (Windows NT 5.0; te-IN; rv:1.9.2.20) Gecko/2015-09-28 13:29:05 Firefox/12.0'
>>> fake.safari() # safari瀏覽器
'Mozilla/5.0 (Windows; U; Windows NT 4.0) AppleWebKit/533.37.4 (KHTML,like Gecko) Version/5.0 Safari/533.37.4'
>>> fake.chrome() # chrome瀏覽器
'Mozilla/5.0 (Windows 98; Win 9x 4.90) AppleWebKit/5361 (KHTML,like Gecko) Chrome/14.0.866.0 Safari/5361'

自定義擴充套件

Faker 已經提供了足夠豐富的資訊生成,包括名字、手機號、郵箱地址、郵編等等。儘管如此,可能還是沒有辦法滿足你的需求。這時,可以利用自定義擴充套件,引用外部的 provider,自定義你要的功能。

Faker 物件可以通過 add_provider 方法將自定義的 Provider 新增到物件中,自定義的 Provider 需要繼承自 BaseProvider。

from faker import Faker
fake = Faker()

# first,import a similar Provider or use the default one
from faker.providers import BaseProvider

# create new provider class
class MyProvider(BaseProvider):
  def foo(self):
    return 'bar'

# then add new provider to faker instance
fake.add_provider(MyProvider)

# now you can use:
print(fake.foo())

結果顯示:

bar

隨機控制

Faker 隨機生成由 random.Random 驅動。其中,.random 屬性返回 random.Random 物件。通過對該物件的操作,可以實現自定義的行為。

from faker import Faker
fake = Faker()
fake.random
fake.random.getstate()

安裝:

pip install faker

使用:

from faker import Faker
fake = Faker()
for i in range(0,10):
  print(fake.name())

不做進一步的解釋了哈,

更詳細的請參見faker的文件地址:https://faker.readthedocs.io/en/master/#

到此這篇關於python產生模擬資料faker庫的使用詳解的文章就介紹到這了,更多相關python faker庫內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!