Python-Datenstrukturen in pandas überführen¶
Python-Datenstrukuren wie Listen und Arrays lassen sich in pandas Series oder DataFrames überführen.
[1]:
import numpy as np
import pandas as pd
Series¶
Python Lists können einfach in pandas Series umgewandelt werden:
[2]:
list1 = [
-0.751442,
0.816935,
-0.272546,
-0.268295,
-0.296728,
0.176255,
-0.322612,
]
pd.Series(list1)
[2]:
0 -0.751442
1 0.816935
2 -0.272546
3 -0.268295
4 -0.296728
5 0.176255
6 -0.322612
dtype: float64
Auch mehrere Lists lassen sich einfach in eine pandas Series umwandeln:
[3]:
list2 = [
-0.029608,
-0.277982,
2.693057,
-0.850817,
0.783868,
-1.137835,
-0.617132,
]
pd.Series(list1 + list2)
[3]:
0 -0.751442
1 0.816935
2 -0.272546
3 -0.268295
4 -0.296728
5 0.176255
6 -0.322612
7 -0.029608
8 -0.277982
9 2.693057
10 -0.850817
11 0.783868
12 -1.137835
13 -0.617132
dtype: float64
Es kann auch eine Liste als Index übergeben werden:
[4]:
date = [
"2022-01-31",
"2022-02-01",
"2022-02-02",
"2022-02-03",
"2022-02-04",
"2022-02-05",
"2022-02-06",
]
pd.Series(list1, index=date)
[4]:
2022-01-31 -0.751442
2022-02-01 0.816935
2022-02-02 -0.272546
2022-02-03 -0.268295
2022-02-04 -0.296728
2022-02-05 0.176255
2022-02-06 -0.322612
dtype: float64
Mit Python Dictionary könnt ihr nicht nur Werte sondern auch die zugehörigen Schlüssel an eine pandas Series übergeben:
[5]:
dict1 = {
"2022-01-31": -0.751442,
"2022-02-01": 0.816935,
"2022-02-02": -0.272546,
"2022-02-03": -0.268295,
"2022-02-04": -0.296728,
"2022-02-05": 0.176255,
"2022-02-06": -0.322612,
}
pd.Series(dict1)
[5]:
2022-01-31 -0.751442
2022-02-01 0.816935
2022-02-02 -0.272546
2022-02-03 -0.268295
2022-02-04 -0.296728
2022-02-05 0.176255
2022-02-06 -0.322612
dtype: float64
Wenn ihr ein dict
übergebt, berücksichtigt der Index in der resultierenden pandas Series die Reihenfolge der Schlüssel im Dict.
Mit collections.ChainMap könnt ihr auch mehrere Dicts in eine pandas.Series verwandeln.
Zunächst definieren wir hierfür ein zweites Dict:
[6]:
dict2 = {
"2022-02-07": -0.029608,
"2022-02-08": -0.277982,
"2022-02-09": 2.693057,
"2022-02-10": -0.850817,
"2022-02-11": 0.783868,
"2022-02-12": -1.137835,
"2022-02-13": -0.617132,
}
[7]:
from collections import ChainMap
pd.Series(ChainMap(dict1, dict2))
[7]:
2022-02-07 -0.029608
2022-02-08 -0.277982
2022-02-09 2.693057
2022-02-10 -0.850817
2022-02-11 0.783868
2022-02-12 -1.137835
2022-02-13 -0.617132
2022-01-31 -0.751442
2022-02-01 0.816935
2022-02-02 -0.272546
2022-02-03 -0.268295
2022-02-04 -0.296728
2022-02-05 0.176255
2022-02-06 -0.322612
dtype: float64
DataFrame¶
Listen von Python list können in ein pandas DataFrame geladen werden mit:
[8]:
df = pd.DataFrame([list1, list2])
df
[8]:
0 | 1 | 2 | 3 | 4 | 5 | 6 | |
---|---|---|---|---|---|---|---|
0 | -0.751442 | 0.816935 | -0.272546 | -0.268295 | -0.296728 | 0.176255 | -0.322612 |
1 | -0.029608 | -0.277982 | 2.693057 | -0.850817 | 0.783868 | -1.137835 | -0.617132 |
Ihr könnt auch eine Liste in einen DataFrame-Index überführen:
[9]:
pd.DataFrame([list1, list2], index=["2022-01-31", "2022-02-01"])
[9]:
0 | 1 | 2 | 3 | 4 | 5 | 6 | |
---|---|---|---|---|---|---|---|
2022-01-31 | -0.751442 | 0.816935 | -0.272546 | -0.268295 | -0.296728 | 0.176255 | -0.322612 |
2022-02-01 | -0.029608 | -0.277982 | 2.693057 | -0.850817 | 0.783868 | -1.137835 | -0.617132 |
Ein pandas DataFrame kann aus einem Dict mit Werten in Listen erstellt werden:
[10]:
data = {
"Code": ["U+0000", "U+0001", "U+0002", "U+0003", "U+0004", "U+0005"],
"Decimal": [0, 1, 2, 3, 4, 5],
"Octal": ["001", "002", "003", "004", "004", "005"],
"Key": ["NUL", "Ctrl-A", "Ctrl-B", "Ctrl-C", "Ctrl-D", "Ctrl-E"],
}
[11]:
pd.DataFrame(data)
[11]:
Code | Decimal | Octal | Key | |
---|---|---|---|---|
0 | U+0000 | 0 | 001 | NUL |
1 | U+0001 | 1 | 002 | Ctrl-A |
2 | U+0002 | 2 | 003 | Ctrl-B |
3 | U+0003 | 3 | 004 | Ctrl-C |
4 | U+0004 | 4 | 004 | Ctrl-D |
5 | U+0005 | 5 | 005 | Ctrl-E |
Eine weitere gängige Form von Daten sind verschachtelte Dict von Dicts:
[12]:
data2 = {
"U+0006": {"Decimal": "6", "Octal": "006", "Key": "Ctrl-F"},
"U+0007": {"Decimal": "7", "Octal": "007", "Key": "Ctrl-G"},
}
df2 = pd.DataFrame(data2)
df2
[12]:
U+0006 | U+0007 | |
---|---|---|
Decimal | 6 | 7 |
Octal | 006 | 007 |
Key | Ctrl-F | Ctrl-G |
Dicts von Series werden in ähnlicher Weise behandelt:
[13]:
data3 = {"U+0006": df2["U+0006"][2:], "U+0007": df2["U+0007"][2:]}
pd.DataFrame(data3)
[13]:
U+0006 | U+0007 | |
---|---|---|
Key | Ctrl-F | Ctrl-G |