La librairie Faker sous Python

Générez rapidement des jeux de données avec Faker pour vos tests

Les données constituent une matière première indispensable dans le processus de développement, qu'il s'agisse de commerce en ligne, d'application de gestion ou encore de modélisation. Si bon nombre de plateformes proposent des datasets en libre accès, la recherche du candidat idéal peut s'avérer consommatrice de temps. Dans cet article nous allons évoquer la librairie Faker, qui vous permettra de générer les données dont vous aurez besoin.
La documentation en ligne étant bien détaillée, nous ne reviendrons, bien sûr, pas sur l'ensemble des possibilités offertes par cette librairie. Notre objectif est de vous la faire connaitre, aussi, si vous voulez en savoir plus, n'hésitez pas à consulter la doc : documentation Faker
Il faut savoir enfin que Faker existe également pour Perl, Java et Ruby.

python faker donnees data generate generation test dummy

Disponible dans de nombreux langages

Les noms, prénoms et coordonnées sont fortement dépendantes du pays d'origine. Faker permet de choisir le pays sur la base duquel seront générées les informations. Ainsi la génération d'une adresse française pourra s'implémenter ainsi :


pip install Faker

fake_fr = Faker(['fr-FR'])
print(*[fake_fr.street_address(),
        fake_fr.postcode(),
        fake_fr.city()])

Le résultat obtenu :

55, boulevard de Normand 55481 Guichard

Tout type de données

Outre les coordonnées postales que nous venons de voir, la librairie Faker permet de générer bien d'autres types d'informations. Celles-ci ont été catégorisées en providers. Ainsi vous pourrez générer des profils de personnes, leurs coordonnées bancaires, mais aussi des positions géographiques, des banques, des infos propres à des clients internet (mail, noms de domaine, adresse IP, etc ...) et bien d'autres types de données.

Un exemple

En guise d'illustration nous allons générer un dataframe pandas composé de clients pour lesquels nous voulons les informations suivantes : nom, prénom, date de naissance, email, pays, société et type d'abonnement. Cette dernière information n'est pas une information standard Faker mais nous voulons que nos clients soient rattachés a un type d'abonnement parmi trois possibles : basic, smart et pro.
Nous allons donc ajouter un provider dynamique personnalisé.


#Installons Faker si ce n'est deja fait
pip install Faker

#Nous importons ensuite les librairies necessaires
import pandas as pd
from faker import Faker
from faker.providers import DynamicProvider

#Nous instancions Faker
fake = Faker()

#Nous creons notre provider abonnement ...
abonnement_provider = DynamicProvider(
     provider_name="abonnement",
     elements=["basic", "smart", "pro"],
)

#... puis l'ajoutons a notre instance Faker
fake.add_provider(abonnement_provider)


#Nous generons notre base (ici 2000 personnes)
profiles = []
for _ in range(2000):
  profile = []
  profile.append(fake.first_name())
  profile.append(fake.last_name())
  profile.append(fake.date_of_birth())
  profile.append(fake.email())
  profile.append(fake.country())
  profile.append(fake.company())
  profile.append(fake.abonnement())
  profiles.append(profile)

#Nous convertissons enfin en dataframe Pandas
df_profiles = pd.DataFrame(profiles)
df_profiles. columns = ['prenom', 'nom', 'date_naissance', 
                        'email', 'pays', 'societe', 
                        'abonnement']
df_profiles.head()
python faker donnees data generate generation test dummy

Crédits

L'illustration associée à cet article est à mettre au crédit de : Designed by pikisuperstar / Freepik


Retrouvez dans la rubrique "Nos datasets" toutes les données dont vous aurez besoin pour tester et pratiquer !