So bearbeiten Sie Daten in Pandas, was für die Datenanalyse in Python unverzichtbar ist Ich habe die Grundlagen zusammengefasst.
Aus wichtigen Grammatiken, die Sie einfach vergessen haben, haben wir einige Tipps beigefügt.
Empfohlen für solche Leute → Ich möchte Pandas zum ersten Mal berühren! → Versuchen Sie, R auch in Python zu verwenden. → Ich kann mich nicht an die Grammatik von Pandas erinnern - es wäre praktisch, wenn es irgendwo eine Liste gäbe ... → Wie viel Datenverarbeitung kann mit Python überhaupt durchgeführt werden?
Bitte passen Sie auch dazu ◆ Datenmanipulation mit Pandas: Verwenden Sie Pandas_ply http://qiita.com/hik0107/items/3dd260d9939a5e61c4f6
Importieren Sie zunächst Pandas und erstellen Sie Daten im entsprechenden Datenrahmenformat
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 #Erstellen Sie vorerst entsprechende Daten
df_sample.columns = ["day_no","class","score1","score2"] #Geben Sie einen Spaltennamen an
df_sample.index = [11,12,13,14,15,16] #Geben Sie einen Indexnamen an
◆Column / Index Access Greifen Sie auf bestimmte Spalten und Indexnummern zu
col_index_access.py
df_sample.columns #Spaltennamen abrufen
df_sample.index #Indexnamen abrufen
df_sample.columns = ["day_no","class","point1","point2"] #Spaltennamen überschreiben
df_sample.index = [11,12,13,14,15,16] #Indexnamen überschreiben
#Verwenden Sie die Umbenennungsmethode
df_sample.rename(columns={'score1': 'point1'}) #Ich werde die Korrespondenz in einen Wörterbuchtyp einfügen
Schauen Sie sich die Datenübersicht an
datacheck.py
#Überprüfen Sie die Anzahl der Zeilen
len(df_sample)
#Bestätigung der Anzahl der Dimensionen
df_sample.shape #Rückgabe in Form von (Anzahl der Zeilen, Anzahl der Spalten)
#Liste der Spalteninformationen
df_sample.info() #Liste der Spaltennamen und ihrer Typen
#Bestätigung der Basisstatistik für jede Spalte
#Zusammenfassung in R.()
df_sample.describe() #Mittelwert, Streuung, Quadrant usw.
# head / tail
df_sample.head(10) #Überprüfen Sie die ersten 10 Zeilen
df_sample.tail(10) #Überprüfen Sie die ersten 10 Zeilen
Wählen Sie nur bestimmte Spalten aus den Daten aus
datacheck.py
#Eingebaute Funktionen__get_item___Auswahl mit
df_sample["day_no"] #Schreiben Sie den Spaltennamen und geben Sie ihn an
df_sample[["day_no","score1"]]# Verwenden Sie die Listennotation, wenn Sie mehrere Spalten auswählen
#Spaltenauswahl mit loc
#Grammatik: iloc[rows, columns]Schreiben Sie in Form von
#Sie können nicht nur Spalten, sondern auch Zeilen gleichzeitig unterteilen
df_sample.loc[:,"day_no"] #Die Zeile lautet "Alle auswählen":"Wird gestellt.
df_sample.loc[:,["day_no","score1"]]# Verwenden Sie die Listennotation, wenn Sie mehrere Spalten auswählen
#Spaltenauswahl mit iloc
#Grammatik: iloc[Zeilennummer,Spaltennummer]Schreiben Sie in Form von
df_sample.iloc[:,0] #Wählen Sie nach Nummer
df_sample.iloc[:,0:2] #Bei mehreren Seriennummern. Sie können auch in Listennotation gehen
#Spaltenauswahl mit ix
#Es können sowohl Spaltennamen als auch Spaltennummern verwendet werden. Grundsätzlich fühlt es sich gut an, dies zu verwenden
df_sample.ix[:,"day_no"] #Bei Auswahl einer einzelnen Spalte ist das Ergebnis Pandas.Series Object
df_sample.ix[:,["day_no","score1"]] #Bei Auswahl mehrerer Spalten ist das Ergebnis Pandas.Werden Sie ein Datenrahmen
df_sample.ix[0:4,"score1"] #Zeilen können nach Nummer und Spalten nach Spaltenname ausgewählt werden
series_bool = [True,False,True,False]
df_sample.ix[:,series_bool] #Sie können auch ein Boolesches Array auswählen
#Auswahl durch teilweise Übereinstimmung des Spaltennamens
#Wählen Sie für R Dplyr(Contains()), Ein praktisches Schema für die teilweise Übereinstimmungsauswahl von Spaltennamen
#Pandas haben diese Funktion nicht, daher müssen Sie einige Schritte ausführen.
score_select = pd.Series(df_sample.columns).str.contains("score") # "score"Logische Beurteilung, ob in den Spaltennamen aufgenommen werden soll
df_sample.ix[:,np.array(score_select)] #Spaltenauswahl mit logischem Array
◆Subsetting Teilauswahl von Daten basierend auf bedingten Anweisungen
subsetting.py
##Python-Standardnotation
##Datenrahmen[Setzen Sie ein Array von Boolean]
df_sample[df_sample.day_no == "day1"] # day_Wählen Sie nur Daten aus, deren keine Spalte Tag1 ist
series_bool = [True,False,True,False,True,False]
df_sample[series_bool] #Natürlich können Sie andere als die Spalten des Datenrahmens selbst als Bedingungen verwenden
##Notation bei Verwendung der Pandas-Abfragemethode
df_sample.query("day_no == 'day1'")
#Bereinigen, da Sie den Datenrahmennamen nicht zweimal schreiben müssen
#Beachten Sie, dass der bedingte Ausdruck im Str-Format eingegeben werden muss
df_sample.query("day_no == 'day1'|day_no == 'day2'")
#Bei mehreren Bedingungen oder Bedingungen"|"Oder und von der Bedingung"&"Ich werde es dazwischen legen
select_condition = "day1"
df_sample.query("day_no == select_condition") # ☓ doesn't work
#Da der bedingte Ausdruck für die Extraktion die Str-Notation ist, reagiert er nicht, wenn Sie den Variablennamen direkt eingeben.
df_sample.query("day_no == @select_condition") # ◯ it works
#Wenn Sie eine Variable verwenden möchten, geben Sie sie in den Variablennamen ein@Wenn Sie hinzufügen, wird es als Variablenname erkannt
##Teilmenge mit Index
df_sample.query("index == 11 ") #Wenn Sie den Index normal schreiben, funktioniert er
df_sample.query("index in [11,12] ") #"In" kann auch für die Bedingung oder verwendet werden
◆Sorting Sortiert die Daten.
sorting.py
df_sample.sort("score1") #Nach Score1-Wert in aufsteigender Reihenfolge sortieren
df_sample.sort(["score1","score2"]) #Sortieren Sie in aufsteigender Reihenfolge nach Score1- und Score2-Werten
df_sample.sort("score1",ascending=False) #Sortieren Sie in absteigender Reihenfolge nach dem Wert von score1
◆pandas.concat Fügen Sie Datensätze und Spalten hinzu, indem Sie Daten kombinieren.
concat.py
#Zeile hinzufügen
#Erstellen Sie die Daten, die Sie hinzufügen möchten. Ziehen Sie in Betracht, Datenrahmen zu kombinieren.
#df_Angenommen, Sie möchten dem Sample einen Datensatz mit dem Index "17" hinzufügen.
df_addition_row =\
pd.DataFrame([["day1","A",100,180]]) #df_Erstellen Sie einen DF mit derselben Spaltenstruktur wie das Beispiel
df_addition_row.columns =["day_no","class","score1","score2"] #Geben Sie den gleichen Spaltennamen an
df_addition_row.index =[17] #Schütteln Sie den Index
pd.concat([df_sample,df_addition_row],axis=0) #Machen Sie einen Join=rbind
#Erstes Argument: DF zu kombinieren[]Angabe durch Notation.
#Zweites Argument: Achse=0 gibt an, dass es sich um eine vertikale Verknüpfung handelt.
#Spalte hinzufügen
#Erwägen Sie, zusätzlich zu Score1 und Score2 eine Score3-Spalte hinzuzufügen.
#Erstellen Sie die Daten, die Sie hinzufügen möchten. Ziehen Sie in Betracht, Datenrahmen zu kombinieren.
df_addition_col =\
pd.DataFrame([[120,160,100,180,110,80]]).T #df_Erstellen Sie einen DF mit der gleichen Anzahl von Zeilen wie das Beispiel
df_addition_col.columns =["score3"] #Spaltennamen werden wie nach dem Beitritt verwendet
df_addition_col.index = [11,12,13,14,15,16]
#Hinweis! !! Pandas.concat funktioniert nicht wie erwartet, es sei denn, die Indizes der Joins haben dieselbe Struktur! (Siehe unten)
pd.concat([df_sample,df_addition_col],axis=1) #axis=1 gibt eine horizontale Verknüpfung an.
#Über den Index
#Wenn sich der Index der neuen Daten von dem Ort unterscheidet, an dem sie zusammengefügt wurden, werden die Daten gestaffelt zusammengefügt.
#Bitte versuche folgendes
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] #Einige haben den gleichen Index wie die Originaldaten, andere nicht
pd.concat([df_sample,df_addition_col],axis=1) #Ergebnis ist....
◆Joining Kombiniert zwei Daten basierend auf einem bestimmten Schlüssel.
join.py
##Im Schöpfungsprozess
◆ Grundlegende Zusammenfassung der Datenoperationen mit Python Pandas - Zweite Hälfte: Datenaggregation http://qiita.com/hik0107/items/0ae69131e5317b62c3b7