walkingpandas
A Python library for massive-scale walk and path analysis on network topologies.
walkingpandas bridges static graph theory (network topologies) with massive-scale sequential data — any process that can be modelled as a walk on a graph. DuckDB is the analytical engine, Parquet the storage layer, and the API feels like pandas while safely handling out-of-core computation on datasets of any size.
Use cases: pedestrian and vehicle mobility, clickstream / user-journey analysis, supply-chain and logistics flows, trade and transaction routing, biological pathway traversal, communication network traces — anything where entities move step-by-step through a graph.
Features
- Lazy Evaluation: Build up queries without executing until
.compute()is called - Out-of-Core Processing: Handle datasets that don't fit in memory using DuckDB and Parquet
- Integer-Native IDs: All node/edge IDs are stored as BIGINT for fast joins and compact storage; string IDs are auto-translated transparently
- Map Matching (optional): Turn raw GPS traces into walk data via Valhalla (
pip install walkingpandas[mapmatch]) - Spatial Filtering: Reverse spatial filtering for fast geographic queries
- Temporal Queries: Handle time-less, single-timestamp, and dwell-time data scenarios
- Graph Validation: Filter simple paths, cycles, and complex walks
- Pandas-like API: Familiar interface for data scientists
Installation
pip install walkingpandas
Quick Start
import walkingpandas as wp
# 1. Network (static topology)
network = wp.Network(
nodes="data/network/nodes.parquet",
edges="data/network/edges.parquet"
)
# 2. WalkFrame (walks + network)
walks = wp.WalkFrame.from_parquet("data/walks/*.parquet", network=network)
# 3. Lazy query chain; nothing runs until .compute()
result = (
walks
.only_simple_paths()
.passing_through([42])
.filter(time_range=('08:00', '09:00'))
.edge_frequencies()
.compute()
)
Or as a one-liner when you have nodes, edges, and walks as separate Parquet paths:
walks = wp.read_dataset(
nodes="data/network/nodes.parquet",
edges="data/network/edges.parquet",
walks="data/walks/*.parquet"
)
traffic = walks.edge_frequencies().compute()
Documentation
Full documentation is available in the docs/ directory. To build and view locally:
pip install walkingpandas[docs]
mkdocs serve
Then open http://127.0.0.1:8000 in your browser.
License
MIT License - see LICENSE for details.
Contributing
Contributions welcome! Please open an issue or submit a pull request.
Citation
If you use walkingpandas in your research, please cite:
@software{walkingpandas,
title = {walkingpandas: Massive-Scale Walk and Path Analysis on Network Topologies},
author = {Jürgen Hackl},
year = {2026},
url = {https://github.com/cisgroup/walkingpandas}
}
Metadata
Release files for walkingpandas 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| walkingpandas-0.1.2.tar.gz | 155.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| walkingpandas-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 208.4 kB
Release files / walkingpandas-0.1.2.tar.gz
| Download URL | walkingpandas-0.1.2.tar.gz |
|---|---|
| Size | 155.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5fa03d23bbeccab3e6e2f277659aaca231d2d058406c26282489cb51a87fb701
|
|
BLAKE2b-256 checksum How to use checksums |
a55a1b0043c0402ab1dc76749874a8a4a44456a9d88e4909278665cbbdec753f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / walkingpandas-0.1.2-py3-none-any.whl
| Download URL | walkingpandas-0.1.2-py3-none-any.whl |
|---|---|
| Size | 53.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d99a857d4ff9e3727b7986226cbd2710dc932655694d2fce9551737e123b36f1
|
|
BLAKE2b-256 checksum How to use checksums |
0dafd4a742486253daaa107ef32685a0e58cad4635a4a1e7e5a4ad5dc3d0737d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|