LoginSignup
13
12

More than 1 year has passed since last update.

PythonでFakerを使ってダミーデータを作成する

Last updated at Posted at 2022-02-03

めんどくさいテストデータの準備に便利そうな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,運転士

他にもいろいろなデータがあるから結構便利

13
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
12