Skip to main content

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)

Source distribution for walkingpandas 0.1.2
File Size Uploaded
walkingpandas-0.1.2.tar.gz 155.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for walkingpandas 0.1.2
File Interpreter ABI Platform
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}

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page