Pandas Dataframes
Contents
%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 |
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 |
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
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
Wir können auch die Methoden
iloc()
undloc()
verwenden, um mehrere Spalten auszuwählen. Wenn wir die Spaltenindizes verwenden wollen, um sie zu extrahieren, können wiriloc()
verwenden, wie im folgenden Beispiel gezeigt:
print(df.iloc[[0],[0,2]])
numbers frequency
0 1 220
Man kann so auch einzelne Elemente auswählen.
print(df.iloc[[2],[0]])
numbers
2 3
… oder überschreiben.
df.iloc[[2],[0]] = 5
print(df.iloc[[2],[0]])
numbers
2 5
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 |
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 |