[PYTHON] Lösen von Übungen im GCI Data Scientist Training Course Kapitel 6

GCI Data Scientist-Schulungskurs

"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 Datenverarbeitung mit Pandas

6.1 Pandas

6.1.1 Hierarchischer Index

** <Ü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

611-1-1.png

hier_data_frame1["Kyoto"]

611-1-2.png

** <Ü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)

611-2.png

** <Ü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")

611-3.png

6.1.2 Zusammenführen von Daten

** <Ü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")

612-1.png

** <Ü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")

612-2.png

** <Übung 3> ** Kombinieren wir die folgenden Daten für attri_data_frame4 vertikal.

pd.concat([attri_data_frame4, attri_data_frame6])

612-3.png

6.1.3 Datenmanipulation und -konvertierung

** <Ü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()

613-1.png

** <Ü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

6.1.4 Datenaggregation und Gruppenoperationen

** <Ü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()

614-2.png

** <Ü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"])

614-3.png

6.2 Grundlagen des Umgangs mit fehlenden Daten und Ausreißern

6.2.1 Umgang mit fehlenden Daten

** <Ü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()

621-1.png

** <Übung 2> ** Füllen Sie NaN mit 0 für die oben erstellten Daten.

sample_data_frame2.fillna(0)

621-2.png

** <Ü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())

621-3.png

6.2.2 Umgang mit abnormalen Daten

6.3 Umfassendes Problem

** 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

Lösen von Übungen im GCI Data Scientist Training Course Kapitel 6
Lösen von Übungen im GCI Data Scientist Training Course Kapitel 7
Lösen von Übungen im GCI Data Scientist-Schulungskurs Kapitel 8
Data Scientist Training Course Kapitel 2 Tag 2
Data Scientist Training Course Kapitel 3 Tag 3
Data Scientist Training Course Kapitel 4 Tag 1
Data Scientist Training Course Kapitel 3 Tag 1 + 2