Partridge is python library for working with GTFS feeds using pandas DataFrames.
Project description
=========
Partridge
=========
.. image:: https://img.shields.io/pypi/v/partridge.svg
:target: https://pypi.python.org/pypi/partridge
.. image:: https://img.shields.io/travis/remix/partridge.svg
:target: https://travis-ci.org/remix/partridge
Partridge is python library for working with `GTFS <https://developers.google.com/transit/gtfs/>`__ feeds using `pandas <https://pandas.pydata.org/>`__ DataFrames.
The implementation of Partridge is heavily influenced by our experience at `Remix <https://www.remix.com/>`__ ingesting, analyzing, and debugging thousands of GTFS feeds from hundreds of agencies.
At the core of Partridge is a dependency graph rooted at ``trips.txt``. Disconnected data is pruned away according to this graph when reading the contents of a feed. The root node can optionally be filtered to create a view of the feed specific to your needs. It's most common to filter a feed down to specific dates (``service_id``), routes (``route_id``), or both.
.. figure:: dependency-graph.png
:alt: dependency graph
Usage
-----
.. code:: python
import datetime
import partridge as ptg
path = 'path/to/sfmta-2017-08-22.zip'
service_ids_by_date = ptg.read_service_ids_by_date(path)
service_ids = service_ids_by_date[datetime.date(2017, 9, 25)]
feed = ptg.feed(path, view={
'trips.txt': {
'service_id': service_ids,
'route_id': '12300', # 18-46TH AVENUE
},
})
assert set(feed.trips.service_id) == service_ids
assert list(feed.routes.route_id) == ['12300']
# Buses running the 18 - 46th Ave line use 88 stops (on September 25, 2017, at least).
assert len(feed.stops) == 88
Features
--------
- Surprisingly fast :)
- Load only what you need into memory
- Built-in support for resolving service dates
- Easily extended to support fields and files outside the official spec
(TODO: document this)
- Handle nested folders and bad data in zips
- Predictable type conversions
Installation
------------
.. code:: console
pip install partridge
Thank You
---------
I hope you find this library useful. If you have suggestions for
improving Partridge, please open an `issue on
GitHub <https://github.com/remix/partridge/issues>`__.
=======
History
=======
0.4.0 (2017-12-10)
===================
* Add support for Python 2.7. Thanks @danielsclint!
0.3.0 (2017-10-12)
===================
* Fix service date resolution for raw_feed. Previously raw_feed considered all days of the week from calendar.txt to be active regardless of 0/1 value.
0.2.0 (2017-09-30)
===================
* Add missing edge from fare_rules.txt to routes.txt in default dependency graph.
0.1.0 (2017-09-23)
------------------
* First release on PyPI.
Partridge
=========
.. image:: https://img.shields.io/pypi/v/partridge.svg
:target: https://pypi.python.org/pypi/partridge
.. image:: https://img.shields.io/travis/remix/partridge.svg
:target: https://travis-ci.org/remix/partridge
Partridge is python library for working with `GTFS <https://developers.google.com/transit/gtfs/>`__ feeds using `pandas <https://pandas.pydata.org/>`__ DataFrames.
The implementation of Partridge is heavily influenced by our experience at `Remix <https://www.remix.com/>`__ ingesting, analyzing, and debugging thousands of GTFS feeds from hundreds of agencies.
At the core of Partridge is a dependency graph rooted at ``trips.txt``. Disconnected data is pruned away according to this graph when reading the contents of a feed. The root node can optionally be filtered to create a view of the feed specific to your needs. It's most common to filter a feed down to specific dates (``service_id``), routes (``route_id``), or both.
.. figure:: dependency-graph.png
:alt: dependency graph
Usage
-----
.. code:: python
import datetime
import partridge as ptg
path = 'path/to/sfmta-2017-08-22.zip'
service_ids_by_date = ptg.read_service_ids_by_date(path)
service_ids = service_ids_by_date[datetime.date(2017, 9, 25)]
feed = ptg.feed(path, view={
'trips.txt': {
'service_id': service_ids,
'route_id': '12300', # 18-46TH AVENUE
},
})
assert set(feed.trips.service_id) == service_ids
assert list(feed.routes.route_id) == ['12300']
# Buses running the 18 - 46th Ave line use 88 stops (on September 25, 2017, at least).
assert len(feed.stops) == 88
Features
--------
- Surprisingly fast :)
- Load only what you need into memory
- Built-in support for resolving service dates
- Easily extended to support fields and files outside the official spec
(TODO: document this)
- Handle nested folders and bad data in zips
- Predictable type conversions
Installation
------------
.. code:: console
pip install partridge
Thank You
---------
I hope you find this library useful. If you have suggestions for
improving Partridge, please open an `issue on
GitHub <https://github.com/remix/partridge/issues>`__.
=======
History
=======
0.4.0 (2017-12-10)
===================
* Add support for Python 2.7. Thanks @danielsclint!
0.3.0 (2017-10-12)
===================
* Fix service date resolution for raw_feed. Previously raw_feed considered all days of the week from calendar.txt to be active regardless of 0/1 value.
0.2.0 (2017-09-30)
===================
* Add missing edge from fare_rules.txt to routes.txt in default dependency graph.
0.1.0 (2017-09-23)
------------------
* First release on PyPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
partridge-0.4.0.tar.gz
(889.1 kB
view details)
Built Distribution
File details
Details for the file partridge-0.4.0.tar.gz
.
File metadata
- Download URL: partridge-0.4.0.tar.gz
- Upload date:
- Size: 889.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0c05c69aee1d8f4121a5bf780af9f0ade84d7d857dd735abfd9cf3bb8a93dbc9 |
|
MD5 | 91c2d765939157c7c7530b62bd7b11a9 |
|
BLAKE2b-256 | 4f20a805b64862d8eea4298f9672d60014f6d83ebfae2958ad0b417216e9b9e6 |
File details
Details for the file partridge-0.4.0-py2.py3-none-any.whl
.
File metadata
- Download URL: partridge-0.4.0-py2.py3-none-any.whl
- Upload date:
- Size: 10.3 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ad735550638290a3cdab4209387e9d34ad4a1586610a86f16d72c75f96bd8b23 |
|
MD5 | 1e516cbd2e5432c81085276b74bc17de |
|
BLAKE2b-256 | 075ce9a6c5fdd57dabef754c792e6bf0c3368062020602b8a774e76c5c9ec65f |