テスト等で使用するダーミーデータ作成ができるFakerについて紹介します。
使用準備
pipでFakerをインストールします。
pip install faker
実装
ダミーデータの作成
from faker import Faker
fakegen = Faker('ja_JP')
name = fakegen.name() #名前
Fakerはロケールを設定できます。
日本語を使用したい時はFaker('ja_JP')
を設定します。
英語を使用したい時は、Faker('en')
を設定します。
他言語も設定できます。
詳しくはこちら↓
作成可能な項目
作成可能な項目はこちら↓に分かりやすくまとめてあります。
乱数の生成
乱数の生成はFakerではなくNumpyから生成できます。
import numpy as np
np.random.randint(0,100)
作成オプション
文字列の長さ
文字列の長さを制限するにはmax_nb_chars
を引数に設定します。
40文字以下の文字列を作成するには↓のように設定します。
text = fakegen.text(max_nb_chars=40)
選択肢を指定し、ランダムに生成
↓のようにあらかじめ設定した選択肢からランダムに生成できます。
- 性別
- 男
- 女
- プログラミング言語
- python
- php
- java
- html
ext_word_list
を設定することでそのリストから生成するように制限できます。
fakegen.word(ext_word_list=['男', '女'])
fakegen.word(ext_word_list=['python', 'php', 'java', 'html'])
重複なし
重複なしのデータを作成する場合は、unique
を項目名の前につけます。
city = fakegen.unique.city()
当然ですが、
uniqueオプションは、大量にデータ生成をするとUniquenessException
というExceptionを吐きます。
ユニークな値が尽きたことを意味します。
適当なタイミングで下記コードを差し込むと、UniquenessException
が回避できます。
が、重複する値が存在する結果が出力されます。
fakegen.unique.clear()
エクセル化
エクセルまたはcsvにしたい時はデータをDataFrame化します。
faker_list = []
# データを100個作成する
for i in range(100):
dataList = []
name = fakegen.name()
dataList.append(name)
# データフレーム化
df = pd.DataFrame(faker_list)
df.to_excel('../test.xlsx', index=False, header=False)