Grundlegende Bedienung von Python Pandas Series und Dataframe (1)

Bei der Analyse von Daten mit Python wird häufig (wahrscheinlich) ein Modul namens pandas verwendet.

In Pandas können Daten in den Typen Series und Dataframe gespeichert werden. Serien werden zum Speichern eindimensionaler Daten und Dataframe zum Speichern zweidimensionaler Daten verwendet. Sie sind wie eindimensionale Hochleistungsarrays bzw. zweidimensionale Arrays. Hochleistung bedeutet, dass jede Zeile und Spalte benannt werden kann und viele Methoden verfügbar sind.

# Hachiman Yukino Yui
Mathematik 8 90 10
Landessprache 88 100 50
Englisch 38 95 35

Wenn Sie dies in einem zweidimensionalen Array ausdrücken, ist es schwierig, mit Zeichen wie "Hachiman", "Yukino", "Yui", "Mathematik", "Kokugo" und "Englisch" umzugehen. In Dataframe kann dies durch Spalten und Index dargestellt werden.

Dieser Typ hat jedoch verschiedene problematische Spezifikationen, und ich bin von Anfang an gestolpert. Dies ist eine super rudimentäre Pandas-Bedienungsanleitung, die ich mir als Pandas-Superanfänger gemacht habe. Die Version von Python ist 3.5.2 (ich verwende Anacondan 4.2.0 anstelle von Standard-Python) Die Version von Pandas ist 0.18.1 Der Code stellt sich eine Situation vor, die unter iPython 5.1.0 ausgeführt wird.

Vorbereitung vor der Verwendung von Pandas

Installieren Sie Pandas

Ich habe alles in Anaconda abgelegt. (Anaconda ist wie Python + eine beliebte Bibliothek, einschließlich Numpy und iPython) Außerdem können Sie es in pip oder so etwas setzen.

Pandas importieren

Da Pandas ein Modul ist, muss es importiert werden. In[1]: import pandas Unabhängig davon, wo Sie sich die Referenzseiten ansehen, scheinen Pandas unter dem Namen pd geladen zu sein, daher werde ich dies auch hier verfolgen. In[2]: import pandas as pd

Serienbetrieb

Machen Sie eine Serie

# Hachiman
Mathematik 8
Landessprache 88
Englisch 38

Angenommen, Sie erhalten ein solches eindimensionales Array. Das erste, was Ihnen dabei einfällt, ist das Erstellen einer Liste.

HachimanList = [8, 88, 38]



 Es ist einfach, auf die Elemente davon zuzugreifen.
 Wenn Sie eine Landessprache wünschen,
 `In [4]: Hachiman [1]`
 Es wird "Out [4]: 88" zurückgegeben.

 Das Problem dabei ist, dass Informationen wie "mathematische" Ergebnisse fehlen.
 Natürlich können Sie ein Wörterbuch, ein Objekt oder einen benannten Taple erstellen, aber keines davon ist für die Verarbeitung großer Datenmengen geeignet.

 Die Lösung hierfür ist die Pandas-Serie.

In[5]: HachimanSeries = pd.Series(HachimanList, index = ["math", "japanese", "english"])


 auf diese Weise,

Variable= pd.Series(Array von Daten, index =)


 
 

In[6]: HachimanSeries Out[6]: math 8 japanese 88 english 38 dtype: int64`


 
 

 

In[7]: YukinoSeries = pd.Series([90, 100, 95]) In[8]: YukinoSeries Out[8]: 0 90 1 100 2 95 dtype: int64

 Kann mit angegeben werden. Wenn Sie versuchen, dies auszugeben, können Sie sehen, dass jedem Element ein Name und eine Ausgabe zugewiesen wird. Beachten Sie, dass `dtype` der Datentyp des gesamten Arrays ist. (In Numpy werden Ganzzahltypen mehreren verschiedenen Ganzzahltypen zugewiesen. Int64 ist einer davon.) Was ist, wenn Sie keinen Index angeben? Wird ein Fehler zurückgegeben? Anscheinend hat `index` einen Standardwert, der von 0 ansteigt.
 Beachten Sie, dass "Index" später hinzugefügt werden kann.

In[9]: YukinoSeries.index = ["math", "japanese", "english"] In[10]: YukinoSeries Out[10]: math 90 japanese 100 english 95 dtype: int64


 Es gibt auch eine Methode, die ein Wörterbuch verwendet.

In[11]: YuiSeries = pd.Series({"math":10, "japanese":50, "english":35}) In[12]: YuiSeries Out[12]: english 35 japanese 50 math 10 dtype: int64

 In diesem Fall ist es unvermeidlich, dass die Bestellung nicht in Ordnung ist.

## Extrahieren Sie den Wert von Series
 Das Abrufen der Werte in der Serie entspricht fast einem normalen Array.
#### Elementspezifikation
 Das n-te Element des Arrays wird von `array [n-1]` abgerufen.
 Ebenso ist das n-te Element der Reihe

In[13]: HachimanSeries[2] Out[14]: 38

 Es ist auch möglich, dies an eine Variable zu übergeben und zu berechnen.

In[15]: HachimanMath = HachimanSeries[0] In[16]: 40 <= HachimanMath Out[16]: False


 Der Typ von HachimanMath ist jedoch "numpy.int64" anstelle des üblichen "int".


In[17]: type(HachimanMath) Out[17]: numpy.int64


 Sie können auch das Array [-1] verwenden.
 Es ist einfach, mehrere Variablen abzurufen.

In[18]: HachimanSeries[0:2] Out[18]: [8, 38]


 Leser, die den Beispielcode in ihrer eigenen Umgebung ausgeführt haben, ohne meine Ergebnisse zu verschlucken, sollten bemerkt haben, dass ich endlich aufgetaucht bin und hier eine Lüge geschrieben habe.

 Dieser Code "HachimanSeries [0: 2]" gibt das Ausführungsergebnis des Serientyps zurück, da es wie "pandas.core.series.Series" aussieht.

In[18]: HachimanSeries[0:2] Out[18]: math 8 japanese 88 dtype: int64

In[19]: type(HachimanSeries[0:2]) Out[19]: pandas.core.series.Series


 Zusammenfassung

 - Wenn Sie nur das Element angeben, erhalten Sie ein Ausführungsergebnis wie den Typ "int" mit dem Namen "numpy.int64".
 - Wenn Sie ein Element in einem Bereich angeben, erhalten Sie den Typ "Series" mit dem Namen "pandas.core.series.Series".

 Einige Leute mögen es etwas unangenehm finden, aber wenn Sie sorgfältig darüber nachdenken

- `int`->`numpy.int64`
- `list` ->`pandas.core.series.Series`

 Es ist dasselbe wie eine normale Array-Operation, nur weil es eine Korrespondenz gibt.
 Natürlich kann ein "Series" -Typ mit einem einzelnen Element auf dieselbe Weise abgerufen werden, wie ein einzelnes Array aus einem Array abgerufen wird.

In[20]: HachimanSeries[1:1+1] Out[20]: japanese 88 dtype: int64

In[21]: type(HachimanSeries[1:1+1]) Out[21]: pandas.core.series.Series


 Um ein Element anzugeben, können Sie es auch wie einen Wörterbuchtyp über den Indexnamen angeben.

In[22]: HachimanSeries["math"] Out[22]: 8


 Übrigens, wenn Sie `array [:: -1]` verwenden, wird das umgekehrte Ergebnis zurückgegeben.

 Überraschenderweise kann dies sogar mit dem Namen "index" erreicht werden.

In[23]: HachimanSeries["math":"english"] Out[23]: math 8 japanese 88 english 38 dtype: int64


 Dies ist mit Sammlungen nicht möglich. OrderedDict sowie gewöhnliche Wörterbücher zeigen die hohe Leistung von Series-tan.

 Wenn Sie auf den Namen "index" zugreifen möchten, behandeln Sie "Series.index" wie ein Array.


In[24]:HachimanSeries.index Out[24]:Index(['math', 'japanese', 'english'], dtype='object')

In[25]: HachimanSeries.index[1] Out[25]: 'japanese'

In[26]: HachimanSeries.index.[1:2] Out[26]: Index(['japanese'], dtype='object')



 Bisher haben wir erklärt, dass Series Elemente wie ein normales Array oder Wörterbuch abrufen kann.
#### Holen Sie sich die gewünschte Serie
 Was ist, wenn Sie Daten in "Serie" erfassen möchten?
 Mit anderen Worten, Sie möchten nur "Mathe" und "Japanisch" oder Sie möchten nur "Mathe" und "Englisch".
 Oder du willst "Mathe" an zwei Stellen.
 (Hast du jetzt so ein Bedürfnis ...)

 Für "Mathe" und "Japanisch" wird "HachimanSeries [0: 2]" den Trick machen. Wenn es jedoch um "Mathe" und "Englisch" geht, ist es ziemlich nervig.
 Ich habe es mir dort ausgedacht.

In[27]: HachimanSeries["math"]+HachimanSeries["english"]

 Wie wäre es damit! !!

Out[27]: 46


 Die Realität ist rücksichtslos, aber diese Ausgabe nickt. Erstens ist das Ergebnis von "HachimanSeries [" math "]" "numpy.int64".

 Wenn ja,

In[28]: HachimanSeries[0:0 + 1] + HachimanSeries[2:2 + 1]


 Versuchen.

Out[28]: english NaN math NaN dtype: float64


 Wie Sie sehen können, hat es Industrieabfälle ausgespuckt.
 Dies liegt wahrscheinlich daran, dass der Zusatz in "Serie" "die gleichen Indizes hinzufügt".
 Und für die Elemente, die nicht üblich sind, füllen Sie vorerst "NaN" aus.
 Eigentlich

In[29]: HachimanSeries[0:0 + 2] + YukinoSeries[1:1 + 2] Out[29]: english NaN japanese 188.0 math NaN dtype: float64

 Wird sein.

 Wie bevorzugen Sie also nur "Mathe" und "Englisch" in derselben Serie?
 Die Antwort ist, ein doppeltes "[]" zu schreiben.

In[30]: HachimanSeries[[0, 2]] Out[30]: math 8 english 38 dtype: int64


 Vielleicht hat dieses `[[]]` nichts mit der Notation des quadratischen Arrays zu tun. Es scheint, dass ich nur die Notation "[[]]" verwenden wollte.
 (`HachimanSeries [(0,2)]` besteht nicht, also musste es nicht so etwas wie ein Iterator sein, aber `HachimanSeries [list ((0,2))]` besteht also Es wird in Bezug auf die Verarbeitung als dasselbe wie ein Array angesehen.)

 Wenn Sie nur Ihre Mathe-Punktzahl betonen möchten

In[31]: HachimanSeries[["math","math","math","math","math"]] Out[31]: math 8 math 8 math 8 math 8 math 8 dtype: int64


 Du kannst es schaffen. (Hier wird der Name des Index direkt angegeben.)
 Gleiches gilt für `index`.

In [32]: HachimanSeries.index[[1,2]] Out[32]: Index(['japanese', 'english'], dtype='object')


 Bisher haben Sie gelernt, wie Sie mit [[]] eine neue Serie erstellen, die nur den gewünschten Index extrahiert.
### Umschreiben von Elementen der Serie
 Möglicherweise stellen Sie später fest, dass der Inhalt der "Serie" und des "Index" falsch war.
 Es gibt eine Möglichkeit, die modifizierte Version `Series` mit demselben Namen zu überschreiben, aber tatsächlich kann sie so einfach wie ein Array geändert werden.

 Zunächst der Code, um nur einen neu zu schreiben.

In[33]:HachimanSeries[1] Out[33]: 88

In[34]: HachimanSeries[1] = 98

In[35]: HachimanSeries[1] Out[35]: 98



 Schreiben Sie dann den angegebenen Bereich neu

In[36]: HachimanSeries Out[36]: math 8 japanese 98 english 38 dtype: int64

In[37]: HachimanSeries[1:1+2] = [89,33]

In[38]: HachimanSeries Out[38]: math 8 japanese 89 english 33 dtype: int64


 Hier werde ich wütend, wenn links und rechts keine Zahlen stehen.


In[39]: HachimanSeries[1:1+1] = [88,38]

ValueError (Weggelassen) ValueError: cannot set using a slice indexer with a different length than the value


 Sie können jedoch auf denselben Wert ausgerichtet werden.

In[40]: HachimanSeries[0:0+3] = 0

In[41]: HachimanSeries Out[40]: math 0 japanese 0 english 0 dtype: int64


 Zum Schluss schreiben Sie `index` neu

In[42]: HachimanSeries.index[1] = "Japanese" Out[42]: HachimanSeries math 0 Japanese 0 english 0 dtype: int64


 Eigentlich ist das nicht der Fall.

TypeError: Index does not support mutable operations

 Wie Sie sehen können, scheint "Index" unveränderlich zu sein. (Selbst wenn Sie etwas Ähnliches mit einer Zeichenkette machen, werden Sie wütend)

 Es bleibt also nichts anderes übrig, als es zu überschreiben.

In[43]: HachimanSeries.index = ["Math","Japanese","English"]

In[44]: HachimanSeries Out[44]: Math 0 Japanese 0 English 0 dtype: int64


 Nun, lassen Sie es uns nach der Überprüfung zurücksetzen.

In[45]: HachimanSeries[0:0+3] = [8,88,38]

In[46]: HachimanSeries.index = ["math", "japanese", "english"] Out[46]: math 8 japanese 88 english 38 dtype: int64


 Das Obige ist die Grundbedienung der Serie.
 Es ist länger als erwartet, daher werde ich in einem nachfolgenden Artikel über Dataframe- und Series-Methoden sprechen.






Recommended Posts

Grundlegende Bedienung von Python Pandas Series und Dataframe (1)
[Python] Operationsnotiz von Pandas DataFrame
[Python] Was ist Pandas Series und DataFrame?
Grundlegende Bedienung von Pandas
Grundlegende Bedienung von Pandas
Grundlegende Grammatik der Python3-Reihe (Liste, Tapple)
[Python] Operation der Aufzählung
Zusammenfassung der Korrespondenz zwischen Ruby- und Python-Array-Operationen
Liste der grundlegenden Operationen für Python3-Listen, -Tapples, -Wörterbücher und -Sätze
Grundkenntnisse in Python
Python-Anwendung: Pandas # 3: Dataframe
Python Basic - Pandas, Numpy -
[Python-Lernteil 3] Konvertieren Sie Pandas DataFrame, Series und Standard List ineinander
Zusammenfassung der Python-Sortierung (Liste, Wörterbuchtyp, Serie, DataFrame)
Zusammenfassung der Vorverarbeitungsmethoden für Python-Anfänger (Pandas-Datenrahmen)
[Python] Zusammenfassung der Methode zur Tabellenerstellung mit DataFrame (Pandas)
Installieren von Python 3 auf einem Mac und Überprüfen der Grundfunktionen Teil 1
Python-Anwendung: Pandas Teil 2: Serie
Python 2-Serie und 3-Serie (Anaconda Edition)
Python-Installation und grundlegende Grammatik
Zusammenfassung der grundlegenden Verwendung von Pandas
Grundlegende Verwendung von Python-F-String
Quellinstallation und Installation von Python
Python (Python 3.7.7) Installation und grundlegende Grammatik
Die Kraft der Pandas: Python
[Wissenschaftlich-technische Berechnung von Python] Grundlegende Operation des Arrays, numpy
Zusammenfassung der Unterstützung von Hash-Operationen (Dictionary) für Ruby und Python
Zeichnen Sie Zeitreihendaten in Python mit Pandas und Matplotlib
[Python] Zufällige Datenextraktion / -kombination aus DataFrame mit Random und Pandas
Umgebungskonstruktion von Python und OpenCV
Python-Handspiel (Pandas / DataFrame-Beginn)
Die Geschichte von Python und die Geschichte von NaN
Informationen zur Installation der Serien Pwntools und Python2
Vergleich der grundlegenden Grammatik zwischen Java und Python
Installation von SciPy und matplotlib (Python)
[Python] Verwendung der Pandas-Serie
Zeitdelta in Python 2.7-Serie teilen
[Python] Woche 1-3: Nummerntyp und Operation
Unterschied zwischen der Python2-Serie und der Python3-Serie dict.keys ()
Dies und das von Python-Eigenschaften
1. Mit Python 1-1 gelernte Statistiken. Grundlegende Statistiken (Pandas)
Grundlegende Grammatik des Python3-Systems (Wörterbuch)
Koexistenz von Python2 und 3 mit CircleCI (1.0)
Zusammenfassung der Python-Indizes und -Slices
Grundlegendes Studium von OpenCV mit Python
Reputation von Python-Büchern und Nachschlagewerken
[Python] So fügen Sie einer Tabelle Zeilen und Spalten hinzu (pandas DataFrame)
Praxis der Datenanalyse durch Python und Pandas (Tokyo COVID-19 Data Edition)
Ich habe die Grundoperation von Pandas im Jupyter Lab geschrieben (Teil 1)
Ich habe die grundlegende Operation von Pandas im Jupyter Lab geschrieben (Teil 2).
[Python] Grundlegendes Muster und Verwendung der if-Anweisung (Vergleichsoperator und Boolescher Operator)
[Python] Zusammenfassung der Verwendung von Pandas
[Python] Visualisieren Sie die Hitze der Präfekturen Tokio und XX (DataFrame-Nutzungsnotiz)
Extraktion von tweet.js (json.loads und eval) (Python)
Ein leicht verständlicher Vergleich der grundlegenden Grammatik von Python und Go
Elasticsearch-Installation und Grundbedienung für Ubuntu
Verbinde viel Python oder und und
Anwendung von Python: Pandas Teil 4: Verketten und Kombinieren von DataFrames