CSV-Datei(en) verarbeiten
Als Beispieldaten werden die vorläufigen Wahlergebnisse der Landtagswahl
Brandenburg 2019 verwendet.
Quelle: https://opendata.potsdam.de/explore/dataset/lwerst2019/export/
df = pd.read_csv('./lwzweit2019.csv', delimiter=";")
df.head()
#df.shape
|
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 |
0 |
1302 |
19 |
Bornstedt - Fliederweg |
1183 |
635 |
4 |
631 |
175 |
76 |
86 |
94 |
121 |
22 |
2 |
31 |
7 |
15 |
2 |
0 |
1 |
1304 |
19 |
Bornstedt - Kirschallee/Thaerstr. |
1259 |
697 |
4 |
693 |
176 |
111 |
59 |
102 |
154 |
15 |
2 |
54 |
7 |
12 |
1 |
0 |
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 |
0 |
3 |
1401 |
19 |
Sacrow |
109 |
60 |
0 |
60 |
16 |
12 |
8 |
8 |
11 |
2 |
0 |
0 |
0 |
3 |
0 |
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 |
0 |
# Nochmal ohne Header falls keine Headerzeile vorhanden ist
# dann wird durchnummeriert wie hier zu sehen.
df = pd.read_csv('./lwzweit2019.csv', delimiter=";", header=None)
df.head()
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
0 |
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 |
1 |
1302 |
19 |
Bornstedt - Fliederweg |
1183 |
635 |
4 |
631 |
175 |
76 |
86 |
94 |
121 |
22 |
2 |
31 |
7 |
15 |
2 |
0 |
2 |
1304 |
19 |
Bornstedt - Kirschallee/Thaerstr. |
1259 |
697 |
4 |
693 |
176 |
111 |
59 |
102 |
154 |
15 |
2 |
54 |
7 |
12 |
1 |
0 |
3 |
1309 |
19 |
Bornstedt - A.-Wolff-Platz/E.-Arendt-Str |
1742 |
847 |
2 |
845 |
196 |
108 |
82 |
78 |
239 |
26 |
9 |
59 |
18 |
24 |
6 |
0 |
4 |
1401 |
19 |
Sacrow |
109 |
60 |
0 |
60 |
16 |
12 |
8 |
8 |
11 |
2 |
0 |
0 |
0 |
3 |
0 |
0 |
# andere Zeile als Header
df = pd.read_csv('./lwzweit2019.csv', delimiter="|", header=3)
df.head()
|
1309;19;Bornstedt - A.-Wolff-Platz/E.-Arendt-Str;1742;847;2;845;196;108;82;78;239;26;9;59;18;24;6;0 |
0 |
1401;19;Sacrow;109;60;0;60;16;12;8;8;11;2;0;0;... |
1 |
1502;19;Eiche - Kaiser-Friedrich-Str. Süd;757;... |
2 |
1503;19;Eiche - Altes Rad West/Lindstedter Str... |
3 |
1601;19;Grube;345;210;3;207;52;31;18;37;42;13;... |
4 |
1701;19;Golm - Ehrenpfortenbergstr.;786;450;6;... |
# Auswahl Spalten
df = pd.read_csv('./lwzweit2019.csv', delimiter=";", usecols=['Wahlkreis', 'Name', 'Wahlb. insges.'])
#df.style.set_properties(**{'text-align': 'left'})
df.head()
|
Wahlkreis |
Name |
Wahlb. insges. |
0 |
19 |
Bornstedt - Fliederweg |
1183 |
1 |
19 |
Bornstedt - Kirschallee/Thaerstr. |
1259 |
2 |
19 |
Bornstedt - A.-Wolff-Platz/E.-Arendt-Str |
1742 |
3 |
19 |
Sacrow |
109 |
4 |
19 |
Eiche - Kaiser-Friedrich-Str. Süd |
757 |
# leere Einträge behandeln
df = pd.read_csv('./lwzweit2019.csv', delimiter=";",
usecols=['Wahlkreis', 'Name'],
na_values=[''])
df.head()
|
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 |
# leere Zeilen importieren
# leere Zeilen werden ignoriert, wenn notwendig, das Standardverhalten deaktivieren
df = pd.read_csv('./lwzweit2019.csv', delimiter=";",
usecols=['Wahlkreis', 'Name'],
na_values=[''],
skip_blank_lines=False)
df.head()
df.shape
# einzelne Zeilen auslassen
df = pd.read_csv('./lwzweit2019.csv', delimiter=";",
usecols=['Wahlkreis', 'Name'],
na_values=[''],
skip_blank_lines=False,
skiprows = [1,3,4])
df.head()
|
Wahlkreis |
Name |
0 |
19 |
Bornstedt - Kirschallee/Thaerstr. |
1 |
19 |
Eiche - Kaiser-Friedrich-Str. Süd |
2 |
19 |
Eiche - Altes Rad West/Lindstedter Str. |
3 |
19 |
Grube |
4 |
19 |
Golm - Ehrenpfortenbergstr. |
# Zeilen am Ende weglassen
df = pd.read_csv('./lwzweit2019.csv', delimiter=";",
usecols=['Wahlkreis', 'Name'],
na_values=[''],
skip_blank_lines=False,
skiprows = [1,3,4],
skipfooter=2, engine='python')
df.head()
df.shape
# eine begrenzte Anzahl einlesen
df = pd.read_csv('./lwzweit2019.csv', delimiter=";",
usecols=['Wahlkreis', 'Name'],
na_values=[''],
skip_blank_lines=False,
skiprows = [1,3,4],
#skipfooter=2, engine='python',
nrows=20)
df.head()
df.shape