[PYTHON] Teilen und Verarbeiten eines Datenrahmens mithilfe der Groupby-Funktion

Über diesen Artikel

Bei der Datenanalyse mit Pythons Pandas ist die Groupby-Funktion eine praktische Funktion, die für jede Gruppe berechnet wird. Ich benutze oft df.groupby (df ['col1']) ['col2'] **. Mean () ** und **. Describe () ** Es ist eine orthodoxe Funktion wie Manchmal möchte ich jeden geteilten Datenrahmen verarbeiten, Ich habe festgestellt, dass das Kombinieren der Anweisung ** for ** und ** get_group ** bequem verarbeitet werden kann, daher werde ich es vorstellen.

Datenaufbereitung

groupby_get_group.py


import pandas as pd
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
import numpy as np

iris_dataset = load_iris()
df_iris=pd.DataFrame(iris_dataset.data,columns=iris_dataset.feature_names)
#Zielspalte hinzufügen
df_iris.loc[:,'target']=iris_dataset.target
#Erstellen Sie ein Wörterbuch mit Produktnamen
iris_map=dict(zip([0,1,2],iris_dataset.target_names))
#Verbinden Sie DataFrame und Wörterbuch mit dem Ziel der Kartenfunktion_Spalte für Namen hinzufügen
df_iris.loc[:,'target_names']=df_iris['target'].map(iris_map)

sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) target target_names
5.1 3.5 1.4 0.2 0 setosa
4.9 3.0 1.4 0.2 0 setosa
- - - - - -
5.7 2.8 4.1 1.3 1 versicolor
- - - - - -
6.3 3.3 6.0 2.5 2 virginica

Versuchen Sie, die groupby-Funktion auf target_names anzuwenden

Teilen Sie den Datenrahmen (** df_iris ) nach Rasse ( 'Zielnamen' **). Der geteilte ist ** gp **.

groupby_get_group.py


gp = df_iris.groupby('target_names')

Untersuchen Sie die Attribute des geteilten Objekts

In[0]:type(gp)
Out[0]:pandas.core.groupby.generic.DataFrameGroupBy

In[1]:print(gp)
Out[1]:<pandas.core.groupby.generic.DataFrameGroupBy object at 0x0000028788A33708>

Mit groupby aufgeteilte Datensätze können nicht unverändert verwendet werden. Lassen Sie uns daher die Attribute usw. mit der for-Anweisung untersuchen.

Zur Aussage verwenden

In[2]:for d_gp in gp:
          print(d_gp)
Out[2]:
 147                6.5               3.0  ...       2     virginica
 148                6.2               3.4  ...       2     virginica
 149                5.9               3.0  ...       2     virginica
 
 [50 rows x 6 columns])

In[3]:type(d_gp)
out[3]:tuple

Es scheint, dass der geteilte Datenrahmen als Variable vom Typ Tapple (** d_gp **) gespeichert ist. Um den Inhalt des Taples zu überprüfen, geben Sie hier Folgendes ein:

In[4]:d_gp[0]
Out[4]:'virginica'
 
In[5]:d_gp[1]
Out[5]:
     sepal length (cm)  sepal width (cm)  ...  target  target_names
100                6.3               3.3  ...       2     virginica
101                5.8               2.7  ...       2     virginica
102                7.1               3.0  ...       2     virginica
103                6.3               2.9  ...       2     virginica

147                6.5               3.0  ...       2     virginica
148                6.2               3.4  ...       2     virginica
149                5.9               3.0  ...       2     virginica

[50 rows x 6 columns]

Der Status nach Ausführung der for-Anweisung ist, dass der Datenrahmen der dritten Ebene ** 'virginica' ** von ** "target_names" ** ** d_gp ** zugewiesen ist. Du kannst nachschauen.

Daher ist es in Ordnung, nur ** d_gp [1] ** zu iterieren, aber hier nutzen wir ** d_gp [0] ** und rufen einen bestimmten Datensatz mit der Funktion ** get_group ** ab. Ich werde es verarbeiten.

Holen Sie sich die im Taple gespeicherten Daten von get_group.

Die Anweisung ** for ** kann Tapples abrufen. Der erste Taple enthält die Ebene der Reihe (Sorten: Setosa, Versicolor, Virginica) multipliziert mit ** Gruppe mit **. Der zweite enthält jeden Datenrahmen.

** get_group ** verwendet die im ersten Teil dieses Taples gespeicherte Ebene als Variable und ruft den im zweiten Teil des Tapples gespeicherten Datenrahmen ab und verarbeitet ihn für jede Ebene.

Das Folgende ist ein Datenrahmen, der für jede Sorte setosa, versicolor, virginica unterteilt ist. Geben Sie den Typ an und extrahieren Sie den Datenrahmen Eine Darstellung von "Kelchblattlänge" und "Kelchblattbreite".

groupby_get_group.py


for d_gp in gp:
    df_g=gp.get_group(d_gp[0])
    ##Schreiben Sie mit dem unten unterteilten Datenrahmen, was Sie verarbeiten möchten
    fig = plt.figure()
    ax = fig.add_subplot(1,1,1)
    X=df_g[df_g.columns[0]].values
    y=df_g[df_g.columns[1]].values
    ax.set_title(str.capitalize(d_gp[0])+"  "+\
                 str.capitalize(df_g.columns[0])+\
                 ' vs '+str.capitalize(df_g.columns[1]))
    ax.scatter(X,y,marker='o',color='darkblue',edgecolor="")
    cor=np.corrcoef(X, y)[0,1]
    ax.set_xlabel(str.capitalize(df_g.columns[0]))
    ax.set_ylabel(str.capitalize(df_g.columns[1]))
    ax.text(0.99, 0.01,"correlation:{0:.2}".format(cor),
                    horizontalalignment='right', verticalalignment='bottom',
                    fontsize=12,color="blue",transform=ax.transAxes)
    plt.show()

Figure setosa.png Figure Versicolor.png Figure Virginica.png

das ist alles.

abschließend

Ich werde zum ersten Mal bei Qiita posten. Bei Qiita ging es darum, mir zu helfen, also hoffe ich, dass es jemandem hilft.

Verweise

Grundlegende Codierung für Python-Datenanalyse / maschinelles Lernen! Einführung in die Nutzung der Pandas-Bibliothek (beeindrucken Sie das Top-Zahnrad) (Japanisch) Buch (Softcover) ISBN-10: 4295005657 ISBN-13: 978-4295005650

Recommended Posts

Teilen und Verarbeiten eines Datenrahmens mithilfe der Groupby-Funktion
[Circuit x Python] So ermitteln Sie die Übertragungsfunktion eines Schaltkreises mit Lcapy
[Python] Smasher hat versucht, den Video-Ladevorgang mithilfe eines Generators zu einer Funktion zu machen
So schreiben Sie eine GUI mit dem Befehl maya
So rufen Sie eine Funktion auf
So testen Sie eine Funktion, die die aktuelle Zeit enthält, mit Freezegun in Python
So finden Sie heraus, welcher Prozess den localhost-Port verwendet, und stoppen ihn
Hinzufügen neuer Daten (gerade Linien und Diagramme) mit matplotlib
So generieren Sie eine Abfrage mit dem IN-Operator in Django
Erstellen Sie eine Python-Umgebung und übertragen Sie Daten auf den Server
[Einführung in Python] So erhalten Sie Daten mit der Funktion listdir
[Linux] [C / C ++] So ermitteln Sie den Wert der Rücksprungadresse einer Funktion und den Funktionsnamen des Aufrufers
[C / C ++] Übergeben Sie den in C / C ++ berechneten Wert an eine Python-Funktion, um den Prozess auszuführen, und verwenden Sie diesen Wert in C / C ++.
Verwendung der Zip-Funktion
So erstellen Sie eine rekursive Funktion
So erhalten Sie mit einer vielseitigen Methode nur die erforderlichen Daten aus der strukturierten Datengruppe
Wie man einen bestimmten Prozess am Anfang und Ende der Spinne mit Scrapy einfügt
Hinweise zum Erstellen einer LAMP-Umgebung mit Vagrant und VirtulBox
[Einführung in Python] So teilen Sie eine Zeichenfolge mit der Funktion split
Verarbeiten Sie das Ausführungsergebnis von Splunk mit Python und speichern Sie es in einer Datei
So erhalten Sie mithilfe der Mastodon-API Follower und Follower von Python
[C-Sprache] So erstellen, vermeiden und erstellen Sie einen Zombie-Prozess
So formatieren Sie eine Tabelle mit Pandas Apply, Pivot und Swaplevel
So aktualisieren Sie eine in Tableau gepackte Arbeitsmappen-Datenquelle mit Python
So teilen und speichern Sie einen DataFrame
So zeichnen Sie ein Diagramm mit Matplotlib
So installieren Sie ein Paket mithilfe eines Repositorys
[Python] Erklärt anhand eines konkreten Beispiels, wie die Bereichsfunktion verwendet wird
[Python] Verwendung der Aufzählungsfunktion (Indexnummer und Element extrahieren)
Wie man die anfängliche Population mit einem genetischen Algorithmus unter Verwendung von DEAP fixiert
So erstellen Sie einen Wrapper, der die Signatur der zu umschließenden Funktion beibehält
[Einführung in Python] So schreiben Sie eine Zeichenfolge mit der Formatierungsfunktion
[Entwicklungsumgebung] So erstellen Sie einen Datensatz in der Nähe der Produktionsdatenbank
Kopieren und Einfügen des Inhalts eines Blattes im JSON-Format mit einer Google-Tabelle (mithilfe von Google Colab)
So berechnen Sie die Volatilität einer Marke
So codieren Sie eine Drohne mithilfe der Bilderkennung
So erstellen Sie ein Funktionsobjekt aus einer Zeichenfolge
So zählen Sie die Anzahl der Elemente in Django und geben sie in die Vorlage aus
[Python] Lesen von Daten aus CIFAR-10 und CIFAR-100
So erhalten Sie Artikeldaten mithilfe der Qiita-API
Ich bin süchtig nach dem Unterschied, wie Flask und Django JSON-Daten empfangen
So lesen Sie Seriennummerndateien in einer Schleife, verarbeiten sie und zeichnen sie grafisch auf
Ändern Sie den Datenrahmen der Pandas-Kaufdaten (ID x Produkt) in ein Wörterbuch
Ich habe versucht, das Bild zu verarbeiten und zu transformieren und die Daten für maschinelles Lernen zu erweitern
[Python] Verwendung von Hash-Funktion und Taple.
So suchen Sie HTML-Daten mit Beautiful Soup
Datenbereinigung Umgang mit fehlenden und Ausreißern
Der erste Schritt zur Protokollanalyse (Formatieren und Einfügen von Protokolldaten in Pandas)
[Go] So schreiben oder rufen Sie eine Funktion auf
Stellen Sie unter Linux (Ubuntu) das Trackpad ein und stellen Sie die Funktion auf Drei-Finger-Wischen ein
Hochladen auf ein freigegebenes Laufwerk mit pydrive
So deinstallieren Sie ein mit setup.py installiertes Modul
Wie man eine öffentliche Funktion in Pytest verspottet
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
Ich habe versucht, das Update von "Werde ein Romanautor" mit "IFTTT" und "Werde ein Romanautor API" zu benachrichtigen.
Verwendung des Befehls grep zum rekursiven Durchsuchen von Verzeichnissen und Dateien bis zu einer bestimmten Tiefe
[Für Anfänger] Anzeigen von Karten und Suchfeldern mithilfe der GoogleMap Javascript-API
Wie man den Satz von Persival mit Matplotlib und der Fourier-Transformation (FFT) von scipy bestätigt
Lesen Sie die Python-Markdown-Quelle: So erstellen Sie einen Parser