Funktionen, die beim Erstellen von Tabellen und Grafiken unerwartet erforderlich sind. Ich habe versucht, eine solche Pivot-Tabellenfunktion zusammenzufassen, dass es einen Unterschied zwischen Himmel und Erde gibt, wenn Sie es nicht wissen. Übrigens, als ich Student war, kannte ich nicht einmal die Pivot-Tabellenfunktion von Excel, und ich erinnere mich, wie ich die experimentellen Daten geweint und geformt habe ... Da es auf Qiita gepostet wurde, habe ich es diesmal mit dem Pandas-Datenrahmen versucht.
Als eine der Funktionen in Excel bezieht es sich auf ein Tool, das die erforderlichen Daten aus einer vorregistrierten Liste extrahiert und aus allen Richtungen aggregiert und analysiert. Die Funktion "Aggregat" ist besonders praktisch, und Sie können das rechts gezeigte Ergebnis aus dem links in der folgenden Abbildung gezeigten Datenformat zurückgeben.
Sie benötigen es, wenn Sie Kreuztabellen erstellen oder ein etwas kompliziertes Diagramm erstellen möchten. Dieses Mal mache ich etwas Ähnliches im Pandas-Datenrahmen anstelle von Excel.
Ausgeliehene Zugdaten von kaggle Titanic Competition. Die Bedeutung jeder Spalte finden Sie unter hier.
Es sieht so aus wie es ist ... Schwer zu interpretieren!
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# Path
input_path = "../input_data/"
# Set Display Max Columns
pd.set_option("display.max_columns", 50)
train = pd.read_csv(input_path + "train.csv", sep=",", header=0, quotechar="\"")
# test = pd.read_csv(input_path + "bank/test.csv", sep=",", header=0, quotechar="\"")
#Fehlende Wertverarbeitung, weil es schwierig zu handhaben ist
train["Embarked"] = train.Embarked.fillna("S")
train["Age"]=train["Age"].fillna(train.Age.mean())
#Alter nach Alter
labels = [ "{0} - {1}".format(i, i + 9) for i in range(0, 100, 10) ]
train["Age"] = pd.cut(train["Age"], np.arange(0, 101, 10),
include_lowest=True, right=False,
labels=labels)
#Konzentrieren Sie sich auf das, was für diesen Zweck einfach zu handhaben scheint
df = train[["PassengerId", "Survived", "Pclass", "Sex", "Age", "SibSp", "Parch", "Fare", "Embarked"]]
#Bestätigung der Daten
df.head()
Die Namen der Passagiere, die schwer zu handhaben scheinen, werden gelöscht.
Es sind mindestens die folgenden drei Argumente erforderlich
-Data (erstes Argument): Geben Sie das pandas.DataFrame-Objekt der Originaldaten an. -Index: Geben Sie den Spaltennamen der Originaldaten an. Es wird zur Überschrift der Ergebniszeile. -Spalten: Geben Sie den Spaltennamen der Originaldaten an. Es wird zur Spaltenüberschrift des Ergebnisses.
Der Durchschnittswert der Spalten, die nicht im Argumentindex und in den Spalten angegeben sind, wird als Ergebnis berechnet, aber die Spalten, deren Typ nicht numerisch ist, werden ausgeschlossen.
df.pivot_table(index="Age", columns= "Sex", values="Fare")
Standardmäßig wird der Durchschnittswert der Aggregation zurückgegeben. (Andere Ergebnisse können berechnet werden, indem dem Argument aggfunc hinzugefügt wird.)
Standardmäßig wird der Durchschnittswert berechnet, es ist jedoch möglich, den Wert mit anderen Methoden zu berechnen, indem im Argument aggfunc eine Funktion angegeben wird. Standardmäßig (wenn das Argument aggfunc weggelassen wird) wird numpy.mean () angegeben.
df.pivot_table(index="Age", columns= "Sex", values="Fare", aggfunc='count')
Durch Angabe von aggfunc = 'count' wird die Anzahl der anwendbaren Daten gezählt.
df.pivot_table(index="Age", columns= ["Pclass","Sex"], values="Survived", aggfunc='mean')
df.pivot_table(index="Age", columns= ["Pclass","Sex"], values="Survived", aggfunc=["mean","count"])
df.pivot_table(index="Age", columns= ["Pclass","Sex"], values="Survived", aggfunc=["mean","count"],margins=True, margins_name="total")
Durch Angabe des Arguments normalize der Funktion cross_tab kann es für das Ganze, für jede Zeile und für jede Spalte standardisiert werden.
pd.crosstab(index=df.Age, columns= df.Sex, values=df.Fare, aggfunc='count', normalize=True)
-Wenn normalize = True oder normalize = 'all', wird die Summe auf 1 standardisiert. -Wenn normalize = 'index' oder'columns ', wird es standardisiert, sodass die Summe für jede Zeile oder Spalte 1 beträgt.
das ist alles.
Nach dem Betrieb der Pivot-Tabelle sind die Spalten mehrschichtig, aber ich kann sie nicht durch Angabe der Spalten extrahieren. Wenn jemand weiß, bitte kommentieren ...
・ Http://yaginogogo.hatenablog.jp/entry/2016/04/22/011327 ・ Https://note.nkmk.me/python-pandas-pivot-table/ ・ Https://deepage.net/features/pandas-pivot.html ・ Https://boxil.jp/mag/a2149/ ・ Https://deepage.net/features/pandas-pivot.html ・ Https://qiita.com/kshigeru/items/bfa8c11d1e6487c791d3 ・ Https://qiita.com/hoto17296/items/3442af64c7acb682de6a
Recommended Posts