Pythonのfakerモジュールの使い方|偽のデータを作ってテキストに保存する方法

スポンサーリンク

今日は、とても面白くなりそうなFakerモジュールについて学びます。

スポンサーリンク

faker モジュールの紹介

Fakerモジュールは、名前、年齢、場所などのランダムな属性を含むランダムなデータを生成するために使用されます。

さて、なぜフェイクデータが必要なのでしょうか?データベースの欠損値をダミーデータで埋めるため、あるいは単純にアルゴリズムをテストするためにフェイクデータが必要になるかもしれません。

faker モジュールのインポート

faker ライブラリの様々な機能やメソッドを調べるには、まずそれをインポートする必要があります。

import faker library がエラーを投げる場合は、 pip コマンドを使用してライブラリをインストールします。

ライブラリをインポートするには、以下のコードを使用します。

1
from faker import Faker

フェイクデータを作成する

フェイクデータを作成するには、まず Faker ライブラリの faker オブジェクトを作成し、そのオブジェクトに様々な関数を適用してフェイクランダムデータを取得する必要があります。

以下のコードでは、faker.name 関数を使ってランダムな名前を出力しています。

1
2
faker = Faker()
print(faker.name())

より分かりやすくするために、同じ関数を使って5つのランダムな名前を表示してみましょう。

そのコードと出力は以下のとおりです。

1
2
3
faker = Faker()
for i in range(5):
    print(faker.name())

上のコードの出力は以下のように表示されます。

Stephanie Rivera
Gina Morgan
Elizabeth Garcia
Joanne Collier
Jessica Berry

異なる言語でフェイクデータを作成する

作成した Faker オブジェクトに定義することで、異なる言語のフェイクデータを生成することもできる。

ここでは、ヒンディー語のデータを生成してみましょう。

そのためのコードを以下に示す。

1
2
3
faker1 = Faker('hi_IN')
for i in range(5):
    print(faker1.name())

ここで宣言した faker1 オブジェクトはヒンディー語です。

ですから、このオブジェクトを作成して、ダミーの名前を表示させると、次のように表示されます。

पाटिल, इशान
लाला, जयदेव
ऐश्वर्या लाला
ललित गणेश
चेतना मल्लिक

フェイクテキストを生成する

同じオブジェクトを使って、text関数を使って、テキストや文章を生成することができます

そのためのコードを以下に示します。

1
2
faker = Faker()
print(faker.text())

その出力は以下のようになります。

Big thought American. Per red plan hundred language test. Language early bill citizen total if officer because. Example practice other street newspaper kid level.

偽の表形式データを生成する

それでは、python の pandas ライブラリの dataframes という形式で、大量のデータを作成してみましょう。

複数の種類のデータを収集するために、作成されたフェイカーオブジェクトの profile 関数を使用します。

そのためのコードを以下に示します。

1
2
3
4
import pandas as pd
faker = Faker()
data = [faker.profile() for i in range(10)]
df = pd.DataFrame(data)

作成したdataframeの最初の5つのデータを表示します。

その結果、以下のように表示されます。

Faker Module Generated Dataframe
Faker Module Generated Dataframe

まとめ

この記事では、Fakerライブラリを使って、英語だけでなく様々な言語のフェイクデータを生成する方法を見ました。

同じモジュールを使って完全なデータセットを生成し、そのデータセットをMLモデルへの適用を含む様々な用途に使用することができます

ご一読ありがとうございました。

タイトルとURLをコピーしました