pyjanitor-devs/pyjanitor

Clean APIs for data cleaning. Python implementation of R package Janitor

View on GitHub ↗Jump to charts ↓Open shareable report →

pyjanitor-devs/pyjanitor has 1k+ stars and 150+ forks on GitHub, is written in Python, and was last pushed on Oct 18, 2026. Data as of . Signed-in members get hourly updates — create a free account.

Summary Information

Updated 1 hour ago
Added to GitGenius on September 24th, 2025
Created on March 4th, 2018
Open Issues & Pull Requests: 126 (+0)
GitHub issues: Enabled
Number of forks: 199
Total Stargazers: 1,499 (+0)
Total Subscribers: 15 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 43.7 hours
Mean response time: 133.4 days
90th percentile: 586.6 days
Tracked items: 145

Maintainer activity

3 people did triage or write work on this repository in the last 12 months.

Counts unlabeled, assigned, unassigned, milestoned, demilestoned, locked, unlocked over the last 12 months. These are issue and pull request events that require triage or write permission. Commits and code review are not counted. labeled and renamed are excluded because GitHub issue forms record the issue author as the actor. Figures from October 18, 2026. This count is not comparable across projects: each project's automation decides which of these events a person emits. How this is counted.

How this project is maintained

About 3% of issues opened in the past year have never received a reply. Only 28% of open issues come from outside the core team — the tracker reads mainly as internal planning. 86% of issues opened in the past year have been closed, leaving a working backlog. Three people close 97% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 72
New in 7 days: 4
Closed in 7 days: 4
Avg open age: 1,625 days
Stale 30+ days: 65
Stale 90+ days: 61

Recent activity

Opened in 7 days: 4
Closed in 7 days: 4
Comments in 7 days: 1
Events in 7 days: 10

Top labels

  • enhancement (82)
  • good first issue (78)
  • docfix (69)
  • being worked on (62)
  • available for hacking (50)
  • good intermediate issue (50)
  • bug (21)
  • infrastructure (15)

Most active issues this week

Sign in to see which issues are moving.
Sign in

Detailed Description

The pyjanitor repository hosts a powerful Python library designed to streamline and standardize data cleaning and preprocessing tasks within the pandas ecosystem. Positioned as an essential toolkit for data scientists and analysts, pyjanitor extends pandas DataFrames with a rich set of intuitive methods, making common data wrangling operations more efficient, readable, and reproducible. Its core philosophy is to provide a "fluent" API, enabling users to chain multiple cleaning steps together in a clear, sequential manner, significantly reducing the boilerplate code often associated with data preparation.

At its heart, pyjanitor addresses the pervasive challenge of messy, inconsistent, or incomplete data. It offers specialized functions for a wide array of cleaning scenarios. For instance, `clean_names()` automatically standardizes column names by converting them to snake_case, removing special characters, and handling duplicates, ensuring consistency across datasets. Functions like `remove_empty()` and `coalesce()` provide robust solutions for managing missing data, allowing users to drop entirely empty rows or columns, or fill missing values from a sequence of columns, respectively. The library also includes powerful reshaping capabilities, such as `pivot_wider()` and `unpivot_longer()`, inspired by R's `tidyr` package, which facilitate complex data transformations for analysis.

Beyond basic cleaning, pyjanitor provides advanced utilities that enhance data quality and preparation. `get_dupes()` helps identify and inspect duplicate rows across specified columns, a crucial step in ensuring data integrity. For categorical data, `factorize_columns()` offers a convenient way to convert string-based categories into numerical representations, which is often required for machine learning models. The library also introduces functions like `fill_direction()` for intelligently propagating values in missing data based on directional logic, and `expand_grid()` for generating all combinations of inputs, useful for creating lookup tables or testing scenarios.

The library integrates seamlessly with pandas by leveraging the DataFrame accessor pattern, meaning pyjanitor's methods are accessed directly via `df.janitor.<method_name>()`. This design choice ensures that pyjanitor functions feel like native pandas operations, maintaining the familiar DataFrame object throughout the cleaning pipeline. This deep integration allows users to intersperse pyjanitor methods with standard pandas operations, creating highly customized and efficient data workflows. The emphasis on method chaining not only improves code readability but also promotes a more declarative style of programming, where the sequence of data transformations is explicitly laid out.

In summary, pyjanitor serves as a vital extension to pandas, filling critical gaps in data cleaning and preprocessing. By offering a comprehensive suite of well-designed, chainable methods, it empowers users to tackle complex data wrangling challenges with greater ease and confidence. Its focus on standardization, readability, and reproducibility makes it an indispensable tool for anyone working with data in Python, from initial data ingestion to preparing datasets for advanced analytics and machine learning. The repository reflects a commitment to building a robust, community-driven solution for one of the most time-consuming aspects of the data science lifecycle.