All Projects → ni1o1 → transbigdata

ni1o1 / transbigdata

Licence: BSD-3-Clause license
A Python package develop for transportation spatio-temporal big data processing, analysis and visualization.

Programming Languages

python
139335 projects - #7 most used programming language
TeX
3793 projects

Projects that are alternatives of or similar to transbigdata

website-old
The Frictionless Data website.
Stars: ✭ 31 (-84.1%)
Mutual labels:  data-analysis
heidi
heidi : tidy data in Haskell
Stars: ✭ 24 (-87.69%)
Mutual labels:  data-analysis
python-notebooks
A collection of Jupyter Notebooks used in conferences or just to have some snippets.
Stars: ✭ 14 (-92.82%)
Mutual labels:  data-analysis
Motoro
Smart contracts for decentralized rentals of vehicles.
Stars: ✭ 96 (-50.77%)
Mutual labels:  transportation
mercury
Mercury - data visualize and discovery with Javascript, such as apache zeppelin and jupyter
Stars: ✭ 29 (-85.13%)
Mutual labels:  data-analysis
Data-Science-Resources
A guide to getting started with Data Science and ML.
Stars: ✭ 17 (-91.28%)
Mutual labels:  data-analysis
PracticalMachineLearning
A collection of ML related stuff including notebooks, codes and a curated list of various useful resources such as books and softwares. Almost everything mentioned here is free (as speech not free food) or open-source.
Stars: ✭ 60 (-69.23%)
Mutual labels:  data-analysis
pandas-workshop
An introductory workshop on pandas with notebooks and exercises for following along.
Stars: ✭ 161 (-17.44%)
Mutual labels:  data-analysis
CC33Z
Curso de Ciência da Computação
Stars: ✭ 50 (-74.36%)
Mutual labels:  data-analysis
spectrochempy
SpectroChemPy is a framework for processing, analyzing and modeling spectroscopic data for chemistry with Python
Stars: ✭ 34 (-82.56%)
Mutual labels:  data-analysis
tempo
API for manipulating time series on top of Apache Spark: lagged time values, rolling statistics (mean, avg, sum, count, etc), AS OF joins, downsampling, and interpolation
Stars: ✭ 212 (+8.72%)
Mutual labels:  data-analysis
hacking-datascience
Notebooks and design assets related to my publication 'hacking-datascience' on Medium.
Stars: ✭ 41 (-78.97%)
Mutual labels:  data-analysis
nebula
A distributed block-based data storage and compute engine
Stars: ✭ 127 (-34.87%)
Mutual labels:  data-analysis
whyqd
data wrangling simplicity, complete audit transparency, and at speed
Stars: ✭ 16 (-91.79%)
Mutual labels:  data-analysis
copulae
Multivariate data modelling with Copulas in Python
Stars: ✭ 96 (-50.77%)
Mutual labels:  data-analysis
terrame
TerraME is a programming environment for spatial dynamical modelling
Stars: ✭ 33 (-83.08%)
Mutual labels:  geospatial-data
Datscan
DatScan is an initiative to build an open-source CMS that will have the capability to solve any problem using data Analysis just with the help of various modules and a vast standardized module library
Stars: ✭ 13 (-93.33%)
Mutual labels:  data-analysis
fdotoolbox
A tool for working with various sources of geospatial data
Stars: ✭ 20 (-89.74%)
Mutual labels:  geospatial-data
hnn
The Human Neocortical Neurosolver (HNN) is a software tool that gives researchers/clinicians the ability to develop/test hypotheses on circuit mechanisms underlying EEG/MEG data.
Stars: ✭ 62 (-68.21%)
Mutual labels:  data-analysis
Data-Science-101
Notes and tutorials on how to use python, pandas, seaborn, numpy, matplotlib, scipy for data science.
Stars: ✭ 19 (-90.26%)
Mutual labels:  data-analysis

English 中文版

TransBigData

Documentation Status Downloads Downloads Binder Tests codecov Codacy Badge

Introduction

TransBigData is a Python package developed for transportation spatio-temporal big data processing, analysis and visualization. TransBigData provides fast and concise methods for processing common transportation spatio-temporal big data such as Taxi GPS data, bicycle sharing data and bus GPS data. TransBigData provides a variety of processing methods for each stage of transportation spatio-temporal big data analysis. The code with TransBigData is clean, efficient, flexible, and easy to use, allowing complex data tasks to be achieved with concise code.

For some specific types of data, TransBigData also provides targeted tools for specific needs, such as extraction of Origin and Destination(OD) of taxi trips from taxi GPS data and identification of arrival and departure information from bus GPS data. The latest stable release of the software can be installed via pip and full documentation can be found at https://transbigdata.readthedocs.io/en/latest/. Introduction PPT can be found here and here(in Chinese)

Target Audience

The target audience of TransBigData includes:

  • Data science researchers and data engineers in the field of transportation big data, smart transportation systems, and urban computing, particularly those who want to integrate innovative algorithms into intelligent trasnportation systems
  • Government, enterprises, or other entities who expect efficient and reliable management decision support through transportation spatio-temporal data analysis.

Technical Features

  • Provide a variety of processing methods for each stage of transportation spatio-temporal big data analysis.
  • The code with TransBigData is clean, efficient, flexible, and easy to use, allowing complex data tasks to be achieved with concise code.

Main Functions

Currently, TransBigData mainly provides the following methods:

  • Data Quality: Provides methods to quickly obtain the general information of the dataset, including the data amount the time period and the sampling interval.
  • Data Preprocess: Provides methods to clean multiple types of data error.
  • Data Gridding: Provides methods to generate multiple types of geographic grids (Rectangular grids, Hexagonal grids) in the research area. Provides fast algorithms to map GPS data to the generated grids.
  • Data Aggregating: Provides methods to aggregate GPS data and OD data into geographic polygon.
  • Data Visualization: Built-in visualization capabilities leverage the visualization package keplergl to interactively visualize data on Jupyter notebook with simple code.
  • Trajectory Processing: Provides methods to process trajectory data, including generating trajectory linestring from GPS points, and trajectory densification, etc.
  • Basemap Loading: Provides methods to display Mapbox basemap on matplotlib figures

Installation

It is recommended to use Python 3.7, 3.8, 3.9

Using pypi PyPI version

TransBigData can be installed by using pip install. Before installing TransBigData, make sure that you have installed the available geopandas package. If you already have geopandas installed, run the following code directly from the command prompt to install TransBigData:

pip install transbigdata

Using conda-forge Conda Version Conda Downloads

You can also install TransBigData by conda-forge, this will automaticaly solve the dependency, it can be installed with:

conda install -c conda-forge transbigdata

Contributing to TransBigData GitHub contributors Join the chat at https://gitter.im/transbigdata/community GitHub commit activity

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.

Examples

Example of data visualization

Visualize trajectories (with keplergl)

gif

Visualize data distribution (with keplergl)

gif

Visualize OD (with keplergl)

gif

Example of taxi GPS data processing

The following example shows how to use the TransBigData to perform data gridding, data aggregating and data visualization for taxi GPS data.

Read the data

import transbigdata as tbd
import pandas as pd
#Read taxi gps data  
data = pd.read_csv('TaxiData-Sample.csv',header = None) 
data.columns = ['VehicleNum','time','lon','lat','OpenStatus','Speed'] 
data
VehicleNum time lon lat OpenStatus Speed
0 34745 20:27:43 113.806847 22.623249 1 27
1 34745 20:24:07 113.809898 22.627399 0 0
2 34745 20:24:27 113.809898 22.627399 0 0
3 34745 20:22:07 113.811348 22.628067 0 0
4 34745 20:10:06 113.819885 22.647800 0 54
... ... ... ... ... ... ...
544994 28265 21:35:13 114.321503 22.709499 0 18
544995 28265 09:08:02 114.322701 22.681700 0 0
544996 28265 09:14:31 114.336700 22.690100 0 0
544997 28265 21:19:12 114.352600 22.728399 0 0
544998 28265 19:08:06 114.137703 22.621700 0 0

544999 rows × 6 columns

Data pre-processing

Define the study area and use the tbd.clean_outofbounds method to delete the data out of the study area

#Define the study area
bounds = [113.75, 22.4, 114.62, 22.86]
#Delete the data out of the study area
data = tbd.clean_outofbounds(data,bounds = bounds,col = ['lon','lat'])

Data gridding

The most basic way to express the data distribution is in the form of geograpic grids. TransBigData provides methods to generate multiple types of geographic grids (Rectangular grids, Hexagonal grids) in the research area. For rectangular gridding, you need to determine the gridding parameters at first (which can be interpreted as defining a grid coordinate system):

#Obtain the gridding parameters
params = tbd.area_to_params(bounds,accuracy = 1000)
params

{'slon': 113.75, 'slat': 22.4, 'deltalon': 0.00974336289289822, 'deltalat': 0.008993210412845813, 'theta': 0, 'method': 'rect', 'gridsize': 1000}

The gridding parameters store the information of the initial position, the size and the angle of the gridding system.

The next step is to map the GPS data to their corresponding grids. Using the tbd.GPS_to_grid, it will generate the LONCOL column and the LATCOL column (Rectangular grids). The two columns together can specify a grid:

#Map the GPS data to grids
data['LONCOL'],data['LATCOL'] = tbd.GPS_to_grid(data['lon'],data['lat'],params)

Count the amount of data in each grids, generate the geometry of the grids and transform it into a GeoDataFrame:

#Aggregate data into grids
grid_agg = data.groupby(['LONCOL','LATCOL'])['VehicleNum'].count().reset_index()
#Generate grid geometry
grid_agg['geometry'] = tbd.grid_to_polygon([grid_agg['LONCOL'],grid_agg['LATCOL']],params)
#Change the type into GeoDataFrame
import geopandas as gpd
grid_agg = gpd.GeoDataFrame(grid_agg)
#Plot the grids
grid_agg.plot(column = 'VehicleNum',cmap = 'autumn_r')

png

Triangle and Hexagon grids & rotation angle

TransBigData also support the triangle and hexagon grids. It also supports given rotation angle for the grids. We can alter the gridding parameter:

#set to the hexagon grids
params['method'] = 'hexa'
#or set as triangle grids: params['method'] = 'tri'
#set a rotation angle (degree)
params['theta'] = 5

Then we can do the GPS data matching again:

#Triangle and Hexagon grids requires three columns to store ID
data['loncol_1'],data['loncol_2'],data['loncol_3'] = tbd.GPS_to_grid(data['lon'],data['lat'],params)
#Aggregate data into grids
grid_agg = data.groupby(['loncol_1','loncol_2','loncol_3'])['VehicleNum'].count().reset_index()
#Generate grid geometry
grid_agg['geometry'] = tbd.grid_to_polygon([grid_agg['loncol_1'],grid_agg['loncol_2'],grid_agg['loncol_3']],params)
#Change the type into GeoDataFrame
import geopandas as gpd
grid_agg = gpd.GeoDataFrame(grid_agg)
#Plot the grids
grid_agg.plot(column = 'VehicleNum',cmap = 'autumn_r')

1648714436503.png

Data Visualization(with basemap)

For a geographical data visualization figure, we still have to add the basemap, the colorbar, the compass and the scale. Use tbd.plot_map to load the basemap and tbd.plotscale to add compass and scale in matplotlib figure:

import matplotlib.pyplot as plt
fig =plt.figure(1,(8,8),dpi=300)
ax =plt.subplot(111)
plt.sca(ax)
#Load basemap
tbd.plot_map(plt,bounds,zoom = 11,style = 4)
#Define colorbar
cax = plt.axes([0.05, 0.33, 0.02, 0.3])
plt.title('Data count')
plt.sca(ax)
#Plot the data
grid_agg.plot(column = 'VehicleNum',cmap = 'autumn_r',ax = ax,cax = cax,legend = True)
#Add scale
tbd.plotscale(ax,bounds = bounds,textsize = 10,compasssize = 1,accuracy = 2000,rect = [0.06,0.03],zorder = 10)
plt.axis('off')
plt.xlim(bounds[0],bounds[2])
plt.ylim(bounds[1],bounds[3])
plt.show()

1648714582961.png

Griding framework offered by TransBigData

Here is an overview of the gridding framework offered by TransBigData.

1648715064154.png

See This Example for further details.

Citation information DOI status

Please cite this when using TransBigData in your research. Citation information can be found at CITATION.cff.

Introducing Video (In Chinese) bilibili

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].