Cette séance sera consacrée au chargement des données de Google TakeOut et à une première visualisation.
Nous nous sommes en particulier inspiré du repository GitHub suivant
Pour l'affichage des données sur une carte; nous ne visons pas une correspondance parfaite entre les points relevés et le fond de carte. Il s'agit plutôt de travailler sur une représentation qui nous permette de comprendre à quoi correspondent les différents points.
Les données Google TakeOut sont des fichiers JSON extremement long. Pour les exploiter, nous allons utiliser les objets panda.dataFrame .
Pour commencer, nous allons travailler sur les données de géolocalisation s'étalant sur une année d'une personne de notre groupe.
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
# Loading data
file = "data/anonymous_2015.json"
raw = pd.io.json.read_json(file)
# Expand the locations column into a dataframe
# This lets us move down one level in the json structure
df = raw['locations'].apply(pd.Series)
df.head()
# Create a list from the latitude and the longitude column, multiplied by -E7
df['latitude'] = df['latitudeE7'] * 0.0000001
df['longitude'] = df['longitudeE7'] * 0.0000001
On affiche dans un premier temps les données sur la France entière, pour cela il faut précsier les latitudes extrèmes du plan sur lequel on souhaite se placer.
map = Basemap(projection='merc', lat_0=0, lon_0=0,
resolution = 'l', area_thresh = 1000.0,
llcrnrlon=-5, llcrnrlat=42,
urcrnrlon=9, urcrnrlat=51)
x,y = map(df['longitude'].values, df['latitude'].values)
plt.figure(figsize=(20, 10))
map.drawcountries()
map.drawcoastlines()
map.plot(x, y, 'ro', markersize=3)
plt.show()
lyon_map = Basemap(projection='merc', lat_0=45.759032, lon_0=4.833987,
resolution = 'h', area_thresh = 1000.0,
llcrnrlon=3.731840, llcrnrlat=44.847501,
urcrnrlon=6.373109, urcrnrlat=47.128597)
x,y = lyon_map(df['longitude'].values, df['latitude'].values)
plt.figure(figsize=(20,10))
lyon_map.plot(x, y, 'ro', markersize=3)
plt.show()
Cette séance, nous sommes parvenus à nos objectifs. Toutefois nous notons que le fond de carte que nous utilisons n'est pas très adapté. Il ne représente que les frontières des pays; il n'est donc d'aucune aide pour représenter les trajets au sein d'une ville.
Lors de la prochaine séance, nous travaillerons sur :