Analyse von Daten

mit Python


In [ ]:

Einführung

Dies ist mein Lerndokument zur Erkundung der Möglichkeiten, welche mir mit der Hilfe von Python zur Erkundung von Datensätzen zur verfühung steht. Dabei nutzen wir pandas und numpy als unsere hauptsächlichen Werkzeuge.

Hierbei importieren wir diese Librarys und geben ihnen Abkürzungen, damit wir sie später wieder aufrufen können.


In [1]:
import pandas as pd
import numpy as np

Erzeugung von Datensätzen

Nun erstellen wir unseren eigenen Datensatz (DataFrame). Für dieses Beispiel nutzen wir verschiedene Menschen mit deren Vor- sowie Familiennamen und setzen diese zusammen mit deren Alter und Ergebniss eines Testes in eine Tabelle.


In [2]:
raw_data = {'first_name': ['Jason','Molly','Tina'],
           'last_name': ['Miller','Jacobsen','.'],
           'age':['42','23','79'],
           'score':['104','108','120']}

Nun müssen wir die verschieden Spalten der Tabelle beschriften. Dies erreichen wir mit den nachfolgenden Befehl. Dabei erstellen wir eine List mit verschiedenen Strings, welche in der Reihenfolge der Spalten angegeben wird.


In [3]:
df = pd.DataFrame(raw_data, columns = ['first_name','last_name','age','score'])
df


Out[3]:
first_name last_name age score
0 Jason Miller 42 104
1 Molly Jacobsen 23 108
2 Tina . 79 120

Dieses DataFrame müssen wir nun in ein CSV Dokument umwandeln und speicher. Dafür nutzen wir den Befehl df.to_csv Dadurch speichern wir die Tabelle in eine Dokument und exportieren es in den angegebenen Dateipfad.


In [4]:
df.to_csv('/Users/kay/Downloads/pandas-cookbook-master-2/data/test.csv')

Import von CSV Dateien

Um diese CSV Datei nun wieder nutzbar zu machen, müssen wir es mit den pd.read_csv Befehl wieder importieren. Dadurch wird eine andere Spalte hinzugefügt, welche die Indexnummer angibt des alten Dataframes angibt.


In [5]:
df = pd.read_csv('/Users/kay/Downloads/pandas-cookbook-master-2/data/test.csv')
df


Out[5]:
Unnamed: 0 first_name last_name age score
0 0 Jason Miller 42 104
1 1 Molly Jacobsen 23 108
2 2 Tina . 79 120

Wollen wir nun den Header entfallen lassen, so ist dies ohne weiteres möglich, dazu müssen wir nur das Argument header=None anhängen. Dadurch wird die oberste Zeile aber mit entsprechenden Kennziffern der Spalten ersetzt, welches eine eindeutige Identifikation einer jeden Zelle ermöglicht.


In [6]:
df = pd.read_csv('/Users/kay/Downloads/pandas-cookbook-master-2/data/test.csv', header=None)
df


Out[6]:
0 1 2 3 4
0 NaN first_name last_name age score
1 0.0 Jason Miller 42 104
2 1.0 Molly Jacobsen 23 108
3 2.0 Tina . 79 120

Wollen wir nun unsere eigene Spaltenbezeichnung nutzen, so müssen wir den befehl weiter modifizieren. Dafür nutzen wir das Argument names=['stringa','stringb'] um die verschiedenen Strings als Namen zu übergeben. Dabei kann das Attribut zum wegfallen des Headers ausgelassen werden, da wir ja einen Header nutzen, dieses aber mit eigenen Werten ersetzen.


In [7]:
df = pd.read_csv('/Users/kay/Downloads/pandas-cookbook-master-2/data/test.csv' ,names=['UID','First Name','Last Name','Age','Score'])
df


Out[7]:
UID First Name Last Name Age Score
0 NaN first_name last_name age score
1 0.0 Jason Miller 42 104
2 1.0 Molly Jacobsen 23 108
3 2.0 Tina . 79 120

Nun wollen wir vielleicht die eingefügten Zahlen in der ersten Spalte der Tabelle ersetzen, und einen anderen Index nutzen. Dies ist möglich, wenn wir die index collumn nutzen. Das entsprechende Attribut dazu ist index_col='index'


In [8]:
df = pd.read_csv('/Users/kay/Downloads/pandas-cookbook-master-2/data/test.csv',index_col='UID' ,names=['UID','First Name','Last Name','Age','Score'])
df


Out[8]:
First Name Last Name Age Score
UID
NaN first_name last_name age score
0.0 Jason Miller 42 104
1.0 Molly Jacobsen 23 108
2.0 Tina . 79 120

Nun erkennen wir, dass die eigentliche Indexspalte durch die UID ersetzt wurde. Es können aber auch mehrere Indexe genutzt werden. Dafür übergeben wir statt eines einzelnen Strings eine Liste von Strings. Wichtig dabei ist aber, dass wir die selbstbestimmten Namen nutzen, und nicht die eigentlichen Namen der Spalte, welche in der CSV Datei genutzt wurde.


In [9]:
df = pd.read_csv('/Users/kay/Downloads/pandas-cookbook-master-2/data/test.csv',index_col=['First Name','Last Name'] ,names=['UID','First Name','Last Name','Age','Score'])
df


Out[9]:
UID Age Score
First Name Last Name
first_name last_name NaN age score
Jason Miller 0.0 42 104
Molly Jacobsen 1.0 23 108
Tina . 2.0 79 120

In [13]:



Out[13]:
First Name  Last Name
first_name  last_name    age
Jason       Miller        42
Molly       Jacobsen      23
Tina        .             79
Name: Age, dtype: object

In [ ]: