Generating Mock Data with Python Faker
The Faker library allows developers to generate synthetic data for testing purposes. By initializing a generator instance, you can produce a wide variety of data types ranging from simple strings to complex user profiles and time-series data. Below are practical examples and an overview of the available provider methods.
Data Simulation Examples
Student Grade Generation
This example demonstrates creating a dataset of student names mapped to random scores. The generator is localized to 'en_US', and a dictionary is populated using a loop to associate random integer grades with names.
from faker import Faker
import random
# Initialize the generator
simulator = Faker('en_US')
# Create a dictionary mapping student names to grades
class_records = {}
for _ in range(10):
student_name = simulator.name()
grade = random.randint(50, 100)
class_records[student_name] = grade
# Output the simulated grades
for name, score in class_records.items():
print(f"Name: {name}, Grade: {score}")
File Path Construction
The library can simulate file system paths. The following snippet generates a hierarchical path with a specific depth and file extension, useful for testing file I/O operations.
# Generate a nested file path ending in .txt
system_path = simulator.file_path(depth=4, extension='txt')
print(system_path)
Core Provider Methods
Faker categorizes its functionality into providers. Below is a summary of the most commonly used methods organized by data category.
- Location & Geography:
city_suffix(),country(),country_code(),district(),geo_coordinate(),latitude(),longitude(),postcode(),province(),street_address(),street_name(),street_suffix(). - Numbers & Randomness:
random_digit(),random_digit_not_null(),random_element(),random_int(),random_letter(),random_number(),numerify(),lexify(). - Business & Finance:
bs(),company(),company_prefix(),company_suffix(),credit_card_expire(),credit_card_full(),credit_card_number(),credit_card_provider(),credit_card_security_code(),currency_code(). - Datetime & Time:
am_pm(),century(),date(),date_between(),date_time(),date_time_ad(),date_time_between(),future_date(),future_datetime(),month(),month_name(),past_date(),past_datetime(),time(),timezone(),unix_time(),year(). - File System & MIME:
file_extension(),file_name(),file_path(),mime_type(). - Internet & Network:
ascii_company_email(),ascii_email(),company_email(),domain_name(),domain_word(),email(),free_email(),image_url(),ipv4(),ipv6(),mac_address(),uri(),url(),user_name(). - User Profile & Person:
first_name(),first_name_female(),first_name_male(),last_name(),last_name_female(),last_name_male(),name(),name_female(),name_male(),job(),phone_number(),ssn(),profile(),simple_profile(). - Text & Lorem Ipsum:
paragraph(),paragraphs(),sentence(),sentences(),text(),word(),words(). - Python Data Types:
pybool(),pydecimal(),pydict(),pyfloat(),pyint(),pyiterable(),pylist(),pyset(),pystr(),pystruct(),pytuple(). - Security & Encoding:
binary(),boolean(),language_code(),locale(),md5(),null_boolean(),password(),sha1(),sha256(),uuid4(). - Browser & User Agents:
chrome(),firefox(),internet_explorer(),opera(),safari(),linux_platform_token(),user_agent(). - Miscellaneous:
color_name(),hex_color(),rgb_color(),safe_color_name(),safe_hex_color().