"GCI Data Scientist Training Course" wird von der Universität Tokio (Matsuo Laboratory) angeboten "* Praktische Daten Der Inhalt des Übungsteils wird im Jupyter NoteBook-Format (CC-BY-NC-ND) im Scientist Training Course und im Deep Learning Course </ u> * "veröffentlicht. Kapitel 6 ist "** Datenverarbeitung mit Pandas **", in dem Sie lernen, wie Sie eine leistungsstarke und schnelle Datenbearbeitungsbibliothek für die Datenanalyse verwenden. Anstelle der Schaltfläche "Gefällt mir" für die wertvollen und wunderbaren Unterrichtsmaterialien, die Sie auf Japanisch lernen können, werde ich die Antworten veröffentlichen, die Sie gelöst haben. Bitte weisen Sie auf Fehler hin.
6.1 Pandas
** <Übung 1> ** Für die folgenden Daten extrahieren wir nur die Kyoto-Spalte.
hier_data_frame1 = DataFrame(np.arange(12).reshape((3,4)) ,index = [['c','d','d'],[1,2,1]] ,columns = [['Kyoto','Nagoya','Hokkaido','Kyoto'] ,['Yellow','Yellow','Red','Blue']] ) hier_data_frame1.index.names =['key1','key2'] hier_data_frame1.columns.names =['city','color'] hier_data_frame1
hier_data_frame1["Kyoto"]
** <Übung 2> ** Stellen Sie für die Daten von Übung 1 die Städte zusammen und berechnen Sie den Durchschnittswert zwischen den Spalten.
hier_data_frame1.mean(level = "city", axis = 1)
** <Übung 3> ** Berechnen wir den Gesamtwert der Zeilen für jeden Schlüssel2 für die Daten von Übung 1.
hier_data_frame1.sum(level = "key2")
** <Übung 1> ** Lassen Sie uns einen inneren Join mit den folgenden zwei Datentabellen durchführen.
pd.merge(attri_data_frame4, attri_data_frame5, how = "inner")
** <Übung 2> ** Verbinden wir die Tabelle von attri_data_frame5 basierend auf attri_data_frame4.
pd.merge(attri_data_frame4, attri_data_frame5, how = "outer")
** <Übung 3> ** Kombinieren wir die folgenden Daten für attri_data_frame4 vertikal.
pd.concat([attri_data_frame4, attri_data_frame6])
** <Übung 1> ** Verwenden Sie die im vorherigen Kapitel verwendeten Daten aus "student-mat.csv". Fügen wir eine Spalte hinzu, die das Alter verdoppelt.
student_data_math["2age"] = 2 * student_data_math["age"]
student_data_math[["age", "2age"]].head()
** <Übung 2> ** Teilen wir mit den gleichen Daten wie oben die Spalte "Abwesenheiten" in die folgenden drei Fächer auf und zählen die Anzahl der Fächer. Darüber hinaus ist in der Optionseinstellung "Ausschneiden" die rechte Seite standardmäßig der geschlossene Abschnitt. Fügen Sie diesmal jedoch "Recht = Falsch" hinzu, damit 0 eingegeben wird.
# pd.cut(student_data_math.absences, absences_bins, right=False)
pd.value_counts(pd.cut(student_data_math.absences, absences_bins, right=False))
> [5, 100) 151
> [1, 5) 129
> [0, 1) 115
> Name: absences, dtype: int64
** <Übung 3> ** Teilen wir mit den gleichen Daten wie oben die Spalte "Abwesenheiten" mit qcut in drei Klassen auf.
# pd.qcut(student_data_math.absences, 3)
pd.value_counts(pd.qcut(student_data_math.absences, 3))
> (-0.001, 2.0] 183
> (6.0, 75.0] 115
> (2.0, 6.0] 97
> Name: absences, dtype: int64
** <Übung 1> ** Verwenden wir "student-mat.csv", das wir zuvor verwendet haben, und "student-mat.csv", um Pandas zu aggregieren. Lassen Sie uns zunächst die durchschnittliche Punktzahl von G1 mit der Schule als Achse ermitteln.
student_data_math = pd.read_csv("student-mat.csv",sep=";")
student_data_math.groupby("school")["G1"].mean()
> school
> GP 10.939828
> MS 10.673913
> Name: G1, dtype: float64
** <Übung 2> ** Als nächstes ermitteln wir die durchschnittliche Punktzahl von G1, G2 und G3, indem wir uns auf Schule und Geschlecht konzentrieren.
student_data_math.groupby(["school", "sex"])[["G1", "G2", "G3"]].mean()
** <Übung 3> ** Als nächstes berechnen wir die Maximal- und Minimalwerte von G1, G2 und G3 zusammen, wobei wir uns auf Schule und Geschlecht konzentrieren.
student_data_math.groupby(["school", "sex"])[["G1", "G2", "G3"]].agg(["max", "min"])
** <Übung 1> ** Wenn für die folgenden Daten nur eine Spalte NaN vorhanden ist, löschen Sie diese und zeigen Sie das Ergebnis an.
sample_data_frame2.dropna()
** <Übung 2> ** Füllen Sie NaN mit 0 für die oben erstellten Daten.
sample_data_frame2.fillna(0)
** <Übung 3> ** Geben Sie für die oben erstellten Daten NaN mit dem Durchschnittswert jeder Spalte ein.
sample_data_frame2.fillna(sample_data_frame2.mean())
** 6.3.1 Umfassendes Problem 1 ** Beantworten Sie die folgenden Fragen mit der zuvor verwendeten Datei "student-mat.csv".
(1) Berechnen Sie für die obigen Daten die durchschnittliche Punktzahl von G1 nach Alter x Geschlecht und erstellen Sie eine Tabelle mit dem Alter auf der vertikalen Achse und dem Geschlecht auf der horizontalen Achse.
(2) Zeigen Sie für die in (1) angezeigte Ergebnistabelle das Ergebnis des Löschens aller Zeilen (Datensätze) an, die NA sind.
student_data_math = pd.read_csv("student-mat.csv",sep=";")
# (1)
print("(1)")
print(student_data_math.groupby(["age", "sex"])["G1"].mean().unstack())
# (2)
print("\n(2)")
print(student_data_math.groupby(["age", "sex"])["G1"].mean().unstack().dropna())
> (1)
> sex F M
> age
> 15 10.052632 12.250000
> 16 10.203704 11.740000
> 17 11.103448 10.600000
> 18 10.883721 10.538462
> 19 10.642857 9.700000
> 20 15.000000 13.000000
> 21 NaN 10.000000
> 22 NaN 6.000000
>
> (2)
> sex F M
> age
> 15 10.052632 12.250000
> 16 10.203704 11.740000
> 17 11.103448 10.600000
> 18 10.883721 10.538462
> 19 10.642857 9.700000
> 20 15.000000 13.000000
Recommended Posts