MovingPandas
MovingPandas implements a Trajectory class and corresponding methods based on GeoPandas.
Visit movingpandas.org for details!
You can run MovingPandas examples on MyBinder - no installation required: (These examples use the latest MovingPandas release version.)
To try the cutting-edge dev version, use this MyBinder link.
Documentation
We recommend starting your MovingPandas journey with the tutorial notebooks on the official homepage
The official API documentation is hosted on ReadTheDocs
Examples
Trajectory plots
Create interactive trajectory plots, including multiple linked plots with ease
video-based trajectories
For all types of tracking data, e.g.Including plots in custom projections
Stop detection
Detect stops in trajectories, extract them as points or segments, and use them to split trajectories
Trajectory generalization
Generalize trajectories using spatial, temporal, and spatiotemporal methods
Trajectory cleaning & smoothing
Clean and sooth trajectories by removing outliers and applying Kalman filters
Trajectory aggregation
Aggregate trajectories to explore larger patterns
Installation
MovingPandas for Python >= 3.7 and all it's dependencies are available from conda-forge and can be installed using
conda install -c conda-forge movingpandas
or faster using
mamba install -c conda-forge movingpandas
Note that it is NOT recommended to install MovingPandas from PyPI! If you're on Windows or Mac, many GeoPandas / MovingPandas dependencies cannot be pip installed (for details see the corresponding notes in the GeoPandas documentation). On Ubuntu, pip install fails on cartopy with "Proj 4.9.0 must be installed".
Development installation
Use the following steps to run the notebooks using the current development version:
Using conda
conda env create -f environment.yml
Develop mode
To install MovingPandas in "develop" or "editable" mode you may use:
python setup.py develop
Contributing to MovingPandas
All contributions, bug reports, bug fixes, documentation improvements, enhancements and ideas are welcome.
A detailed overview on how to contribute can be found in the contributing guide on GitHub.
Related Python packages
For a more comprehensive list, including non-Python solutions, check https://github.com/anitagraser/movement-analysis-tools
scikit-mobility is a similar package which also deals with movement data. It implements TrajectoryDataFrames and FlowDataFrames on top of Pandas instead of GeoPandas. There is little overlap in the covered use cases and implemented functionality (comparing MovingPandas tutorials and scikit-mobility tutorials). MovingPandas focuses on spatio-temporal data exploration with corresponding functions for data manipulation and analysis. scikit-mobility on the other hand focuses on computing human mobility metrics, generating synthetic trajectories and assessing privacy risks. Plotting is based on Folium.
Traja extends the capabilitis of Pandas DataFrames specific for animal trajectory analysis in 2D. Plots (static) are based on seaborn.
PyMove provides functionality similar to MovingPandas. It implements PandasMoveDataFrames and DaskMoveDataFrame on top of Pandas and Dask DataFrames. Plotting is based on Folium.
Tracktable is a related Python package with its core data structures and algorithms implemented in C++, i.e. it is not based on Pandas. Plotting is based on Cartopy (for still images) and Folium (for interactive rendering).
Citation information
Please cite [0] when using MovingPandas in your research and reference the appropriate release version. All releases of MovingPandas are listed on Zenodo where you will find citation information, including DOIs.
Publications
About MovingPandas
@article{graser_movingpandas_2019,
title = {{MovingPandas}: {Efficient} {Structures} for {Movement} {Data} in {Python}},
volume = {1},
issn = {2308-1708, 2308-1708},
shorttitle = {{MovingPandas}},
url = {https://hw.oeaw.ac.at?arp=0x003aba2b},
doi = {10.1553/giscience2019_01_s54},
language = {en},
urldate = {2023-04-19},
journal = {GI\_Forum},
author = {Graser, Anita},
year = {2019},
pages = {54--68},
}
[2] Graser, A. (2021). Exploratory Movement Data Analysis. GeoPython 2021. –
Scientific publications using MovingPandas
- Graser, A. & Dragaschnig, M. (2020). Open Geospatial Tools for Movement Data Exploration. KN ‒ Journal of Cartography and Geographic Information, 70(1), 3-10. doi:10.1007/s42489-020-00039-y. - "For example, Fig. 4 shows how MovingPandas can be used to split a trajectory into subtrajectories and plot the results."
- Kirkland, L. A., de Waal, A., & de Villiers, J. P. (2020). Evaluation of a Pure-Strategy Stackelberg Game for Wildlife Security in a Geospatial Framework. In Southern African Conference for Artificial Intelligence Research (pp. 101-118). Springer, Cham. - "The movingpandas Python library [12] is utilised to store trajectories which can be easily analysed and plotted after the simulation."
- Depellegrin, D., Bastianini, M., Fadini, A., & Menegon, S. (2020). The effects of COVID-19 induced lockdown measures on maritime settings of a coastal region. Science of the Total Environment, 740, 140123. - "We combined the Python libraries scikit-Mobility (Pappalardo et al., 2019) and MovingPandas (Graser, 2019) to pre-process position data received from the AAOT and to reconstruct and represent the vessel trajectory in the lockdown assessment period."
- Graser, A. (2021). An exploratory data analysis protocol for identifying problems in continuous movement data. Journal of Location Based Services. doi:10.1080/17489725.2021.1900612. - MovingPandas is used to plot individual trajectories colored by movement speeed.
- Mehri, S., Alesheikh, A. A., & Basiri, A. (2021). A Contextual Hybrid Model for Vessel Movement Prediction. IEEE Access, 9, 45600-45613. - "AIS messages are converted into trajectories by a Python library named, MovingPandas"
- Soularidis, A., & Kotis, K. (2022). Semantic Modeling and Reconstruction of Drones’ Trajectories. In European Semantic Web Conference (pp. 158-162). Springer, Cham. - "The goal of this paper is to present our position related to the semantic trajectories of swarms of drones, towards proposing methods for extending MovingPandas, a widely used open-source trajectory analytics and visualization tool."
- Elayam, M. M., Ray, C., & Claramunt, C. (2022). A hierarchical graph-based model for mobility data representation and analysis. Data & Knowledge Engineering, 102054. - "The implementation combines several open source tools such as Python, MovingPandas library, Uber H3 index, Neo4j graph database management system ..."
- Kotis, K., & Soularidis, A. (2023). ReconTraj4Drones: A Framework for the Reconstruction and Semantic Modeling of UAVs’ Trajectories on MovingPandas. Applied Sciences, 13(1), 670. - "This framework extends MovingPandas, a widely used and open-source trajectory analytics and visualization tool."
- Šakan, D., Žuškin, S., Rudan, I., & Brčić, D. (2023). Container Ship Fleet Route Evaluation and Similarity Measurement between Two Shipping Line Ports. Journal of Marine Science and Engineering, 11(2), 400. - "To create routes, we used the MovingPandas library ..." (Horizon Europe project no. 101077026 SafeNav).
- Sheehan, C., & Green, T. (2023) ChargeUp! Data Swap!. Using data from battery swapping e-motorcycles in Nairobi to assess impacts and plan infrastructure. Imperial College London. White paper. - "the raw GPS co-ordinates and their timestamps were processed to detect individual trajectories (trips) for each battery using MovingPandas"
Teaching materials referencing MovingPandas
- Aalto University. Spatial data science for sustainable development course
- University of Trento. Geospatial Analysis and Representation for Data Science course for the master in Data Science