Library / SDK
pandas-dev/pandas avatar
pandas-dev/pandas

pandas 3.0.5: The Workhorse for Labeled Data Analysis in Python

Flexible and powerful data analysis / manipulation library for Python, providing labeled data structures similar to R data.frame objects, statistical functions, and much more.

49,734 stars20,382 forksPythonBSD-3-Clause

At a glance

What is it?
pandas remains the default toolkit for tabular data manipulation in Python. This review covers its core mechanisms, installation paths, and where its design trade-offs matter for engineers.
Who is it for?
Adopt pandas if you need mature, feature-rich tabular data manipulation with deep ecosystem integration, especially for time series and Excel workflows. Avoid it if you require predictable performance on large datasets or strict memory control; consider Polars or DuckDB for those cases.
Can I use it commercially?
Yes. BSD-3-Clause is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What pandas Actually Solves for Engineers

pandas solves the problem of working with relational or labeled data in Python without writing custom loops. It gives you DataFrame and Series objects that behave like R data frames, but with Python syntax. This matters for engineers who need to clean, transform, and analyze data that comes from CSV files, Excel spreadsheets, or SQL databases. The README positions pandas as the fundamental high-level building block for practical data analysis. It is not a database and not a query engine; it is an in-memory data structure library. If your job involves reading a messy CSV, joining two tables on a key, or computing rolling averages, pandas is the default tool. It is also the base layer for many other Python data tools, so learning it is a prerequisite for most data engineering work.

Core Mechanisms: Alignment, GroupBy, and Missing Data

The library's power comes from a few specific mechanisms. First, automatic and explicit data alignment: when you combine two Series or DataFrames, pandas aligns them by index labels by default. This is different from NumPy, which aligns by position. For example, if you add two Series with different indexes, the result has the union of the labels, with NaN where a label is missing. This is a deliberate design choice that prevents silent misalignment, but it also means you must be aware of index semantics. Second, the groupby operation implements a split-apply-combine pattern. You split data into groups based on a key, apply a function to each group, and combine the results. This is the backbone of aggregation and transformation workflows. Third, missing data handling is central: pandas represents missing values as NaN, NA, or NaT, depending on the data type. This allows you to filter, fill, or drop missing values without crashing. These mechanisms are not new, but they are the reason pandas remains relevant: they are well-tested and documented.

Installation and Dependencies: What You Need to Run It

The README gives two official installation paths. With conda, you run conda install -c conda-forge pandas. With pip, you run pip install pandas. The core dependencies are NumPy and python-dateutil. On Windows and Emscripten, tzdata is also required for time zone support. If you install from source, you need Cython in addition to the normal dependencies. The source installation procedure is: clone the repository, then run pip install. inside the pandas directory. For development mode, the README mentions it but the exact command is truncated. The minimum supported versions of dependencies are not listed in the README, so you should check the full installation instructions on the official docs. This is a standard Python package with no exotic requirements, which lowers the barrier to adoption.

I/O Capabilities: From CSV to HDF5

pandas provides I/O tools for flat files (CSV and delimited), Excel files, and SQL databases, plus saving and loading data in HDF5 format. The README calls HDF5 format 'ultrafast', which is a claim about its performance relative to other formats, but the documentation does not give numbers. For an engineer, the practical point is that you can read a CSV with one line of code, write an Excel report with another, and store intermediate results in HDF5 for later analysis. This is a huge productivity gain. However, the I/O layer has its own quirks: CSV parsing can be slow for large files, and Excel support depends on optional libraries that are not installed by default. The README does not list those optional dependencies, so you may need to install openpyxl or xlrd separately. The HDF5 support is a differentiator, as many other libraries do not offer it out of the box.

Time Series and Hierarchical Indexing: Where pandas Shines

Two features in the README stand out for engineers working with temporal data. Time series functionality includes date range generation, frequency conversion, moving window statistics, and date shifting or lagging. These operations are not trivial to implement from scratch. For example, resampling a daily series to monthly requires handling calendar boundaries, which pandas does for you. Hierarchical indexing, or MultiIndex, allows multiple labels per axis. This is useful for panel data, like measurements across time and location. The combination of these features means pandas is not just a data frame library; it is a specialized tool for financial and scientific time series. However, the MultiIndex can be confusing for beginners, and the documentation warns that it is an advanced feature. The trade-off is flexibility versus complexity.

Limitations and Failure Modes: When pandas Is the Wrong Tool

pandas is not a distributed computing system. It operates in memory, so datasets that exceed available RAM will cause memory errors. There is no built-in parallel execution, so operations on large DataFrames can be slow. The README does not mention any performance guarantees, and the 'fast' claim is relative to hand-written Python loops, not to optimized C++ engines. Another failure mode is the silent alignment issue: if you are not careful with indexes, you can get NaN-filled results without an error. This is a common source of bugs. Additionally, the API has grown over decades, leading to inconsistent behaviors across functions. For example, the difference between .loc and .iloc is subtle, and using the wrong one can produce unexpected results. The project is actively maintained, with releases every few months, but that also means breaking changes are possible between major versions. The release notes are the place to check before upgrading.

Alternatives: Polars and DuckDB Take a Different Path

A real alternative is Polars, a DataFrame library that uses lazy evaluation and a columnar format. Unlike pandas, which executes operations eagerly and often copies data, Polars builds a query plan and optimizes it before execution. This leads to better performance on large datasets and more predictable memory usage. Polars also has a stricter type system and does not use NaN by default; it uses null values. Another alternative is DuckDB, an in-process SQL database that can run queries directly on CSV and Parquet files. DuckDB is not a DataFrame library; it uses SQL syntax, which is a different mental model. If your workflow is mostly aggregation and filtering, DuckDB may be simpler. pandas remains the better choice if you need the rich ecosystem of Python libraries that integrate with it, such as statsmodels or scikit-learn, because those libraries expect pandas objects as input.

Maintenance and License: What the Repository Tells Us

The repository is not archived, and the last push was on 2026-07-22, with release v3.0.5 on the same day. The release cadence shows a pattern: v3.0.4 on 2026-06-28 and v3.0.3 on 2026-05-11. That is roughly monthly patch releases, indicating active maintenance. The license is BSD-3-Clause, which is permissive and allows commercial use, modification, and redistribution with attribution. This is a low-license-risk dependency. The project is part of NumFOCUS, as indicated in the README meta table, which suggests governance and community involvement. The documentation is extensive, with links to user guides for every feature. For engineers, the maintenance cost is mainly in keeping up with API changes and reading release notes. The project has a development guide and a community Slack, which are good resources for contributing or asking questions.

Editorial conclusion

Adopt pandas if you need mature, feature-rich tabular data manipulation with deep ecosystem integration, especially for time series and Excel workflows. Avoid it if you require predictable performance on large datasets or strict memory control; consider Polars or DuckDB for those cases. Before adopting version 3.0.x, verify your existing code against the release notes, as the shift to PyArrow-backed strings and the copy-on-write default may change behavior in subtle ways. The project is actively maintained, with recent patch releases, so upgrading is low risk if you test first.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Community notes

Community notes