めんどくさいテストデータの準備に便利そうなFakerというライブラリがあったので試しに使ってみた時のメモ。
サクッと使ってみる
インストール
pip install faker
ランダムな名前と住所を出力
from faker import Faker
fake = Faker()
print(fake.name())
print(fake.address())
出力結果
Amy Arnold
76948 Andrea River Suite 401
West Kelliview, MO 14983
簡単に名前と住所を作成することができました。
ただ、日本の名前と住所じゃないので使いにくい・・・。
Faker()のインスタンスを生成する際にLocale設定を追加してあげれば日本語対応もできるみたいです。
fake = Faker('jp-JP')
print(fake.name())
print(fake.address())
出力結果
佐々木 拓真
奈良県杉並区中宮祠13丁目12番7号 前弥六南町パーク710
めっちゃ便利ですね。
プロバイダの種類
それぞれの使い方はこちらを参照
プロバイダ | 内容 | サンプル |
---|---|---|
faker.providers.address | 国名や住所など | 福島県西多摩郡日の出町丹勢4丁目19番14号 コーポ羽折町892 |
faker.providers.automotive | 車のナンバープレート | 036-176 |
faker.providers.bank | 銀行口座番号など | 103532983 |
faker.providers.barcode | バーコード | 7683072519026 |
faker.providers.color | カラーコード | #f9c9c0 |
faker.providers.company | 会社名など | 株式会社中村鉱業 |
faker.providers.credit_card | クレジットカード番号やセキュリティコードなど | 4208918926586359178 |
faker.providers.currency | 通過など | ('ETC', 'Ethereum Classic') |
faker.providers.date_time | 日付関連 | 2007-01-27 |
faker.providers.file | ファイル名やファイルの拡張子 | キャビン.txt |
faker.providers.geo | 緯度経度など | ('29.53885', '-95.44744', 'Fresno', 'US', 'America/Chicago') |
faker.providers.internet | メールアドレスやドメイン名など | umatsuda@example.org |
faker.providers.isbn | 図書番号 | 1-9816-5622-7 |
faker.providers.job | 職業 | お笑い芸人 |
faker.providers.lorem | 文章やワードなど | ['中世クルートスバケツ。', '感謝する文言葉リハビリ学生自体。', '供給タワー近代化する。'] |
faker.providers.misc | csvやbinary | booleanなど |
faker.providers.person | 男女別の名前など | 内藤 |
faker.providers.phone_number | 電話番号 | 090-1110-3910 |
faker.providers.profile | プロファイル | {'username': 'inoueyumiko', 'name': '高橋 花子', 'sex': 'F', 'address': '山形県武蔵村山市西川19丁目18番1号', 'mail': 'zkato@hotmail.com', 'birthdate': datetime.date(1948, 6, 19) |
faker.providers.python | bool値やリストを適当に作成 | - |
faker.providers.ssn | 社会保障番号 | 865-50-6891 |
faker.providers.user_agent | user_agent | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_7) AppleWebKit/533.0 (KHTML, like Gecko) Chrome/61.0.884.0 Safari/533.0 |
簡単にユーザプロファイルのCSVを作成してみる
import csv
from faker import Faker
fake = Faker('jp-JP')
header = ['ID', '名前', '誕生日', '住所', '職業']
rows = []
for i in range(10):
row = []
row.append(fake.random_number(digits=10))
row.append(fake.name())
row.append(fake.date_of_birth().strftime('%Y年%m月%d日'))
row.append(fake.address())
row.append(fake.job())
rows.append(row)
with open('test.csv', 'w') as f:
writer = csv.writer(f)
writer.writerow(header)
writer.writerows(rows)
f.close()
test.csv
ID,名前,誕生日,住所,職業
9054414722,佐藤 健一,1973年06月09日,大分県川崎市多摩区中鉢石町42丁目9番6号,航海士
6927657985,鈴木 治,1923年11月13日,大阪府夷隅郡御宿町下宇和田13丁目17番5号,運転士
1994436160,石川 千代,1928年09月17日,香川県豊島区東浅草38丁目20番20号 脚折アーバン809,和紙職人
2557213829,佐藤 篤司,2012年10月30日,栃木県西多摩郡日の出町幸手24丁目22番7号,エンジニア演奏家
8038438129,鈴木 晃,1967年06月24日,新潟県印旛郡印旛村四番町16丁目9番14号 土呂部パーク262,エンジニア演奏家
9731092256,山田 舞,1994年10月24日,沖縄県八丈島八丈町押上3丁目13番10号,YouTuber
6788773708,中川 浩,2006年03月28日,愛媛県山武郡横芝光町明石町37丁目5番15号 シティ松石956,歯科医師
8753593853,池田 浩,1980年04月05日,石川県横浜市中区横林8丁目2番8号,脚本家
6862344574,前田 結衣,1952年01月21日,秋田県川崎市高津区羽折町8丁目21番12号,歯科医師
6009441358,石川 涼平,2005年08月07日,岐阜県長生郡白子町西浅草30丁目21番5号 シティ月島603,運転士
他にもいろいろなデータがあるから結構便利