Comment manipuler les données dans Pandas, ce qui est indispensable pour gérer l'analyse des données en Python J'ai résumé les bases.
À partir de grammaires importantes que vous oubliez, nous avons inclus quelques conseils.
Recommandé pour les personnes comme celle-ci → Je veux toucher Pandas pour la première fois! → Essayez également d'utiliser R en Python. → Je ne me souviens plus de la grammaire de Pandas - ce serait pratique s'il y avait une liste quelque part ... → Combien de traitement de données peut-on faire avec Python en premier lieu?
Veuillez également inclure ceci ◆ Manipulation des données avec Pandas: utilisez Pandas_ply http://qiita.com/hik0107/items/3dd260d9939a5e61c4f6
Tout d'abord, importez des pandas et créez des données au format de trame de données de manière appropriée
data_creation.py
import pandas as pd
df_sample =\
pd.DataFrame([["day1","day2","day1","day2","day1","day2"],
["A","B","A","B","C","C"],
[100,150,200,150,100,50],
[120,160,100,180,110,80]] ).T #Créez des données appropriées pour le moment
df_sample.columns = ["day_no","class","score1","score2"] #Donnez un nom de colonne
df_sample.index = [11,12,13,14,15,16] #Donnez un nom d'index
◆Column / Index Access Accéder à des colonnes et des numéros d'index spécifiques
col_index_access.py
df_sample.columns #Obtenir le nom de la colonne
df_sample.index #Obtenir le nom de l'index
df_sample.columns = ["day_no","class","point1","point2"] #Remplacer le nom de la colonne
df_sample.index = [11,12,13,14,15,16] #Remplacer le nom de l'index
#Utilisez la méthode Rename
df_sample.rename(columns={'score1': 'point1'}) #Je mettrai la correspondance dans un type dictionnaire
Jetez un œil à l'aperçu des données
datacheck.py
#Vérifiez le nombre de lignes
len(df_sample)
#Confirmation du nombre de dimensions
df_sample.shape #Retourne sous la forme de (nombre de lignes, nombre de colonnes)
#Liste des informations de colonne
df_sample.info() #Liste des noms de colonnes et de leurs types
#Confirmation des statistiques de base pour chaque colonne
#Résumé en R()
df_sample.describe() #Moyenne, dispersion, quadrant, etc.
# head / tail
df_sample.head(10) #Vérifiez les 10 premières lignes
df_sample.tail(10) #Vérifiez les 10 premières lignes
Sélectionnez uniquement des colonnes spécifiques dans les données
datacheck.py
#Fonctions intégrées__get_item___Sélection utilisant
df_sample["day_no"] #Écrivez et spécifiez le nom de la colonne
df_sample[["day_no","score1"]]# Utilisez la notation de liste lors de la sélection de plusieurs colonnes
#Sélection de colonne à l'aide de loc
#Grammaire: iloc[rows, columns]Écrivez sous la forme de
#Vous pouvez sous-ensemble non seulement des colonnes mais également des lignes en même temps
df_sample.loc[:,"day_no"] #La ligne est "pour tout sélectionner":"Est mis.
df_sample.loc[:,["day_no","score1"]]# Utilisez la notation de liste lors de la sélection de plusieurs colonnes
#Sélection de colonnes à l'aide d'iloc
#Grammaire: iloc[numéro de lignes,numéro de colonnes]Écrivez sous la forme de
df_sample.iloc[:,0] #Sélectionnez par numéro
df_sample.iloc[:,0:2] #En cas de numéros de série multiples. Vous pouvez également aller en notation de liste
#Sélection de colonne à l'aide de ix
#Les noms de colonne et les numéros de colonne peuvent être utilisés. En gros, ça fait du bien d'utiliser ça
df_sample.ix[:,"day_no"] #Dans le cas de la sélection d'une seule colonne, le résultat est Pandas.Series Object
df_sample.ix[:,["day_no","score1"]] #En cas de sélection multi-colonnes, le résultat est Pandas.Devenez un Dataframe
df_sample.ix[0:4,"score1"] #Les lignes peuvent être sélectionnées par numéro et les colonnes peuvent être sélectionnées par nom de colonne
series_bool = [True,False,True,False]
df_sample.ix[:,series_bool] #Vous pouvez également sélectionner un tableau booléen
#Sélection par correspondance partielle du nom de la colonne
#Sélectionnez pour R Dplyr(Contains()), Un schéma pratique pour la sélection de correspondance partielle des noms de colonne
#Pandas n'a pas cette fonctionnalité, vous devrez donc prendre quelques mesures.
score_select = pd.Series(df_sample.columns).str.contains("score") # "score"Jugement logique de l'inclusion ou non dans le nom de la colonne
df_sample.ix[:,np.array(score_select)] #Sélection de colonne à l'aide d'un tableau logique
◆Subsetting Sélection partielle de données basée sur des déclarations conditionnelles
subsetting.py
##Notation par défaut de Python
##Trame de données[Mettre un tableau de booléen]
df_sample[df_sample.day_no == "day1"] # day_Sélectionnez uniquement les données dont aucune colonne n'est day1
series_bool = [True,False,True,False,True,False]
df_sample[series_bool] #Bien sûr, vous pouvez utiliser d'autres que les colonnes du bloc de données lui-même comme conditions
##Notation lors de l'utilisation de la méthode de requête Pandas
df_sample.query("day_no == 'day1'")
#Nettoyer car vous n'avez pas besoin d'écrire deux fois le nom du bloc de données
#Notez que l'expression conditionnelle doit être saisie au format Str
df_sample.query("day_no == 'day1'|day_no == 'day2'")
#En cas de conditions ou conditions multiples"|"Ou et de la condition"&"Je vais le mettre entre
select_condition = "day1"
df_sample.query("day_no == select_condition") # ☓ doesn't work
#Étant donné que l'expression conditionnelle pour l'extraction est la notation str, elle ne répond pas si vous entrez directement le nom de la variable.
df_sample.query("day_no == @select_condition") # ◯ it works
#Si vous souhaitez utiliser une variable, mettez-la dans le nom de la variable@Si vous ajoutez, il sera reconnu comme un nom de variable
##Sous-ensemble à l'aide de l'index
df_sample.query("index == 11 ") #Si vous écrivez l'index normalement, cela fonctionnera
df_sample.query("index in [11,12] ") #"In" peut également être utilisé pour la condition or
◆Sorting Trie les données.
sorting.py
df_sample.sort("score1") #Trier par valeur Score1 dans l'ordre croissant
df_sample.sort(["score1","score2"]) #Trier par ordre croissant par valeurs Score1 et Score2
df_sample.sort("score1",ascending=False) #Trier par ordre décroissant selon la valeur de score1
◆pandas.concat Ajoutez des enregistrements et des colonnes en combinant des données.
concat.py
#Ajouter une ligne
#Créez les données que vous souhaitez ajouter. Pensez à combiner des trames de données.
#df_Supposons que vous souhaitiez ajouter un enregistrement avec l'index "17" à l'échantillon.
df_addition_row =\
pd.DataFrame([["day1","A",100,180]]) #df_Créer un DF avec la même structure de colonne que l'exemple
df_addition_row.columns =["day_no","class","score1","score2"] #Donnez le même nom de colonne
df_addition_row.index =[17] #Secouez l'index
pd.concat([df_sample,df_addition_row],axis=0) #Faire une jointure=rbind
#Premier argument: DF à combiner[]Spécifiez par notation.
#Deuxième argument: Axe=0 indique qu'il s'agit d'une jointure verticale.
#Ajouter une colonne
#Pensez à ajouter une colonne Score3 en plus de Score1 et Score2.
#Créez les données que vous souhaitez ajouter. Pensez à combiner des trames de données.
df_addition_col =\
pd.DataFrame([[120,160,100,180,110,80]]).T #df_Créer un DF avec le même nombre de lignes que l'échantillon
df_addition_col.columns =["score3"] #Les noms de colonne sont utilisés tels quels après la jointure
df_addition_col.index = [11,12,13,14,15,16]
#Mise en garde! !! pandas.concat ne fonctionnera pas comme prévu à moins que les index des jointures aient la même structure! (Voir ci-dessous)
pd.concat([df_sample,df_addition_col],axis=1) #axis=1 spécifie une jointure horizontale.
#À propos de l'index
#Si l'index des nouvelles données est différent de la destination, les données seront jointes de manière échelonnée.
#S'il vous plaît essayez ce qui suit
df_addition_col =\
pd.DataFrame([[120,160,100,180,110,80]]).T
df_addition_col.columns =["score3"]
df_addition_col.index = [11,12,13,21,22,23] #Certains ont le même index que les données d'origine, mais d'autres pas
pd.concat([df_sample,df_addition_col],axis=1) #Le résultat est....
◆Joining Combine deux données basées sur une certaine clé.
join.py
##En cours de création
◆ Résumé de base des opérations de données avec Python Pandas - Deuxième moitié: agrégation de données http://qiita.com/hik0107/items/0ae69131e5317b62c3b7