Für diejenigen, die Daten mit Python analysieren möchten ... oder sich für Python für Seminare und Forschungszwecke entschieden haben, aber noch nie programmiert haben. ** Wenn Sie das wissen, sind die Grundlagen in Ordnung ** (vielleicht). Ich denke, es kann als Überprüfung des Wissens verwendet werden. Zunächst werden die Grundlagen der allgemeinen Python-Grammatik auf ein Minimum reduziert und anschließend die grundlegenden Werkzeuge und Techniken für die Datenanalyse beschrieben. Wenn Sie die grundlegende Grammatik von Python kennen, können Sie zu [2. Python-Grundlagen für die Datenanalyse](# 2-Python-Grundlagen für die Datenanalyse) springen.
Dieser Artikel wurde überarbeitet und basierend auf dem Material hinzugefügt, mit dem Mitglieder des Universitätsseminars im letzten Jahr Python unterrichtet wurden. (Es wurde auch für eine Vorlesung an einer anderen privaten Universität angenommen !!)
Es ist nur die Basis von Python für die Datenanalyse, daher erwähne ich nicht viel über die Datenanalyse selbst. Für diejenigen, die mehr lernen möchten, werde ich am Ende [Empfohlene Bücher](Nr. 3 - Für diejenigen, die mehr lernen möchten) vorstellen.
Wenn Sie zum ersten Mal programmieren, kann es leicht passieren, dass Sie beim Erstellen einer Programmierumgebung stolpern. Mit Google Colaboratory können Sie Python jedoch in einem Chaos verwenden. Öffnen Sie Google Drive und installieren Sie Colaboratory.
Im Folgenden wird davon ausgegangen, dass es in Google Colaboratory ausgeführt wird. Wenn Sie jedoch über eine Ausführungsumgebung verfügen, können Sie natürlich Anacondas Jupyter verwenden.
Beginnen wir mit den Grundlagen von Python.
Verwenden Sie die Druckfunktion.
print("Hello World!")
Ausgabe
Hello World!
3 + 4 #Zusatz
#Ausgabe: 7
8 - 3 #Subtraktion
#Ausgabe: 5
9 * 3 #Multiplikation
#Ausgabe: 27
9 / 3 #Teilung
#Ausgabe: 3.0
5 // 2 #Quotient teilen
#Ausgabe: 2
5 % 2 #Rest der Teilung
#Ausgabe: 1
5 ** 2 #Leistung
#Ausgabe: 25
Erfahren Sie mehr über Python-Datentypen. Ein Datentyp ist buchstäblich ein Datentyp. Es kann jedoch sein, dass es nicht zu einem Stift kommt. Schauen wir uns einige häufig verwendete Datentypen an, indem wir uns an sie gewöhnen, anstatt sie zu lernen.
a = 4
a
#Ausgabe: 4
Übrigens, wenn Sie a als Zeichen anzeigen möchten
print('a')
#Ausgabe: a
b = 1.2
b #Ausgabe:1.2
a + b
#a ist "Integer-Typ", b ist "Gleitkomma-Typ"
#Ausgabe:5.2
"=" Bedeutet Zuordnung, nicht Äquivalenz.
a = a + 1
a #Ausgabe:5
c = 2
c += 1 #Binäroperator c= c +Gleich wie 1
c #Ausgabe: 3
d = 6
d -= 1 #Binäroperator c= c -Gleich wie 1
d
e = 100*5
e #Ausgabe: 500
f = 4
f == 4 #Ausgabe: Richtig
#「==Ist ein Vergleichsoperator. Richtig, weil es richtig ist, dass f durch Substitution 4 ist
f == 5 #Ausgabe: Falsch
Einrückung ist als Programm in Python sinnvoll. Ein Fehler tritt auf, wenn die Zeichen ohne Bedeutung abgesenkt werden.
x = 1
x = x + 1
x
Ausgabe
File "<ipython-input-92-80d18cdaadaa>", line 2
x = x + 1
^
IndentationError: unexpected indent
Daten vom Typ Zeichenfolgen werden erstellt, indem eine Zeichenfolge in einfache oder doppelte Anführungszeichen eingeschlossen wird.
a = "Datenanalyse"
b = 'Python'
a,b
Ausgabe
('Datenanalyse', 'Python')
Lassen Sie uns die Zeichenfolgen verbinden. Verwenden Sie +.
a = "Zur Datenanalyse"
b = 'Python-Grundlagen'
a + b
'Python-Grundlagen für die Datenanalyse'
In den folgenden Fällen tritt ein Fehler auf.
c = "4" #Zeichenfolgentyp
d = 3 #Ganzzahliger Typ
c + d #Fehler, weil der Variablentyp unterschiedlich ist
Ausgabe
TypeError Traceback (most recent call last)
<ipython-input-98-237326ccb44f> in <module>()
1 c = "4" #Zeichenfolgentyp
2 d = 3 #Ganzzahliger Typ
----> 3 c + d #Fehler, weil der Variablentyp unterschiedlich ist
TypeError: must be str, not int
Verwenden Sie die Funktion len (), um die Länge (Anzahl der Zeichen) der Zeichenfolge abzurufen
a = "DataAnalytics"
len(a) #Ausgabe: 13
Stellen Sie sich das als eine Funktion vor, die für jeden Datentyp verwendet werden kann. Im Gegensatz zu normalen Funktionen, die alleine verwendet werden können, werden Methoden mit Variablen und Werten aufgerufen. Verwenden wir einige Methoden, die mit dem Zeichenfolgentyp verwendet werden können.
name = 'Donald Trump'
#Obere Methode, um alle Alphabete nach oben zu bringen
print(name.upper())
#Niedrigere Methode, die alle Alphabete niedriger macht
print(name.lower())
Ausgabe
DONALD TRUMP
donald trump
Ein Datentyp, in dem Zahlen und Zeichenfolgen nebeneinander gespeichert werden können. Ordnen Sie Zeichen und Zeichenfolgen durch Kommas getrennt an. Praktisch beim gemeinsamen Umgang mit Datenblöcken.
L = [1,2,3,4]
L
Ausgabe
[1, 2, 3, 4]
Die Daten mit der ersten Ordnung sind "0".
L[1] #Holen Sie sich das zweite Element
#Ausgabe: 2
L[:] #Holen Sie sich alle Elemente
#Ausgabe:[1, 2, 3, 4]
Der Inhalt wird durch Ersetzung geändert.
L[2]=999 #Ändern Sie das dritte Element
L #Ausgabe:[1, 2, 999, 4]
Verwenden Sie die Append-Methode, um Daten hinzuzufügen.
L.append(30) #Fügen Sie am Ende der Liste 30 hinzu
L #Ausgabe:[1, 2, 999, 4, 30]
Es ist leicht zu verstehen, wenn Sie glauben, dass sich zwischen den Daten eine "Partition" befindet und Sie die Nummer der Partition angeben.
arashi = ["Sakurai Sho","Jun Matsumoto","Satoshi Ohno","Aiba Masaki","Ninomiya Kazunari"]
print(arashi[0:1])
print(arashi[1:4])
print(arashi[2:2])
Ausgabe
['Sakurai Sho']
['Jun Matsumoto', 'Satoshi Ohno', 'Aiba Masaki']
[]
Nehmen wir aus der Arashi-Liste nur Aiba und Nino aus der Liste und zeigen sie an.
print(arashi[3:5])
#Ausgabe:['Aiba Masaki', 'Ninomiya Kazunari']
Im Wörterbuch wird die Korrespondenz verwaltet, indem das Schlüsselwort (Schlüssel) dem entsprechenden Elementwert (Wert) zugeordnet wird.
arashi = {'Sakurai Sho':'38','Jun Matsumoto':'36','Satoshi Ohno':'39'}
print(arashi)
Ausgabe
{'Sakurai Sho': '38', 'Jun Matsumoto': '36', 'Satoshi Ohno': '39'}
Durch Angabe eines Schlüssels wird der diesem Schlüssel zugeordnete Wert erfasst.
arashi["Satoshi Ohno"] #Referenz per Schlüssel
#Ausgabe:'39'
a = (1,2,3,4)
a #Ausgabe:(1,2,3,4)
print(a[0]) #Ausgabe: 1
Der Unterschied zum Listentyp besteht darin, dass er unveränderlich (unveränderlich) ist. Praktisch für die Verwaltung von Daten, die bei Änderungen ein Problem darstellen würden.
a[1]=10
#Fehler, da er nicht geändert werden kann
Ausgabe
TypeError Traceback (most recent call last)
<ipython-input-130-5434a1e381e3> in <module>()
----> 1 a[1]=10
2 #Fehler, da er nicht geändert werden kann
TypeError: 'str' object does not support item assignment
Geben Sie den Vorgang gemäß den Bedingungen an. Wenn die Variable 20 oder mehr ist (Alter> = 20 ist wahr), wird im Folgenden "20 Jahre oder älter" zurückgegeben, andernfalls wird "minderjährig" zurückgegeben. Verwenden Sie nach dem Doppelpunkt die Tabulatortaste auf der Tastatur, um einen Einzug hinzuzufügen.
age = 20
if age >= 20:
print('Ich bin über 20')
else:
print('Du bist minderjährig')
#Ausgabe: Über 20 Jahre alt
age = 20
if age >= 20:
print('Ich bin über 20') #Fehler, da kein Einzug vorhanden ist
else:
print('Du bist minderjährig')
Ausgabe
File "<ipython-input-154-b2f09d489829>", line 4
print('Ich bin über 20')
^
IndentationError: expected an indented block
Führt die iterative Verarbeitung aus. Fügen Sie auch einen Einzug nach dem Doppelpunkt hinzu.
for i in range(5): #Wiederholen Sie dies 5 Mal und zählen Sie von 0
print(i)
#Ausgabe
0
1
2
3
4
Erstellen Sie Ihre eigene Funktion. Deklarieren Sie die Definition mit def und definieren Sie den Funktionsnamen (in diesem Fall f ()) und die Variable. Programmieren Sie das Verhalten der Funktion unterhalb des Doppelpunkts.
def f(x,y):
return x**2 + y**2 #Gibt den Rückgabewert zurück (Berechnungsergebnis wird übergeben)
print(f(10,20)) #10 Quadrat + 20 Quadrat
#Ausgabe:500
'Fizz' für Vielfache von 3, 'Buzz' für Vielfache von 5, 'FizzBuzz' für gemeinsame Vielfache von 3 und 5, Erstellen wir ein Programm, das die Nummer wie bei anderen Nummern anzeigt. Verwenden Sie elif, um eine Bedingung hinzuzufügen.
for i in range(1,31):
if i%3 == 0 and i%5==0:
print('FizzBuzz')
elif i%3 == 0:
print('Fizz')
elif i%5 == 0:
print('Buzz')
else:
print(i)
Ausgabe
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz
Wenn Sie eine Zahl in das Argument einfügen, erstellen wir eine Funktion, die die Nummer gemäß der obigen FizzBuzz-Regel anzeigt. Lassen Sie uns auch die Anzeige mit dieser Funktion überprüfen.
def FizzBuzz(i):
if i%3 == 0 and i%5 == 0:
print('FizzBuzz')
elif i%3 == 0:
print('Fizz')
elif i%5 == 0:
print('Buzz')
else:
print(i)
FizzBuzz(100)
#Ausgabe: Buzz
FizzBuzz(105)
#Ausgabe: FizzBuzz
Python verfügt über einen Mechanismus namens ** Modul **, der Funktionen wie Funktionen organisiert und bei Bedarf geladen und verwendet werden kann. Die bisher verwendeten Funktionen sind in Python integrierte Funktionen, die jederzeit verwendet werden können. Diese Funktionen werden als ** integrierte Funktionen ** bezeichnet. Sie finden die Liste unter http://docs.python.jp/3/library/functions.html.
Andererseits können diejenigen, die für begrenzte Zwecke verwendet werden, verwendet werden, indem sie aus dem Modul geladen werden. Python enthält viele dieser nützlichen Module, aber die mit Python gelieferte Sammlung von Modulen wird als ** Standardbibliothek ** bezeichnet. Übrigens enthält Anaconda zusätzlich zur Standardbibliothek nützliche Bibliotheken.
import math #Laden Sie das Mathematikmodul (Import)
math.cos(0) #Ausgabe: 1.0
** Modulname. Funktionsname ** Verbinden Sie den Modulnamen und den Funktionsnamen mit.
import numpy as np #Importieren Sie das NumPy-Modul mit dem Namen np
#Umfangsverhältnis π
np.pi #Ausgabe: 3.141592653589793
#cos(180°)
math.cos(np.pi) #Ausgabe:-1.0
Numpy: Numerische Berechnung, Matrixberechnung Pandas: Datenmanipulation, Arithmetik Matplotlib: Diagrammzeichnung Es gibt verschiedene andere Bibliotheken, aber dieses Mal werde ich diese drei erklären.
Numpy ist eine Bibliothek für numerische Berechnungen. Berechnen wir die Matrix.
import numpy as np #Importieren Sie das NumPy-Modul und'np'Benutzt als
arr1 = np.array([1,4,3]) #Erstellen einer 1x3-Matrix
arr1
Ausgabe
array([1, 4, 3])
arr1[2] #Element abrufen
#Ausgabe: 3
#2x3 Matrix
arr2 = np.array([[1,2,3],[4,5,6]])
Ausgabe
array([[1, 2, 3],
[4, 5, 6]])
arr2[1,1] #Element abrufen
#Ausgabe: 5
arr2.shape
#Ausgabe:(2, 3)
arr1 + arr2 #Matrixaddition
#Ausgabe:
array([[2, 6, 6],
[5, 9, 9]])
Berechnen wir das Produkt der Matrizen mit der Funktion dot ()
a = np.array([[1,2],[3,4]])
b = np.array([[5,6],[7,8]])
np.dot(a,b)
#Ausgabe
array([[19, 22],
[43, 50]])
Wenn Sie können, führen Sie eine manuelle Berechnung durch und prüfen Sie, ob die Ergebnisse des Matrixprodukts übereinstimmen. Das Produkt der vorherigen Prozession (arr1, arr2) ist übrigens,
np.dot(arr1,arr2)
Ausgabe
ValueError Traceback (most recent call last)
<ipython-input-62-e5b6075b8937> in <module>()
----> 1 np.dot(arr1,arr2)
<__array_function__ internals> in dot(*args, **kwargs)
ValueError: shapes (3,) and (2,3) not aligned: 3 (dim 0) != 2 (dim 0)
Dies ist ein Fehler, da die Anzahl der Spalten in arr1 und die Anzahl der Zeilen in arr2 nicht übereinstimmen und das Produkt der Spalten nicht definiert werden kann.
Matplotlib, eine Bibliothek zur Datenvisualisierung, wird zum Zeichnen verwendet. Importieren Sie dieses Mal das Pyplot-Modul der Matplotlib-Bibliothek und verwenden Sie die Plot-Funktion im Pyplot-Modul. Zeichnen wir zunächst eine gerade Linie. Es ist ein Bild der Vorbereitung mehrerer Punkte, die den bestimmten Bereich teilen und sie mit einer Linie verbinden.
import matplotlib.pyplot as plt
#Importieren Sie das Pyplot-Modul aus dem Matplotlib-Paket
import numpy as np
x = np.linspace(0,10,100) #Ersetzen Sie die Variable x durch die Zahl 0 bis 10 geteilt durch 100, indem Sie die Variable x mit der NumPy-Funktion linspace verwenden
y = x
plt.plot(x,y) #Zeichnen Sie x und y
plt.show() #Grafik anzeigen
Als nächstes zeichnen wir eine quadratische Kurve. Installieren Sie außerdem eine Bibliothek (japanize-matplotlib) für die Verwendung japanischer Schriftarten mit matplotlib, damit diese beim Import aufgerufen werden kann.
!pip install japanize-matplotlib
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
x = np.linspace(-5,5,300) #Verwenden Sie die NumPy-Funktion linspace für die Variable x-Ersetzen Sie die Zahl von 5 bis 5 geteilt durch 300
y = x**2
plt.plot(x,y,color = "r") #Geben Sie die Farbe als rot an
plt.xlabel('y=x^Grafik von 2') #Stellen Sie die Beschriftung der x-Achse ein
plt.show()
Wie ich beim Zeichnen der ersten geraden Linie geschrieben habe, ist diese parabolische Linie, die wie eine glatte Kurve aussieht, tatsächlich eine Reihe von geraden Linien. Lassen Sie uns die Teilung aufrauen.
x = np.linspace(-5,5,10) #Versuchen Sie, in 10 zu teilen
y = x**2
plt.plot(x,y,color = "r")
plt.xlabel('y=x^Grafik von 2')
plt.show()
Es ist ein bisschen verrückter als zuvor. Lassen Sie uns den Graphen etwas mehr üben. Zeichnen Sie als Nächstes mit der Numpy-Funktion ein Diagramm der Dreiecksfunktion.
import math
x = np.linspace(-np.pi, np.pi) #-Von π nach π
plt.plot(x, np.cos(x), color='r', ls='-', label='cos') #Geben Sie Linientyp, Farbe und Beschriftung an
plt.plot(x, np.sin(x), color='b', ls='-', label='sin')
plt.plot(x, np.tan(x), color='c', marker='s', ls='None', label='tan')
#Geben Sie den Bereich der anzuzeigenden Koordinaten an
plt.xlim(-np.pi, np.pi)
plt.ylim(-1.5, 1.5)
#x=0 und y=Zeichnen Sie eine Hilfslinie auf 0
plt.axhline(0, ls='-', c='b', lw=0.5) #horizontal(Horizontal)Also hline
plt.axvline(0, ls='-', c='b', lw=0.5) #vertical(vertikal)Also vline
plt.legend()
plt.xlabel('x-Achse')
plt.ylabel('y-Achse')
plt.title('Dreiecksfunktionsdiagramm')
plt.show()
Dieser Pandas wird hauptsächlich zur Datenvorverarbeitung verwendet. Speichern Sie die zu analysierenden Daten in einem DataFrame (wie einem Datentresor) und verarbeiten Sie sie nach Bedarf.
Die Daten, die für die Analyse verwendet werden können, sind nicht immer sauber.
Die meiste Zeit, die für Datenanalyse und maschinelles Lernen aufgewendet wird, ist diese Vorverarbeitung. Was die Vorverarbeitung steuert, steuert die Datenanalyse. Lassen Sie uns zunächst zwei einfache DataFrames erstellen.
import pandas as pd
df1 = pd.DataFrame({
'Name':['sato','ito','kato','endo','naito'],
'Schülernummer':[1,2,3,4,5],
'Körpergewicht':[92,43,58,62,54],
'Höhe':[178,172,155,174,168]
})
df1
Name | Schülernummer | Körpergewicht | Höhe | |
---|---|---|---|---|
0 | sato | 1 | 92 | 178 |
1 | ito | 2 | 43 | 172 |
2 | kato | 3 | 58 | 155 |
3 | endo | 4 | 62 | 174 |
4 | naito | 5 | 54 | 168 |
DataFrame ist indiziert (Nummer ganz links ab 0)
df2 = pd.DataFrame({
'Schülernummer':[1,2,3,5,6,9],
'Mathematik':[50,60,70,80,90,100],
'Englisch':[95,85,80,75,70,65],
'Wissenschaft':[40,55,60,65,50,75],
'Klasse':['Gruppe A','Gruppe B.','Gruppe A','Gruppe C.','Gruppe B.','Gruppe C.']
})
df2
Schülernummer | Mathematik | Englisch | Wissenschaft | Klasse | |
---|---|---|---|---|---|
0 | 1 | 50 | 95 | 40 | Gruppe A |
1 | 2 | 60 | 85 | 55 | Gruppe B. |
2 | 3 | 70 | 80 | 60 | Gruppe A |
3 | 5 | 80 | 75 | 65 | Gruppe C. |
4 | 6 | 90 | 70 | 50 | Gruppe B. |
5 | 9 | 100 | 65 | 75 | Gruppe C. |
Ich habe zwei Datenrahmen erstellt. Informationen wie Name und Gewicht werden in df1 gespeichert, und Informationen wie Noten werden in df2 gespeichert. Nehmen Sie außerdem an, dass die beiden Datenrahmen durch eine eindeutige Schülernummer verbunden sind.
Geben Sie beim Aufrufen einer bestimmten Spalte den Spaltennamen mit [] an.
df2['Mathematik']
Ausgabe
0 50
1 60
2 70
3 80
4 90
5 100
Name:Mathematik, dtype: int64
Wenn Sie mehrere Spalten extrahieren, verdoppeln Sie [] und rufen Sie auf.
df2[['Englisch','Klasse']]
Englisch | Klasse | |
---|---|---|
0 | 95 | Gruppe A |
1 | 85 | Gruppe B. |
2 | 80 | Gruppe A |
3 | 75 | Gruppe C. |
4 | 70 | Gruppe B. |
5 | 65 | Gruppe C. |
Sortieren (sortieren) Sie zunächst nur bestimmte Spalten. Verwenden Sie die Funktion sort_values (). Die Standardeinstellung ist aufsteigende Reihenfolge.
df1['Höhe'].sort_values()
#Ausgabe:
2 155
4 168
1 172
3 174
0 178
Name:Höhe, dtype: int64
Um nach Gewicht zu sortieren und das gesamte df1 anzuzeigen, setzen Sie das Argument by der Funktion sort_values ().
df1.sort_values(by=["Körpergewicht"], ascending=False) #ascending=Wenn True, aufsteigende Reihenfolge
Name | Schülernummer | Körpergewicht | Höhe | |
---|---|---|---|---|
0 | sato | 1 | 92 | 178 |
3 | endo | 4 | 62 | 174 |
2 | kato | 3 | 58 | 155 |
4 | naito | 5 | 54 | 168 |
1 | ito | 2 | 43 | 172 |
Sie sind in absteigender Reihenfolge nach Gewicht angeordnet.
Mit der Zusammenführungsfunktion können Sie alle Arten von Daten kombinieren. Kombinieren wir df1 und df2 mit der Schülernummer als Schlüssel.
data_inner = pd.merge(df1,df2, on='Schülernummer', how='inner')
data_inner
Name | Schülernummer | Körpergewicht | Höhe | Mathematik | Englisch | Wissenschaft | Klasse | |
---|---|---|---|---|---|---|---|---|
0 | sato | 1 | 92 | 178 | 50 | 95 | 40 | Gruppe A |
1 | ito | 2 | 43 | 172 | 60 | 85 | 55 | Gruppe B. |
2 | kato | 3 | 58 | 155 | 70 | 80 | 60 | Gruppe A |
3 | naito | 5 | 54 | 168 | 80 | 75 | 65 | Gruppe C. |
Es wurden nur die Daten kombiniert, die den beiden Datenrahmen gemeinsam sind. Übrigens haben df1 und df2 nur die Schülernummer gemeinsam, daher ist die Schülernummer standardmäßig der Schlüssel, auch wenn Sie sich nicht die Mühe machen, sie anzugeben.
data_outer = pd.merge(df1, df2, how = 'outer')
data_outer
Name | Schülernummer | Körpergewicht | Höhe | Mathematik | Englisch | Wissenschaft | Klasse | |
---|---|---|---|---|---|---|---|---|
0 | sato | 1 | 92 | 178 | 50 | 95 | 40 | Gruppe A |
1 | ito | 2 | 43 | 172 | 60 | 85 | 55 | Gruppe B. |
2 | kato | 3 | 58 | 155 | 70 | 80 | 60 | Gruppe A |
3 | endo | 4 | 62 | 174 | nan | nan | nan | nan |
4 | naito | 5 | 54 | 168 | 80 | 75 | 65 | Gruppe C. |
5 | nan | 6 | nan | nan | 90 | 70 | 50 | Gruppe B. |
6 | nan | 9 | nan | nan | 100 | 65 | 75 | Gruppe C. |
Im Fall einer äußeren Verknüpfung wird auch diejenige erfasst, die nur in einem der Datenrahmen vorhanden ist.
data_left = pd.merge(df1,df2,how = 'left')
data_left
Name | Schülernummer | Körpergewicht | Höhe | Mathematik | Englisch | Wissenschaft | Klasse | |
---|---|---|---|---|---|---|---|---|
0 | sato | 1 | 92 | 178 | 50 | 95 | 40 | Gruppe A |
1 | ito | 2 | 43 | 172 | 60 | 85 | 55 | Gruppe B. |
2 | kato | 3 | 58 | 155 | 70 | 80 | 60 | Gruppe A |
3 | endo | 4 | 62 | 174 | nan | nan | nan | nan |
4 | naito | 5 | 54 | 168 | 80 | 75 | 65 | Gruppe C. |
Beim linken Join bleibt das, was am Join-Ziel (df1) vorhanden ist, erhalten. Im Gegensatz zum Zeitpunkt der inneren Verknüpfung werden die Daten von endo einschließlich fehlender Werte angezeigt.
data_right = pd.merge(df1,df2,how = 'right')
data_right
Name | Schülernummer | Körpergewicht | Höhe | Mathematik | Englisch | Wissenschaft | Klasse | |
---|---|---|---|---|---|---|---|---|
0 | sato | 1 | 92 | 178 | 50 | 95 | 40 | Gruppe A |
1 | ito | 2 | 43 | 172 | 60 | 85 | 55 | Gruppe B. |
2 | kato | 3 | 58 | 155 | 70 | 80 | 60 | Gruppe A |
3 | naito | 5 | 54 | 168 | 80 | 75 | 65 | Gruppe C. |
4 | nan | 6 | nan | nan | 90 | 70 | 50 | Gruppe B. |
5 | nan | 9 | nan | nan | 100 | 65 | 75 | Gruppe C. |
Wie beim linken Join bleiben die Daten des Join-Ziels (diesmal df2) übrig. Im Gegensatz zum Zeitpunkt der äußeren Verknüpfung werden die Daten von endo nicht angezeigt. Haben Sie die Unterschiede zwischen den einzelnen Anleihen gut verstanden?
Fügen wir in df2 eine Spalte hinzu, die die Gesamtpunktzahl der naturwissenschaftlichen Fächer zeigt. Es ist in Ordnung, wenn Sie einen neuen Spaltennamen angeben und wie unten gezeigt ersetzen.
df2['Naturwissenschaftlichen Fächern'] = df2['Mathematik'] + df2['Wissenschaft']
df2
Schülernummer | Mathematik | Englisch | Wissenschaft | Klasse | Naturwissenschaftlichen Fächern | |
---|---|---|---|---|---|---|
0 | 1 | 50 | 95 | 40 | Gruppe A | 90 |
1 | 2 | 60 | 85 | 55 | Gruppe B. | 115 |
2 | 3 | 70 | 80 | 60 | Gruppe A | 130 |
3 | 5 | 80 | 75 | 65 | Gruppe C. | 145 |
4 | 6 | 90 | 70 | 50 | Gruppe B. | 140 |
5 | 9 | 100 | 65 | 75 | Gruppe C. | 175 |
Angenommen, Sie möchten die durchschnittliche Testnote für jede Klasse wissen. Verwenden Sie die Groupby-Funktion. Im Folgenden wird nach der Summe für jede Klasse die Mittelwertfunktion zur Mittelwertbildung verwendet.
df2[['Mathematik','Englisch','Wissenschaft','Klasse']].groupby(['Klasse']).mean().reset_index()
#Index zurücksetzen (keine Tabellenverschiebung)
Klasse | Mathematik | Englisch | Wissenschaft |
---|---|---|---|
Gruppe A | 60 | 87.5 | 50 |
Gruppe B. | 75 | 77.5 | 52.5 |
Gruppe C. | 90 | 70 | 70 |
Aggregieren Sie mit groupby und berechnen Sie für jede Gruppe mit der Funktion danach. Zusätzlich zur mittleren Funktion können Sie auch die Max-Funktion, die Median-Funktion, die Min-Funktion usw. verwenden.
#Extrahieren Sie die niedrigste Punktzahl für jedes Fach in jeder Klasse
df2[['Mathematik','Englisch','Wissenschaft','Klasse']].groupby(['Klasse']).min().reset_index()
Klasse | Mathematik | Englisch | Wissenschaft |
---|---|---|---|
Gruppe A | 50 | 80 | 40 |
Gruppe B. | 60 | 70 | 50 |
Gruppe C. | 80 | 65 | 65 |
Verwenden Sie die Funktion to_csv, um den erstellten Datenrahmen im CSV-Format auszugeben.
data_right.to_csv('sample.csv')
Dieses Mal habe ich einen DataFrame von Grund auf neu erstellt, aber es gibt viele Situationen, in denen Daten ursprünglich im CSV-Format gelesen werden. Verwenden Sie die Funktion read_csv (), um Dateien im CSV-Format mit Pandas zu lesen. Dies wird jedoch für durch Kommas getrennte CSV verwendet. Verwenden Sie für Tabulatortrennzeichen die Funktion read_table (). Lesen wir die Ausgabe sample.csv früher und zeigen sie erneut als DataFrame an.
sample = pd.read_csv('sample.csv', index_col=0) #Index ignorieren
sample
Name | Schülernummer | Körpergewicht | Höhe | Mathematik | Englisch | Wissenschaft | Klasse | |
---|---|---|---|---|---|---|---|---|
0 | sato | 1 | 92 | 178 | 50 | 95 | 40 | Gruppe A |
1 | ito | 2 | 43 | 172 | 60 | 85 | 55 | Gruppe B. |
2 | kato | 3 | 58 | 155 | 70 | 80 | 60 | Gruppe A |
3 | naito | 5 | 54 | 168 | 80 | 75 | 65 | Gruppe C. |
4 | nan | 6 | nan | nan | 90 | 70 | 50 | Gruppe B. |
5 | nan | 9 | nan | nan | 100 | 65 | 75 | Gruppe C. |
Bis zu diesem Punkt haben Sie alle grundlegenden Operationen beim Analysieren von Daten mit Python gelernt. Lassen Sie uns zum Schluss die Übungen lösen.
Verwenden Sie die Daten aus df2, um den Durchschnitt der Gesamtpunkte der Probanden für jede Klasse zu ermitteln und in einem Balkendiagramm darzustellen.
import matplotlib.pyplot as plt
import japanize_matplotlib
df2['Gesamtpunktzahl'] = df2['Mathematik'] + df2['Englisch'] +df2['Wissenschaft']
sum_score = df2[['Klasse','Gesamtpunktzahl']].groupby(['Klasse']).mean().reset_index()
x = sum_score['Klasse']
y = sum_score['Gesamtpunktzahl']
plt.bar(x,y)
plt.xlabel('Klasse')
plt.ylabel('Durchschnittliche Gesamtpunktzahl')
plt.title('Durchschnittliche Gesamtpunktzahl nach Klassen')
plt.show()
Gruppe C hat die höchste durchschnittliche Gesamtpunktzahl der Prüfung.
Bisher ist es lange her. Vielen Dank an alle, die daran gearbeitet haben. Die folgenden Bücher werden für diejenigen empfohlen, die vertiefen möchten.
[Minna no Python 4. Ausgabe] (https://www.amazon.co.jp/%E3%81%BF%E3%82%93%E3%81%AA%E3%81%AEPython-%E7%AC%AC4%E7%89%88-%E6%9F%B4%E7%94%B0-%E6%B7%B3/dp/479738946X/) Sie sollten es lesen, nachdem Sie die Grundlagen beherrschen. Es ist auch ○ als Wörterbuch zu verwenden.
[Einführung in die Datenanalyse mit Python 2nd Edition - Datenverarbeitung mit NumPy und Pandas](https://www.amazon.co.jp/Python%E3%81%AB%E3%82%88%E3%82% 8B% E3% 83% 87% E3% 83% BC% E3% 82% BF% E5% 88% 86% E6% 9E% 90% E5% 85% A5% E9% 96% 80-% E7% AC% AC2 % E7% 89% 88-% E2% 80% 95NumPy% E3% 80% 81pandas% E3% 82% 92% E4% BD% BF% E3% 81% A3% E3% 81% 9F% E3% 83% 87% E3% 83% BC% E3% 82% BF% E5% 87% A6% E7% 90% 86-Wes-McKinney / dp / 487311845X /)
[Vollständige Vorverarbeitung [SQL / R / Python-Übungstechnik für die Datenanalyse]](https://www.amazon.co.jp/%E5%89%8D%E5%87%A6%E7%90%86] % E5% A4% A7% E5% 85% A8% EF% BC% BB% E3% 83% 87% E3% 83% BC% E3% 82% BF% E5% 88% 86% E6% 9E% 90% E3 % 81% AE% E3% 81% 9F% E3% 82% 81% E3% 81% AESQL-R-Python% E5% AE% 9F% E8% B7% B5% E3% 83% 86% E3% 82% AF % E3% 83% 8B% E3% 83% 83% E3% 82% AF% EF% BC% BD-% E6% 9C% AC% E6% A9% 8B-% E6% 99% BA% E5% 85% 89 - / dp / B07C3JFK3V /) Ich beziehe mich in der Praxis oft darauf. Neben Python können Sie auch mehr über R dplyr und die Vorverarbeitung mit SQL erfahren.
[Python Practical Data Analysis 100 Knock](https://www.amazon.co.jp/Python%E5%AE%9F%E8%B7%B5%E3%83%87%E3%83%BC%E3% 82% BF% E5% 88% 86% E6% 9E% 90100% E6% 9C% AC% E3% 83% 8E% E3% 83% 83% E3% 82% AF-% E4% B8% 8B% E5% B1 % B1-% E8% BC% 9D% E6% 98% 8C / dp / 4798058750 / r8674263 & s = Bücher & sr = 1-1) Obwohl der Name "Datenanalyse" lautet, sind viele Seiten der Vorverarbeitung von Daten durch Pandas gewidmet. ** Die Datenanalyse ist ein Buch, das der Tatsache entspricht, dass die Vorverarbeitung 80% beträgt ** (?). Dies reicht aus, um die Grundoperationen von Pandas zu beherrschen.
Vorstellung von zwei O'Reilly-Büchern zum maschinellen Lernen.
[Maschinelles Lernen beginnend mit Python-Funktionen, die mit scikit-learn Grundlagen des Ingenieurwesens und maschinellen Lernens erlernt wurden](https://www.amazon.co.jp/Python%E3%81%A7%E3%81%AF%E3%81] % 98% E3% 82% 81% E3% 82% 8B% E6% A9% 9F% E6% A2% B0% E5% AD% A6% E7% BF% 92-% E2% 80% 95scikit-learn% E3% 81% A7% E5% AD% A6% E3% 81% B6% E7% 89% B9% E5% BE% B4% E9% 87% 8F% E3% 82% A8% E3% 83% B3% E3% 82% B8% E3% 83% 8B% E3% 82% A2% E3% 83% AA% E3% 83% B3% E3% 82% B0% E3% 81% A8% E6% A9% 9F% E6% A2% B0% E5% AD% A6% E7% BF% 92% E3% 81% AE% E5% 9F% BA% E7% A4% 8E-Andreas-C-Müller / dp / 4873117984 /)
[Python Machine Learning Cookbook](https://www.amazon.co.jp/Python%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%82% AF% E3% 83% 83% E3% 82% AF% E3% 83% 96% E3% 83% 83% E3% 82% AF-Chris-Albon / dp / 4873118670 /)
[Essenz des maschinellen Lernens - Python, Mathematik, Algorithmen, die während der Implementierung gelernt wurden](https://www.amazon.co.jp/%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%] BF% 92% E3% 81% AE% E3% 82% A8% E3% 83% 83% E3% 82% BB% E3% 83% B3% E3% 82% B9-% E5% AE% 9F% E8% A3 % 85% E3% 81% 97% E3% 81% AA% E3% 81% 8C% E3% 82% 89% E5% AD% A6% E3% 81% B6Python-% E3% 82% A2% E3% 83% AB% E3% 82% B4% E3% 83% AA% E3% 82% BA% E3% 83% A0-Maschinelles Lernen / dp / 4797393963 /) Implementieren Sie einen typischen Algorithmus für maschinelles Lernen von Grund auf in Python. Sie können auch etwas über die Mathematik lernen, die für maschinelles Lernen verwendet wird.
Recommended Posts