Introduction de "scikit-mobility", une bibliothèque qui vous permet d'analyser facilement les données de flux humain avec Python (Partie 1)

Contenu de cet article

Présentation de la bibliothèque "** Scikit-Mobility **" pour gérer les données de flux humain en Python Cette fois, le contenu sera une introduction afin que les personnes qui sont «qu'est-ce que les données de flux humain en premier lieu?» Seront intéressées.

1.Tout d'abord 2. Qu'est-ce que les données sur les flux humains? 3. Que pouvez-vous faire avec Scikit-Mobility? 4. Hypothèses 5. Installation de la bibliothèque 5. Regardons les données d'historique des mouvements 6. Ensemble de données à utiliser cette fois 7. Lire les données 8. Visualisez l'historique des mouvements sur la carte 6. Résumé

logo_skmob.png

github[https://github.com/scikit-mobility/scikit-mobility]

1.Tout d'abord

Connaissez-vous une bibliothèque Python appelée "** Scikit-Mobility **"? Fait juste l'année dernière, que vous ne connaissez peut-être pas encore, ** Pour l'analyse des données sur les mouvements humains (ci-après dénommées données sur les flux humains) Une bibliothèque fonctionnelle **. Ces dernières années, une grande quantité d'informations de localisation a été accumulée dans les applications cartographiques et les SNS, et des algorithmes de traitement et d'analyse des données de flux humain, y compris l'évaluation des risques pour la vie privée, ont été mis en place.

Tout d'abord, je voudrais présenter brièvement "** Qu'est-ce que les données sur les flux humains? " et " Que peut faire scikit-mobility? **".

2. Qu'est-ce que les données sur les flux humains?

Scikit-Mobility gère principalement ** 2 types ** de données.

  1. ** Données d'historique de mouvement (trajectoires) ** Données de latitude et de longitude montrant la trajectoire du mouvement. Pour les éléments familiers, vous pouvez utiliser le GPS pour collecter et analyser les informations de localisation actuelles utilisées dans les applications cartographiques et SNS, ainsi que le comportement à long terme dans la recherche et la recherche. map_0_1.png

  2. ** Données de flux mobiles (flux) ** Ce sont les données du flux de mouvement des personnes entre les lieux. Ce sont des données montrant combien de personnes sont allées d'un endroit spécifique (point de départ / orientation) à un endroit spécifique (point d'arrivée / destination) comme une enquête OD.

map_0_2.png

3. Que pouvez-vous faire avec Scikit-Mobility?

Avec scikit-mobility, vous pouvez facilement effectuer l'analyse suivante sur les données de flux humain.

J'aimerais approfondir chaque contenu à l'avenir. Cependant, cette fois, je voudrais vous présenter un peu plus sur "** Qu'est-ce que les données de flux humain en premier lieu? **" juste avant cela.

4. Hypothèses

Environnement d'exécution

Installation

Tout d'abord, installons la bibliothèque.

$ pip install scikit-mobility

5. Traitement des données d'historique des mouvements

Ensemble de données utilisé cette fois

Utilisez les Exemples de données fournis sur github. (* Veuillez noter qu'il sera téléchargé automatiquement. Il s'agit d'un fichier texte d'environ 2 Mo)

Ceci est publié par Microsoft [GeoLife GPS Trajectories](https://www.microsoft.com/en-us/download/details.aspx?id=52367&from=https%3A%2F%2Fresearch.microsoft.com % 2Fen-us% 2Fdownloads% 2Fb16d359d-d164-469e-9fd4-daa38f2b2e13% 2F). Le projet Microsoft Research Asia Geolife collecte des données de journal GPS de 2007 à 2012 pour 182 utilisateurs à Pékin.

Les exemples de données contiennent des données pour deux d'entre eux.

Lire les données

Lisons les données téléchargées.

Création d'un TrajDataFrame

Les données d'historique de mouvement sont lues avec un type de données appelé «TrjDataFrame». Ceci est une extension du DataFrame des pandas.

#Lire les données
tdf = skmob.TrajDataFrame.from_file('geolife_sample.txt.gz'
                                    ,latitude='lat'
                                    ,longitude='lon'
                                    ,user_id='user'
                                    ,datetime='datetime'
                                    )
#Vérifiez le contenu
print(tdf.head())

Le contenu est comme ça.


   uid        lat         lng            datetime
0    1  39.984094  116.319236 2008-10-23 13:53:05
1    1  39.984198  116.319322 2008-10-23 13:53:06
2    1  39.984224  116.319402 2008-10-23 13:53:11
3    1  39.984211  116.319389 2008-10-23 13:53:16

Arguments requis

Pour créer TrajDataFrame, vous devez spécifier les noms de colonne correspondant aux trois arguments.

Ce sont les informations de base de l'historique du mouvement, telles que "quand et où vous étiez".

option

Vous pouvez également éventuellement spécifier les arguments suivants

Bien entendu, toute colonne autre que celle-ci peut être lue sans aucun problème.

Créé à partir d'un bloc de données

Il est également possible de convertir une trame de données en TrajDataFrame.

import pandas as pd
import skmob
#Préparation d'échantillons de données
data_list = [[1, 39.984094, 116.319236, '2008-10-23 13:53:05'], 
            [1, 39.984198, 116.319322, '2008-10-23 13:53:06'],
            [1, 39.984224, 116.319402, '2008-10-23 13:53:11'],
            [1, 39.984211, 116.319389, '2008-10-23 13:53:16']]
#Créer un bloc de données
data_df= pd.DataFrame(data_list, columns=['user', 'lat', 'lon', 'datetime'])
print('Avant la conversion: ', type(data_df)) 
#Convertir en TrjDataFrame
tdf = skmob.TrajDataFrame(data_df, latitude='lat', longitude='lon', datetime='datetime', user_id='user')
print('Après la conversion: ', type(tdf))
print(tdf.head())
Avant la conversion:  <class 'pandas.core.frame.DataFrame'>
Après la conversion:  <class 'skmob.core.trajectorydataframe.TrajDataFrame'>

   uid        lat         lng            datetime
0    1  39.984094  116.319236 2008-10-23 13:53:05
1    1  39.984198  116.319322 2008-10-23 13:53:06
2    1  39.984224  116.319402 2008-10-23 13:53:11
3    1  39.984211  116.319389 2008-10-23 13:53:16

Essayez de visualiser l'historique des mouvements sur la carte

Vous ne pouvez pas dire où se trouvent les données de latitude et de longitude en regardant uniquement les chiffres. Il est important de vérifier sur la carte. TrajDataFrame peut être facilement visualisé comme suit.

Tracez l'historique des mouvements sur la carte

tdf.plot_trajectory(zoom=12, weight=3, opacity=0.9, tiles='Stamen Toner')

Il code automatiquement chaque uid par couleur et l'affiche. Si vous regardez sur la carte, vous pouvez voir où vous avez déménagé, combien vous avez d'activité et où vous allez. map_1.png

Zoom arrière sur la carte

Vous pouvez voir jusqu'où l'utilisateur s'est déplacé en effectuant un zoom arrière jusqu'à ce que vous puissiez voir toute la plage d'activité. Un utilisateur est allé assez loin. map_3.png

Affichage contextuel des points de départ et d'arrivée

De plus, des marqueurs sont affichés pour le premier journal (vert) et le dernier journal (rouge) de chaque utilisateur. Cliquez pour afficher l'heure et la latitude / longitude map_2.png

En le visualisant sur la carte de cette manière, il devient plus facile de comprendre le mouvement de l'utilisateur.

6. Résumé

Qu'as-tu pensé. Cette fois, j'ai brièvement présenté Scikit-Mobility et le type de données qu'il gère. Vous ne pouvez pas voir les données d'historique des mouvements pour la première fois car vous ne les voyez généralement pas. J'espère que vous profiterez de cette occasion pour vous intéresser à l'analyse des données sur les flux humains. Si vous utilisez google map, il peut être intéressant de télécharger et d'analyser vos informations de localisation. (Télécharger l'historique Google Map (chronologie)) Dans les articles suivants et suivants, je voudrais présenter des données de flux et des fonctions et algorithmes spécifiques. C'est tout pour cette fois! Merci pour la lecture!

Recommended Posts

Introduction de "scikit-mobility", une bibliothèque qui vous permet d'analyser facilement les données de flux humain avec Python (Partie 1)
Notez que l'environnement Python de Pineapple peut être modifié avec pyenv
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
Je veux pouvoir analyser des données avec Python (partie 3)
Je veux pouvoir analyser des données avec Python (partie 1)
Je veux pouvoir analyser des données avec Python (partie 4)
Je veux pouvoir analyser des données avec Python (partie 2)
Feuille de route d'apprentissage qui vous permet de développer et de publier des services à partir de zéro avec Python
Script Python qui peut vérifier l'état du serveur à partir du navigateur
J'ai créé une bibliothèque qui lit facilement les fichiers de configuration avec Python
Création d'un service qui vous permet de rechercher des données J-League
Nous avons publié une extension qui vous permet de définir des données xarray comme une classe de données Python.
[Introduction au Data Scientist] Bases de Python ♬
[Introduction à Python] Comment trier efficacement le contenu d'une liste avec le tri par liste
Lecture de code de faker, une bibliothèque qui génère des données de test en Python
Créez un plugin qui vous permet de rechercher les onglets Sublime Text 3 en Python
Vous pouvez facilement créer une interface graphique même avec Python
Version gratuite de DataRobot! ?? Introduction à «PyCaret», une bibliothèque qui automatise l'apprentissage automatique
Obtenez une grande quantité de données Twitter de Starba avec python et essayez l'analyse de données Partie 1
PhytoMine-Comment acquérir efficacement les données de séquence de gènes d'une espèce végétale spécifique avec Python
[Python] Introduction au scraping WEB | Résumé des méthodes pouvant être utilisées avec webdriver
Mémo connecté à HiveServer2 d'EMR avec python
Résumé des outils nécessaires pour analyser les données en Python
[Chapitre 5] Introduction à Python avec 100 coups de traitement du langage
Note de lecture: Introduction à l'analyse de données avec Python
[Chapitre 3] Introduction à Python avec 100 coups de traitement du langage
Un serveur qui fait écho aux données POSTées avec flask / python
[Chapitre 2] Introduction à Python avec 100 coups de traitement du langage
[Python] Une bibliothèque pratique qui convertit les kanji en hiragana
[Introduction à Python] Utilisation basique de la bibliothèque matplotlib
[Chapitre 4] Introduction à Python avec 100 coups de traitement du langage
Créez facilement un TweetBot qui vous informe de la température et de l'humidité avec Raspberry Pi + DHT11.
[Python] Extrait les blocs de données de Pandas qui ne correspondent pas à une colonne spécifique avec d'autres blocs de données
[Introduction à cx_Oracle] (Partie 6) Mappage des types de données DB et Python
Un mémo qui lit les données de dashDB avec Python et Spark
Publication d'une bibliothèque qui masque les données de caractères dans les images Python
Comment mélanger une partie de la liste Python (au hasard.shuffle)
Une collection de techniques professionnelles compétitives à résoudre avec Python
20200329_Introduction à l'analyse de données avec Python 2nd Edition Personal Summary
Introduction à Python que même les singes peuvent comprendre (partie 3)
[Introduction to Data Scientists] Bases de Python ♬ Fonctions et classes
[Raspi4; Introduction au son] Enregistrement stable de l'entrée sonore avec python ♪
Introduction à Python que même les singes peuvent comprendre (partie 1)
Introduction à Python que même les singes peuvent comprendre (partie 2)
Un script python qui convertit les données Oracle Database en csv
[Introduction à Python] Comment obtenir des données avec la fonction listdir
[Python] À propos de la création d'un outil pour créer un nouveau courrier Outlook basé sur les données du fichier JSON et de la partie qui a été interceptée
Résolution de l'introduction d'AOJ aux algorithmes et aux structures de données en Python -Partie1-
Si vous souhaitez devenir data scientist, commencez par Kaggle
Système de notation IPynb réalisé avec TA d'introduction à la programmation (Python)
Notez ce que vous avez fait pour utiliser Flycheck avec Python
Je souhaite utiliser un caractère générique que je souhaite décortiquer avec Python remove
[Introduction à Python] Comment fractionner une chaîne de caractères avec la fonction split
Utilisez networkx, une bibliothèque qui gère les graphiques en python (Partie 2: Tutoriel)
Création d'une bibliothèque pour python capable de gérer facilement la division morphologique
Introduction à l'analyse de données avec Python P32-P43 [ch02 3.US Baby Names 1880-2010]
J'ai essayé de créer une liste de nombres premiers avec python
Introduction à l'analyse de données par Python P17-P26 [ch02 1.usa.gov données de bit.ly]
Essayez d'analyser le mahjong familial en ligne à l'aide de Python (PARTIE 1: Prendre des données)