😀
Fakerを使用して日本語を含んだCSVダミーファイルを作成する方法
CSVのダミーデータを作る場合、巷にダミー作成サイトは沢山ありますが
大概の場合は日本語に対応されていません。
そこでPythonの Faker を使用してCSVダミーデータを日本語で作成した時のメモ
環境
- OSX 10.9.5
参考にしたサイト
事前準備に必要なもの
- python 2.6.9 (で試しました。他はわかりません・・・)
- pip
Fakerのインストール
/path/to/hoge
pip install fake-factory
Fakerは日本語対応していません
joke2k/fakerより引用
You can check available Faker locales in the source code, under the providers package. The localization of Faker is an ongoing process, for which we need your help. Please don't hesitate to create a localized provider for your own locale and submit a Pull Request (PR).
Included localized providers:
bg_BG
cs_CZ
de_DE
dk_DK
.
.
ja_JPは現在ないです。
なので独自のproviderを作成して日本語を含んだダミーデータを作成します。
日本語を含んだCSVダミーデータを作るサンプルプログラム
fake.add_provider()
を使用して独自プロバイダを作成します。
ja_dummy.py
#! /usr/bin/env python
# -*- coding: utf-8 -*-
from faker import Factory
from faker.providers import BaseProvider
import csv
import random
class MyStatusProvider(BaseProvider):
def state(self):
return random.choice(['状態1', '状態2', '状態3'])
def name(self):
return random.choice(['田中', '鈴木', '山崎'])
def phone_number(self):
return random.choice(['080-1111-2222', '090-1234-5678', '070-1234-5678'])
fake = Factory.create()
fake.add_provider(MyStatusProvider)
with open("dummy_data.csv", "w+") as f:
csv_writer = csv.writer(f)
for i in range(5):
l = [fake.md5(), fake.random_number(1), fake.date(pattern="%Y-%m-%d %H:%M:%S"), fake.random_int(min=0, max=1), fake.boolean(), fake.state(), fake.name(), fake.phone_number() ]
csv_writer.writerow(l)
-
for i in range({数字})
の部分がCSVの作成行数を指定しています - l = [fake.md5(), ...., .....]の部分に作成したい部分のデータを指定してください。Faker が元々持っているダミーデータ作成メソッド(provider)は Faker のFormattersの部分を読むと大体わかります。
よく使いそうなダミーデータの作成方法
ちょこっとしか触っていないのでなんともいえませんが・・・
日付
patternの部分を変更すれば任意の日付型にできます
fake.date(pattern="%Y-%m-%d %H:%M:%S")
fake.date(pattern="%Y年%m月%d日 %H時%M分%S秒")
数字range
0-9まで数字でランダムにデータを作成したい場合
fake.random_int(min=0, max=9)
md5
fake.md5()
# 292bfff99620e2ae2f3b2f5b9fab4232
# 739169affdb932770deed3ff5f29f7b9
True or False
fake.boolean()
# False
# True
fake.email()
# wood.dubuque@strosin-ratke.com
詳しくはFaker 参照してください。
DBのサンプルデータやファイルIOのテスト用にどうぞ
Discussion