[PYTHON] Fusionner les ensembles de données avec les pandas

Dernière version de pandas 0.14.0

La dernière version 0.14.0 de pandas a été publiée le 30/05. Pour mettre à niveau à partir de la version précédente 0.13.1, entrez la commande suivante.

pip install --upgrade pandas 

Fusion de jeux de données

Il a été [mentionné précédemment] que pandas est une bibliothèque d'analyse puissante et de haut niveau qui fournit un objet appelé un bloc de données. C'est juste (http://qiita.com/ynakayama/items/4362c439d9ea814cbe60), mais vous pouvez l'utiliser pour combiner plusieurs ensembles de données comme le SGBDR.

Essayez à partir d'un vrai jeu de données

La fonction read_json des pandas peut traiter JSON tel quel comme une trame de données. Ici, nous utiliserons l'API du projet open source House API Project. Ici, des informations telles que le nombre de connexions client Wifi et la température sont publiées sous forme de données ouvertes à l'aide de capteurs. Fusionnons cela.

import pandas as pd

#Obtenez les 100 dernières connexions Wifi au 1er étage
wifi = pd.read_json('http://house-api-project.org/api/shibuhouse/wifi/clients?limit=100house-api-project.org/api/shibuhouse/wifi/1f/clients?limit=100')

#Obtenez les dernières températures de 100 ° F
temp = pd.read_json('http://house-api-project.org/api/shibuhouse/1f/temperature?limit=100')

print( wifi.head(5) )
#=>
#                                       _id  clients                     time
#  0   {'$oid': '538c3799c3ca7c08531d645e'}       21  2014-06-02 08:36:36 UTC
#  1   {'$oid': '538c3760c3ca7c08531d6454'}       21  2014-06-02 08:35:37 UTC
#  2   {'$oid': '538c371fc3ca7c08531d6445'}       21  2014-06-02 08:34:36 UTC
#  3   {'$oid': '538c36e4c3ca7c08531d643b'}       21  2014-06-02 08:33:37 UTC
#  4   {'$oid': '538c36a7c3ca7c08531d642f'}       21  2014-06-02 08:32:36 UTC

print( temp.head(5) )
#=>
#                                       _id  temperature                     time
#  0   {'$oid': '538c37cac3ca7c08531d6465'}       34.000  2014-06-02 08:37:29 UTC
#  1   {'$oid': '538c378dc3ca7c08531d6459'}       34.000  2014-06-02 08:36:29 UTC
#  2   {'$oid': '538c3752c3ca7c08531d644d'}       34.000  2014-06-02 08:35:29 UTC
#  3   {'$oid': '538c3715c3ca7c08531d6442'}       34.000  2014-06-02 08:34:29 UTC
#  4   {'$oid': '538c36dbc3ca7c08531d6437'}       34.000  2014-06-02 08:33:30 UTC

#Fusionner deux ensembles de données par index
merged = pd.merge(wifi, temp, left_index=True, right_index=True)

Diverses options de fusion

Les arguments fréquemment utilisés sont indiqués dans le tableau ci-dessous.

argument La description
left Fusionner vers la gauche
right Fusionner vers la droite
how Comment s'inscrire(inner, outer, left, right)
on Lorsque vous souhaitez spécifier explicitement le nom de colonne à utiliser pour la fusion
left_on/right_on Alias utilisé comme clé de jointure
left_index/right_index Lorsque vous souhaitez fusionner par index

Concaténation de jeux de données

La fonction concat concatène les ensembles de données. C'est similaire à la fusion et à la confusion, mais il est préférable de lire la documentation pour plus de détails.

Merge, join, and concatenate http://pandas.pydata.org/pandas-docs/stable/merging.html

Dans l'exemple d'API JSON précédent, cela ressemble à ceci.

concat = pd.concat([wifi, temp], ignore_index=True, axis=1)

concat.head(10)
#=>
#                                        0   1                        2  \
#  0  {'$oid': '538c4081c3ca7c08531d6616'}  20  2014-06-02 09:14:37 UTC   
#  1  {'$oid': '538c4045c3ca7c08531d660a'}  20  2014-06-02 09:13:37 UTC   
#  2  {'$oid': '538c4005c3ca7c08531d65fb'}  20  2014-06-02 09:12:37 UTC   
#  3  {'$oid': '538c3fcac3ca7c08531d65ef'}  20  2014-06-02 09:11:37 UTC   
#  4  {'$oid': '538c3f8ec3ca7c08531d65e4'}  20  2014-06-02 09:10:36 UTC   
#  5  {'$oid': '538c3f51c3ca7c08531d65d8'}  20  2014-06-02 09:09:36 UTC   
#  6  {'$oid': '538c3f17c3ca7c08531d65cf'}  20  2014-06-02 09:08:36 UTC   
#  7  {'$oid': '538c3edbc3ca7c08531d65c2'}  20  2014-06-02 09:07:37 UTC   
#  8  {'$oid': '538c3ea1c3ca7c08531d65b9'}  20  2014-06-02 09:06:36 UTC   
#  9  {'$oid': '538c3e61c3ca7c08531d65a8'}  22  2014-06-02 09:05:37 UTC   

#                                        3       4                        5  
#  0  {'$oid': '538c4077c3ca7c08531d6611'}  34.125  2014-06-02 09:14:30 UTC  
#  1  {'$oid': '538c403ac3ca7c08531d6606'}  34.125  2014-06-02 09:13:30 UTC  
#  2  {'$oid': '538c3fffc3ca7c08531d65fa'}  34.125  2014-06-02 09:12:30 UTC  
#  3  {'$oid': '538c3fc4c3ca7c08531d65ee'}  34.125  2014-06-02 09:11:31 UTC  
#  4  {'$oid': '538c3f86c3ca7c08531d65e2'}  34.125  2014-06-02 09:10:29 UTC  
#  5  {'$oid': '538c3f49c3ca7c08531d65d7'}  34.125  2014-06-02 09:09:29 UTC  
#  6  {'$oid': '538c3f0ec3ca7c08531d65cb'}  34.125  2014-06-02 09:08:29 UTC  
#  7  {'$oid': '538c3ed1c3ca7c08531d65bf'}  34.125  2014-06-02 09:07:29 UTC  
#  8  {'$oid': '538c3e96c3ca7c08531d65b3'}  34.125  2014-06-02 09:06:29 UTC  
#  9  {'$oid': '538c3e5bc3ca7c08531d65a7'}  34.125  2014-06-02 09:05:30 UTC  

Diverses options de concaténation

Les arguments fréquemment utilisés sont indiqués dans le tableau ci-dessous.

argument La description
objs Spécifiez l'objet pandas à concaténer avec une liste, etc.
axis Ligne ou colonne
join interne ou externe, la valeur par défaut est externe
keys Valeurs associées aux ensembles de données concaténés
ignore_index Générer un nouvel index séparément de l'axe à connecter

Résumé

Nous avons constaté que les pandas facilitent la fusion et la concaténation d'ensembles de données externes. Par exemple, en traçant ici, vous pouvez voir les possibilités de diverses analyses telles que le dessin d'un diagramme de dispersion et l'examen de la corrélation.

Recommended Posts

Fusionner les ensembles de données avec les pandas
Traitement des ensembles de données avec des pandas (1)
Traitement des ensembles de données avec des pandas (2)
Essayez rapidement de visualiser votre ensemble de données avec des pandas
Visualisez rapidement avec les pandas
Échantillonnage bootstrap avec Pandas
Convertir 202003 en 2020-03 avec les pandas
Pandas apprenant avec la chimioinfomatique
Visualisation des données avec les pandas
Manipulation des données avec les Pandas!
Mélangez les données avec les pandas
Lire csv avec des pandas python
Charger json imbriqué avec des pandas
[Python] Changer de type avec les pandas
Standardisez par groupe avec les pandas
Empêchez les omissions avec l'impression de pandas
Conseils de traitement des données avec Pandas
Pandas
Traçage de données polyvalent avec pandas + matplotlib
[Python] Joindre deux tables avec des pandas
Créez dynamiquement de nouvelles trames de données avec des pandas
Extraire plusieurs colonnes spécifiques avec des pandas
1. Statistiques apprises avec Python 1-1. Statistiques de base (Pandas)
Analyse pratique avec Pandas + notebook Jupyter
Dessinez un graphique avec des pandas + XlsxWriter
Manipuler des chaînes avec un groupe pandas par
Bulk Insert Pandas DataFrame avec psycopg2
Je veux faire ○○ avec les Pandas
Créez une tranche d'âge avec les pandas
Fusionner les données au format JSON avec Ansible
Classification des ensembles de données SNLI avec Word2Vec + LSTM
[Python] Formater quand to_csv avec des pandas
Génération de fonctionnalités avec pandas group par
Gère divers formats de date avec des pandas
J'obtiens une erreur avec les pandas d'importation.
Chargez csv avec des colonnes en double dans pandas
Conseils pour tracer plusieurs lignes avec des pandas
Essayez de convertir en données ordonnées avec les pandas
Dessinez une étiquette d'axe hiérarchique avec matplotlib + pandas
Remplacez les noms / valeurs des colonnes par pandas dataframe
[Easy Python] Lecture de fichiers Excel avec des pandas
Chargez CSV avec des pandas et jouez avec Index
Gérez les structures de données 3D avec les pandas
Lisez CSV et analysez avec Pandas et Seaborn
Exemple de traitement efficace des données avec PANDAS
Meilleures pratiques pour manipuler les données avec les pandas
[Pandas 1.0.1 Memorial] Record de bataille féroce avec Cookbook