pandas is a Python package providing fast, flexible, and expressive data structures designed to make working with "relational" or "labeled" data both easy and intuitive. It aims to be the fundamental high-level building block for doing practical, real world data analysis in Python. Additionally, it has the broader goal of becoming the most powerful and flexible open source data analysis / manipulation tool available in any language. It is already well on its way toward this goal.
Here are just a few of the things that pandas does well:
- Easy handling of missing data (represented as NaN) in floating point as well as non-floating point data
- Size mutability: columns can be inserted and deleted from DataFrame and higher dimensional objects
- Automatic and explicit data alignment: objects can be explicitly aligned to a set of labels, or the user can simply ignore the labels and let Series, DataFrame, etc. automatically align the data for you in computations
- Powerful, flexible group by functionality to perform split-apply-combine operations on data sets, for both aggregating and transforming data
- Make it easy to convert ragged, differently-indexed data in other Python and NumPy data structures into DataFrame objects
- Intelligent label-based slicing, fancy indexing, and subsetting of large data sets
- Intuitive merging and joining data sets
- Flexible reshaping and pivoting of data sets
- Hierarchical labeling of axes (possible to have multiple labels per tick)
- Robust IO tools for loading data from flat files (CSV and delimited), Excel files, databases, and saving / loading data from the ultrafast HDF5 format
- Time series-specific functionality: date range generation and frequency conversion, moving window statistics, moving window linear regressions, date shifting and lagging, etc.
The source code is currently hosted on GitHub at: http://github.com/pydata/pandas
Binary installers for the latest released version are available at the Python package index:
http://pypi.python.org/pypi/pandas/
And via easy_install
or pip
:
easy_install pandas pip install pandas
- NumPy: 1.6.1 or higher
- python-dateutil 1.5 or higher
- pytz
- Needed for time zone support with
date_range
- numexpr
- Needed to accelerate some expression evaluation operations
- Required by PyTables
- bottleneck
- Needed to accelerate certain numerical operations
Cython: Only necessary to build development version. Version 0.17.1 or higher.
SciPy: miscellaneous statistical functions
PyTables: necessary for HDF5-based storage
matplotlib: for plotting
- statsmodels
- Needed for parts of :mod:`pandas.stats`
boto: necessary for Amazon S3 access.
One of the following combinations of libraries is needed to use the top-level :func:`~pandas.io.html.read_html` function:
- BeautifulSoup4 and html5lib (Any recent version of html5lib is okay.)
- BeautifulSoup4 and lxml
- BeautifulSoup4 and html5lib and lxml
- Only lxml, although see :ref:`HTML reading gotchas <html-gotchas>` for reasons as to why you should probably not take this approach.
Warning
- if you install BeautifulSoup4 you must install either lxml or html5lib or both. :func:`~pandas.io.html.read_html` will not work with only BeautifulSoup4 installed.
- You are highly encouraged to read :ref:`HTML reading gotchas <html-gotchas>`. It explains issues surrounding the installation and usage of the above three libraries
- You may need to install an older version of BeautifulSoup4:
- Versions 4.2.1, 4.1.3 and 4.0.2 have been confirmed for 64 and 32-bit Ubuntu/Debian
- Additionally, if you're using Anaconda you should definitely read :ref:`the gotchas about HTML parsing libraries <html-gotchas>`
Note
if you're on a system with
apt-get
you can dosudo apt-get build-dep python-lxmlto get the necessary dependencies for installation of lxml. This will prevent further headaches down the line.
To install pandas from source you need cython
in addition to the normal dependencies above,
which can be installed from pypi:
pip install cython
In the pandas
directory (same one where you found this file after cloning the git repo), execute:
python setup.py install
or for installing in development mode:
python setup.py develop
Alternatively, you can use pip if you want all the dependencies pulled in automatically
(the optional -e
option is for installing it in
development mode):
pip install -e .
On Windows, you will need to install MinGW and execute:
python setup.py build --compiler=mingw32 python setup.py install
See http://pandas.pydata.org/ for more information.
BSD
The official documentation is hosted on PyData.org: http://pandas.pydata.org/
The Sphinx documentation should provide a good starting point for learning how to use the library. Expect the docs to continue to expand as time goes on.
Work on pandas
started at AQR (a quantitative hedge fund) in 2008 and
has been under active development since then.
Since pandas
development is related to a number of other scientific
Python projects, questions are welcome on the scipy-user mailing
list. Specialized discussions or design issues should take place on
the pystatsmodels mailing list / Google group, where
scikits.statsmodels
and other libraries will also be discussed:
http://groups.google.com/group/pystatsmodels