Japanese Personal Name Dataset
A comprehensive dataset of Japanese personal names (first names and last names) with hiragana readings, romaji (Hepburn romanization), and kanji variations.
Features
- 6,120 male first names (702 optimized/popular names)
- 3,343 female first names (241 optimized/popular names)
- 2,000 last names with estimated population data
- Multiple kanji variations for each reading
- Romaji (Hepburn) transliterations
- Easy-to-use Python API
Installation
pip install japanese-personal-name-dataset
Or install from source:
git clone https://github.com/shuheilocale/japanese-personal-name-dataset.git
cd japanese-personal-name-dataset
pip install -e .
Dataset Structure
The dataset consists of the following CSV files:
first_name_man_org.csv- Male first names (original)first_name_man_opti.csv- Male first names (optimized/popular)first_name_woman_org.csv- Female first names (original)first_name_woman_opti.csv- Female first names (optimized/popular)last_name_org.csv- Last names
Optimized datasets contain curated popular names only.
CSV Format
First Names
Each row represents one name reading:
- Column 1: Hiragana reading
- Column 2: Romaji (Hepburn)
- Column 3+: Kanji variations (variable number)
Example:
あい,ai,藍,愛,亜衣
Last Names
Each row represents one last name:
- Column 1: Kanji
- Column 2: Estimated population
- Column 3: Hiragana reading
- Column 4: Romaji (Hepburn)
Example:
佐藤,1887000,さとう,satou
Usage
Basic Usage
from japanese_personal_name_dataset import load_dataset
# Load the dataset (default: full version)
man_names, woman_names = load_dataset()
# Access male names
print(man_names['たろう'])
# Output: {'en': 'tarou', 'kanji': ['多朗', '多郎', '太朗', '太郎', '大郎']}
# Access female names
print(woman_names['はなこ'])
# Output: {'en': 'hanako', 'kanji': ['花子', '華子', ...]}
Load Optimized Dataset (Popular Names Only)
# Load only popular names
man_names, woman_names = load_dataset(kind='opti')
print(f"Male names: {len(man_names)} types") # 702 types
print(f"Female names: {len(woman_names)} types") # 241 types
Include Last Names
# Load with last names
man_names, woman_names, last_names = load_dataset(include_last_names=True)
# Access last name data
print(last_names['佐藤'])
# Output: {'reading': 'さとう', 'en': 'satou', 'count': 1887000}
Using Utility Functions
from japanese_personal_name_dataset import (
generate_random_name,
generate_random_full_name,
search_by_reading,
search_by_kanji,
get_last_names,
is_valid_name,
)
# Generate random name
name = generate_random_name(gender='male')
print(name) # Example: Taro
# Generate random full name with reading
full_name, reading = generate_random_full_name(gender='female', return_reading=True)
print(f"{full_name} ({reading})") # Example: Sato Hanako (satou hanako)
# Search by reading (partial match / LIKE search)
results = search_by_reading('kou', partial=True, gender='male')
for r in results[:3]:
print(f"{r['reading']} ({r['romaji']}): {', '.join(r['kanji'][:3])}")
# Example: kouji (kouji): Koji, Takaji, Yukiharu
# Search by kanji (names containing '子')
results = search_by_kanji('子', partial=True, gender='female')
print(f"Names containing '子': {len(results)} results")
# Get top 10 most common last names
top_10 = get_last_names(limit=10)
for i, name in enumerate(top_10, 1):
print(f"{i}. {name['kanji']} ({name['reading']}) - {name['count']:,} people")
# Validate name
if is_valid_name('太郎', 'たろう'):
print("太郎 (tarou) is a valid combination")
Use Cases
- Test data generation for web applications
- Name validation and normalization
- Japanese language learning tools
- Data science and statistical analysis
- Game development (character name generation)
Dataset Statistics
Number of Names
| Type | Count |
|---|---|
| Male first names (original) | 6,120 |
| Male first names (optimized) | 702 |
| Female first names (original) | 3,343 |
| Female first names (optimized) | 241 |
| Last names | 1,999 |
Kanji Variations (per reading)
For original datasets:
- Male names: avg 10 variations, max 447
- Female names: avg 11 variations, max 398
For optimized datasets:
- Male names: avg 45 variations, max 447
- Female names: avg 51 variations, max 291
Data Format
- File format: CSV
- Character encoding: UTF-8
- Line endings: LF
- Romaji system: Hepburn romanization
License
MIT License
Contributing
Contributions are welcome! Please feel free to submit issues or pull requests.
References
Disclaimer
While we strive for accuracy, there may be errors in the romanization or kanji variations. This dataset is provided as-is for informational purposes.
Metadata
Release files for japanese-personal-name-dataset 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| japanese_personal_name_dataset-0.3.0.tar.gz | 576.2 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| japanese_personal_name_dataset-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.1 MB
Release files / japanese_personal_name_dataset-0.3.0.tar.gz
| Download URL | japanese_personal_name_dataset-0.3.0.tar.gz |
|---|---|
| Size | 576.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cd828526ad10a20c4ca2e6016371b90df41b53ba5d4feb0f0633d015025f85d1
|
|
BLAKE2b-256 checksum How to use checksums |
ec891bb06b075709473fcd15880962d2f5dd067eef01b7ba0b10f03cd8e44825
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.
Transparency logRelease files / japanese_personal_name_dataset-0.3.0-py3-none-any.whl
| Download URL | japanese_personal_name_dataset-0.3.0-py3-none-any.whl |
|---|---|
| Size | 537.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cd8cf0ce010046736b06d5607d6e6a89282f0f6c038f4e55c7159c187886f0db
|
|
BLAKE2b-256 checksum How to use checksums |
6af72f01cc6e220ce4cc811e5ad6e87ff4fbd6b5fba41711eda43992c31559e9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.
Transparency logSecurity for japanese-personal-name-dataset 0.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for japanese_personal_name_dataset-0.3.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.