Pandas: Daten auswählen¶
import pandas as pd
df = pd.read_csv('./lwzweit2019.csv', delimiter=";", encoding = "ISO-8859-1")
df.head()
df.shape
(217, 19)
spalte = df['Wahlkreis']
print(type(spalte))
print(spalte)
<class 'pandas.core.series.Series'>
0 19
1 19
2 19
3 19
4 19
..
212 22
213 22
214 22
215 22
216 22
Name: Wahlkreis, Length: 217, dtype: int64
zweispalten = df[['Wahlkreis', 'Name']]
print(type(zweispalten))
print(zweispalten.head())
<class 'pandas.core.frame.DataFrame'>
Wahlkreis Name
0 19 Bornstedt - Fliederweg
1 19 Bornstedt - Kirschallee/Thaerstr.
2 19 Bornstedt - A.-Wolff-Platz/E.-Arendt-Str
3 19 Sacrow
4 19 Eiche - Kaiser-Friedrich-Str. Süd
# Punkt-Schreibweise
zweispalten.Name
0 Bornstedt - Fliederweg
1 Bornstedt - Kirschallee/Thaerstr.
2 Bornstedt - A.-Wolff-Platz/E.-Arendt-Str
3 Sacrow
4 Eiche - Kaiser-Friedrich-Str. Süd
...
212 Drewitz - Alt Drewitz/Am Silbergraben
213 Kirchsteigfeld - Priesterweg
214 Potsdam Briefwahlbezirk 9065
215 Potsdam Briefwahlbezirk 9070
216 Potsdam Briefwahlbezirk 9071
Name: Name, Length: 217, dtype: object
# Zugriff mit loc
df.loc[:,'Name']
df.loc[4,'Name']
'Eiche - Kaiser-Friedrich-Str. Süd'
# Zugriff mit iloc
df.iloc[4,3]
757
df.iloc[4,:]
Nr 1502
Wahlkreis 19
Name Eiche - Kaiser-Friedrich-Str. Süd
Wahlb. insges. 757
Wähler 335
Ungült. Zweitstimmen 3
Gültige Zweitstimmen 332
SPD 82
CDU 40
DIE LINKE 51
AfD 68
GRÃNE/B 90 55
BVB / FREIE WÃHLER 8
PIRATEN 1
FDP 14
ÃDP 4
Tierschutzpartei 8
V-Partei³ 1
Sonstige 0
Name: 4, dtype: object
df.iloc[4,8:12]
CDU 40
DIE LINKE 51
AfD 68
GRÃNE/B 90 55
Name: 4, dtype: object
# Sortierung
df.sort_values('Name').head()
Nr | Wahlkreis | Name | Wahlb. insges. | Wähler | Ungült. Zweitstimmen | Gültige Zweitstimmen | SPD | CDU | DIE LINKE | AfD | GRÃNE/B 90 | BVB / FREIE WÃHLER | PIRATEN | FDP | ÃDP | Tierschutzpartei | V-Partei³ | Sonstige | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
43 | 5206 | 21 | Babelsberg Nord - Alt Nowawes West | 1067 | 610 | 4 | 606 | 160 | 50 | 91 | 57 | 186 | 10 | 10 | 19 | 6 | 11 | 6 | 0 |
41 | 5203 | 21 | Babelsberg Nord - Fontanestr. | 1255 | 690 | 0 | 690 | 165 | 92 | 74 | 55 | 217 | 10 | 3 | 60 | 2 | 11 | 1 | 0 |
156 | 5208 | 21 | Babelsberg Nord - Goetheplatz | 1140 | 705 | 8 | 697 | 176 | 78 | 86 | 62 | 229 | 13 | 3 | 31 | 5 | 11 | 3 | 0 |
143 | 5202 | 21 | Babelsberg Nord - Karl-Marx-Str./Donarst | 1160 | 646 | 5 | 641 | 149 | 117 | 57 | 70 | 161 | 10 | 4 | 53 | 9 | 7 | 4 | 0 |
141 | 5201 | 21 | Babelsberg Nord - Klein Glienicke | 960 | 520 | 3 | 517 | 128 | 56 | 43 | 36 | 173 | 9 | 5 | 56 | 2 | 8 | 1 | 0 |
df.sort_values('Name', ascending=False).head()
Nr | Wahlkreis | Name | Wahlb. insges. | Wähler | Ungült. Zweitstimmen | Gültige Zweitstimmen | SPD | CDU | DIE LINKE | AfD | GRÃNE/B 90 | BVB / FREIE WÃHLER | PIRATEN | FDP | ÃDP | Tierschutzpartei | V-Partei³ | Sonstige | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
57 | 4203 | 22 | Zentrum Ost - Lotte-Pulewka-Str. | 1027 | 458 | 11 | 447 | 132 | 23 | 110 | 92 | 52 | 5 | 5 | 8 | 5 | 15 | 0 | 0 |
53 | 4201 | 22 | Zentrum Ost - Humboldtring/Babelsb. Str. | 1094 | 530 | 5 | 525 | 127 | 49 | 79 | 75 | 115 | 11 | 6 | 31 | 8 | 22 | 2 | 0 |
159 | 4204 | 22 | Zentrum Ost - Humboldtring Ost/Wiesenstr | 1379 | 647 | 11 | 636 | 243 | 49 | 116 | 106 | 71 | 11 | 8 | 12 | 4 | 16 | 0 | 0 |
55 | 4202 | 22 | Zentrum Ost - Hans-Marchwitza-Ring | 913 | 358 | 10 | 348 | 84 | 21 | 69 | 64 | 68 | 8 | 4 | 6 | 6 | 14 | 4 | 0 |
24 | 1507 | 19 | Werder (Havel), Zur alten Weberei/Angler | 1054 | 559 | 4 | 555 | 123 | 102 | 44 | 115 | 94 | 15 | 7 | 31 | 7 | 14 | 3 | 0 |
ergebnis_filter_series = df['SPD'] > 0
ergebnis_filter_series
0 True
1 True
2 True
3 True
4 True
...
212 True
213 True
214 True
215 True
216 True
Name: SPD, Length: 217, dtype: bool
ergebnis_filter_series = [(df['SPD'] > 10) & (df['SPD'] < 50)]
ergebnis_filter_series
[0 False
1 False
2 False
3 True
4 False
...
212 False
213 False
214 False
215 False
216 False
Name: SPD, Length: 217, dtype: bool]
# ???
df['Name'].isin(['Potsdam'])
0 False
1 False
2 False
3 False
4 False
...
212 False
213 False
214 False
215 False
216 False
Name: Name, Length: 217, dtype: bool
df.axes
[RangeIndex(start=0, stop=217, step=1),
Index(['Nr', 'Wahlkreis', 'Name', 'Wahlb. insges.', 'Wähler',
'Ungült. Zweitstimmen', 'Gültige Zweitstimmen', 'SPD', 'CDU',
'DIE LINKE', 'AfD', 'GRÃNE/B 90', 'BVB / FREIE WÃHLER', 'PIRATEN',
'FDP', 'ÃDP', 'Tierschutzpartei', 'V-Partei³', 'Sonstige'],
dtype='object')]
# ???
# axis0 = Zeilen oder 'rows'
# axis1 = Spalten oder 'columns'
#df.mean(axis=1)
df.head()
df.drop('Sonstige', axis=1).head()
Nr | Wahlkreis | Name | Wahlb. insges. | Wähler | Ungült. Zweitstimmen | Gültige Zweitstimmen | SPD | CDU | DIE LINKE | AfD | GRÃNE/B 90 | BVB / FREIE WÃHLER | PIRATEN | FDP | ÃDP | Tierschutzpartei | V-Partei³ | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1302 | 19 | Bornstedt - Fliederweg | 1183 | 635 | 4 | 631 | 175 | 76 | 86 | 94 | 121 | 22 | 2 | 31 | 7 | 15 | 2 |
1 | 1304 | 19 | Bornstedt - Kirschallee/Thaerstr. | 1259 | 697 | 4 | 693 | 176 | 111 | 59 | 102 | 154 | 15 | 2 | 54 | 7 | 12 | 1 |
2 | 1309 | 19 | Bornstedt - A.-Wolff-Platz/E.-Arendt-Str | 1742 | 847 | 2 | 845 | 196 | 108 | 82 | 78 | 239 | 26 | 9 | 59 | 18 | 24 | 6 |
3 | 1401 | 19 | Sacrow | 109 | 60 | 0 | 60 | 16 | 12 | 8 | 8 | 11 | 2 | 0 | 0 | 0 | 3 | 0 |
4 | 1502 | 19 | Eiche - Kaiser-Friedrich-Str. Süd | 757 | 335 | 3 | 332 | 82 | 40 | 51 | 68 | 55 | 8 | 1 | 14 | 4 | 8 | 1 |