[In kürzester Zeit verstehen] Python-Grundlagen für die Datenanalyse

Einführung

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.

Vorbereitung der Ausführungsumgebung

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. Screenshot at May 05 17-07-08.png

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.

1. Grundlagen der Python-Grammatik

Beginnen wir mit den Grundlagen von Python.

1.1 Versuchen Sie, Zeichen auf dem Bildschirm anzuzeigen

Verwenden Sie die Druckfunktion.

print("Hello World!")

Ausgabe


Hello World!

1.2 Vier Regeln

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

1.3 Umgang mit Variablen (Integer-Typ / Gleitkomma-Typ)

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

Seien Sie vorsichtig, wenn Sie Programme in Python schreiben

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

1.4 Zeichenfolgentyp

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

1.5 Methode

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

1.6 Listentyp

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]

Slice auflisten

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']
[]

Übungen

Nehmen wir aus der Arashi-Liste nur Aiba und Nino aus der Liste und zeigen sie an.

Antworten

print(arashi[3:5])
#Ausgabe:['Aiba Masaki', 'Ninomiya Kazunari']

1.7 Wörterbuchtyp

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'

1.8 Taple-Typ

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

1.9 Kontrollstruktur

if-Anweisung

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

zur Aussage

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

1.10 Funktionsdefinition

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

1.11 FizzBuzz-Problem

'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

Übungen

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.

Antworten

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

1.12 Modul

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

2. Python-Grundlagen für die Datenanalyse

Beispiele für Bibliotheken, die häufig in der Datenanalyse verwendet werden, und ihre Hauptverwendungen

Numpy: Numerische Berechnung, Matrixberechnung Pandas: Datenmanipulation, Arithmetik Matplotlib: Diagrammzeichnung Es gibt verschiedene andere Bibliotheken, aber dieses Mal werde ich diese drei erklären.

2.1 Numpy für Vektor- und Matrixberechnungen

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.

2.2 Zeichnen von Diagrammen mit Matplotlib

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

line.png 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()

1.png 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()

2.png 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()

3.png

2.3 Datenmanipulation mit Pandas

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.

Datenextraktion

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 (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.

Daten kombinieren

Mit der Zusammenführungsfunktion können Sie alle Arten von Daten kombinieren. Kombinieren wir df1 und df2 mit der Schülernummer als Schlüssel.

Innere Verbindung

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.

Äußere Verbindung

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.

Links verbinden

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.

Richtig beitreten

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?

Spalte hinzufügen

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

Aggregatfunktion

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

CSV-Ausgabe

Verwenden Sie die Funktion to_csv, um den erstellten Datenrahmen im CSV-Format auszugeben.

data_right.to_csv('sample.csv')

CSV-Daten lesen

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.

Übungen

Verwenden Sie die Daten aus df2, um den Durchschnitt der Gesamtpunkte der Probanden für jede Klasse zu ermitteln und in einem Balkendiagramm darzustellen.

Antwortbeispiel

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

average.png Gruppe C hat die höchste durchschnittliche Gesamtpunktzahl der Prüfung.

3. Für diejenigen, die mehr lernen wollen

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.

Wer möchte mehr über Python wissen

[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.

Diejenigen, die die Datenanalyse in Python vertiefen möchten

[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 /)

Diejenigen, die stark in der Datenvorverarbeitung sein wollen

[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.

Leute, die maschinelles Lernen mit Python machen wollen

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 /)

Diejenigen, die untersuchen möchten, wie Algorithmen für maschinelles Lernen funktionieren

[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

[In kürzester Zeit verstehen] Python-Grundlagen für die Datenanalyse
MongoDB mit Python zum ersten Mal
Python für die Datenanalyse Kapitel 4
Python für die Datenanalyse Kapitel 2
Python für die Datenanalyse Kapitel 3
Vorverarbeitungsvorlage für die Datenanalyse (Python)
Siehe Python zum ersten Mal
Versuchen Sie vorerst, FireBase Cloud Firestore mit Python zu verwenden
Python-Visualisierungstool für die Datenanalyse
[Python3] Verstehe die Grundlagen von Beautiful Soup
Grundlagen zum Ausführen von NoxPlayer in Python
[Python3] Grundlegendes zu Dateivorgängen
Datenanalyse Python
Veranschaulichen Sie sofort die vorherrschende Periode in Zeitreihendaten mithilfe der Spektralanalyse
Ein nützlicher Hinweis, wenn Sie Python nach langer Zeit verwenden
Holen Sie sich den Schlüssel für die Migration von JSON-Daten auf der zweiten Ebene mit Python
Holen Sie sich mit Python Zeitreihendaten von k-db.com
CERTIFICATE_VERIFY_FAILED in Python 3.6, dem offiziellen Installationsprogramm für macOS
[CovsirPhy] COVID-19 Python-Paket für die Datenanalyse: Laden von Daten
Verwenden Sie vorerst Logger mit Python
Ich habe zum ersten Mal versucht, Python zu programmieren.
Tipps zum Erreichen der ATND-API mit Python
Zeigen Sie FX (Forex) Daten Candle Stick in Python an
Überlebensanalyse mit Python 2-Kaplan-Meier-Schätzung
Datenanalyse in Python: Ein Hinweis zu line_profiler
Die Geschichte des Lesens von HSPICE-Daten in Python
Aufgezeichnete Umgebung für die Datenanalyse mit Python
Datenanalyse in Python Zusammenfassung der Quellen, die Anfänger zuerst betrachten sollten
Drehen Sie in Python mehrere Listen mit for-Anweisung gleichzeitig
Datenanalyse mit Python 2
Python: Zeitreihenanalyse
Python-Grundlagen ② für Anweisung
Zeitreihenanalyse 1 Grundlagen
Python-Datenanalysevorlage
Assoziationsanalyse in Python
Datenanalyse mit Python
Regressionsanalyse mit Python
Erstellen Sie Ihre eigenen Big Data in Python zur Validierung
Die Python Engineer-Zertifizierungsdatenanalyseprüfung bestanden haben
Was ich zum ersten Mal in Python bekommen habe
Ich habe Python zum ersten Mal auf dem Mac ausprobiert.
[Für Anfänger] So studieren Sie den Python3-Datenanalysetest
Führen Sie es vorerst mit CentOS7 + Apache2.4 + Python3.6 aus
[Python] Misst und zeigt die für die Verarbeitung erforderliche Zeit an
Registrieren Sie zum ersten Mal eine Aufgabe in cron
Python 3.4 Windows7-64bit-Umgebung erstellen (für die Analyse finanzieller Zeitreihen)
Geben Sie die Zeit ab dem Start des Programms in Python aus
Verstehen Sie die Exponentialverteilung sorgfältig und zeichnen Sie in Python
Ich habe Python zum ersten Mal mit Heroku ausprobiert
Visualisieren Sie Daten und erfassen Sie gleichzeitig die Korrelation
Zeichnen und verstehen Sie die multivariate Normalverteilung in Python
Verstehe die Poisson-Distribution sorgfältig und zeichne in Python
Den Inhalt der Daten in Python nicht kennen
Liste des Python-Codes, der bei der Big-Data-Analyse verwendet wird
[CovsirPhy] COVID-19 Python-Paket für die Datenanalyse: SIR-F-Modell
[CovsirPhy] COVID-19 Python-Paket für die Datenanalyse: S-R-Trendanalyse
LightGBM, der erste Schritt, um das Denken in Datenanalyse-Wettbewerben zu beenden