%matplotlib inline
# Load the "autoreload" extension
%load_ext autoreload
# always reload modules
%autoreload 2
# black formatter for jupyter notebooks
#%load_ext nb_black
# black formatter for jupyter lab
%load_ext lab_black

%run ../../../src/notebook_env.py
---------------------------------
Working on the host: Joachims-MacBook-Pro.local

---------------------------------
Python version: 3.10.2 | packaged by conda-forge | (main, Feb  1 2022, 19:30:18) [Clang 11.1.0 ]

---------------------------------
Python interpreter: /opt/miniconda3/envs/srh/bin/python

Pandas Dataframes

In dem folgenden Lehrbeispiel diskutieren wir ein paar wenige grundsätzliche Methoden für den Umgang mit Dataframes.

Erstellen Sie einen Pandas Datenframe mit den Spalten numbers, colors und frequency und den jeweilig dazugehörenden Werten [1, 2, 3], [red, white, blue] und [220, 440, 880].

import pandas as pd
df = pd.DataFrame(
    {
        "numbers": [1, 2, 3],
        "colors": ["red", "white", "blue"],
        "frequency": [220, 440, 880],
    }
)
df
numbers colors frequency
0 1 red 220
1 2 white 440
2 3 blue 880
  1. Wir können auch alternativ einen leeren Dataframe erstellen und die Daten Spaltenweise hinzufügen.

df = pd.DataFrame()
df["numbers"] = [1, 2, 3]
df["colors"] = ["red", "white", "blue"]
df["frequency"] = [220, 440, 880]
df
numbers colors frequency
0 1 red 220
1 2 white 440
2 3 blue 880
  1. Die erste Spalte wird Index genannt. Wir können mit der Methode loc[Index] Zeilenweise Elemente auswählen.

print('Erste Zeile von df')
print(df.loc[0])
print('Zweite Zeile von df')
print(df.loc[1])
print('Dritte Zeile von df')
print(df.loc[2])
Erste Zeile von df
numbers        1
colors       red
frequency    220
Name: 0, dtype: object
Zweite Zeile von df
numbers          2
colors       white
frequency      440
Name: 1, dtype: object
Dritte Zeile von df
numbers         3
colors       blue
frequency     880
Name: 2, dtype: object
  1. In ähnlicher Weise können wir loc() verwenden, wenn wir Spalten anhand ihrer Namen auswählen wollen

print(df.loc[:,['numbers','frequency']])
   numbers  frequency
0        1        220
1        2        440
2        3        880
  1. Wir können auch die Methoden iloc() und loc() verwenden, um mehrere Spalten auszuwählen. Wenn wir die Spaltenindizes verwenden wollen, um sie zu extrahieren, können wir iloc() verwenden, wie im folgenden Beispiel gezeigt:

print(df.iloc[[0],[0,2]])
   numbers  frequency
0        1        220
  1. Man kann so auch einzelne Elemente auswählen.

print(df.iloc[[2],[0]])
   numbers
2        3
  1. … oder überschreiben.

df.iloc[[2],[0]] = 5
print(df.iloc[[2],[0]])
   numbers
2        5
  1. Es ist auch möglich mit loc() Daten zu Filtern indem wir logische Verknüpfungen verwenden

df2 = df.loc[df['frequency'] < 441]
df2
numbers colors frequency
0 1 red 220
1 2 white 440
df2 = df.loc[df['colors'] == 'red']
df2
numbers colors frequency
0 1 red 220
  1. Man kann logische Verknüpfungen auch kombinieren um spezifischer zu filtern

df2 = df.loc[(df['numbers'] >= 1) & (df['frequency'] < 441)]
df2
numbers colors frequency
0 1 red 220
1 2 white 440