Wetterdaten: Datei schreiben nicht möglich

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Julu
User
Beiträge: 11
Registriert: Sonntag 18. Februar 2024, 15:01

O.k., alles wieder auf Anfang: Die Daten haben wie schon gezeigt dieses Format:

Code: Alles auswählen

cat 'Weathercloud V832 2021-12.csv' | more
Datum (Europe/Berlin);Tempin (�C);Temp (�C);Chill (�C);Dewin (�C);Dew (�C);Heatin (�C);Heat (�C);Humin (%);Hum (%);Wspdhi (m/s);Wspdavg (m/s);Wdiravg (�);Bar (hPa)
;Rain (mm);Rainrate (mm/h);Solarrad (W/m�);Uvi ();
2021-12-12 21:20:00;22,5;7,8;7,8;;7,2;;;45;96;0,9;0,9;158;1.039,2;4,8;0,8;;;
2021-12-12 21:30:00;20,4;7,9;7,9;;7,3;;;45;96;0;0;158;1.039,3;4,8;0,8;;;
Import nach Pandas mit

Code: Alles auswählen

#!/usr/bin/env python3
import pandas as pd

file_import = '/home/jl/Media/DtJ/Projekt/Wetter/Test/Weathercloud V832 2021-12.csv'

temp_data = pd.read_csv(file_import, sep = ';', encoding = 'UTF-16LE', dayfirst = False)
liefert

Code: Alles auswählen

  Datum (Europe/Berlin) Tempin (°C) Temp (°C) Chill (°C)  Dewin (°C) Dew (°C)  \
0   2021-12-12 21:20:00        22,5       7,8        7,8         NaN      7,2   
1   2021-12-12 21:30:00        20,4       7,9        7,9         NaN      7,3   
2   2021-12-12 21:40:00        19,8         8          8         NaN      7,4   
3   2021-12-12 21:50:00        19,7       8,1        8,1         NaN      7,5   
4   2021-12-12 22:00:00        19,7       8,1        8,1         NaN      7,5   

   Heatin (°C)  Heat (°C)  Humin (%)  Hum (%) Wspdhi (m/s) Wspdavg (m/s)  \
0          NaN        NaN       45.0     96.0          0,9           0,9   
1          NaN        NaN       45.0     96.0            0             0   
2          NaN        NaN       49.0     96.0          0,8           0,8   
3          NaN        NaN       49.0     96.0            0             0   
4          NaN        NaN       50.0     96.0          0,5           0,5   

   Wdiravg (°) Bar (hPa) Rain (mm) Rainrate (mm/h)  Solarrad (W/m²)  Uvi ()  \
0        158.0   1.039,2       4,8             0,8              NaN     NaN   
1        158.0   1.039,3       4,8             0,8              NaN     NaN   
2        225.0   1.039,3       4,8             0,8              NaN     NaN   
3        202.0   1.039,4       4,8             0,8              NaN     NaN   
4        225.0   1.039,3       4,8               0              NaN     NaN   

   Unnamed: 18  
0          NaN  
1          NaN  
2          NaN  
3          NaN  
4          NaN  
Auf den ersten Blick o.k., verwirrend finde aber doch, dass bei den Daten eine weitere Spalte angehängt ist. Natürlich könnte man die für die weitere Verarbeitung einfach auslassen, aber ich frage mich doch, warum sie angefügt ist; am Separator ";" kann es mE nicht liegen, das sind für die Überschrift und die Datenzeilen jeweils 18.
__deets__
User
Beiträge: 14543
Registriert: Mittwoch 14. Oktober 2015, 14:29

Die Daten enden in einem Semikolon. Dahinter muesste ein Name stehen. Tut es aber halt nicht. Also nennt Pandas das "Unnamed.
Julu
User
Beiträge: 11
Registriert: Sonntag 18. Februar 2024, 15:01

__deets__ hat geschrieben: Montag 26. Februar 2024, 14:10Also nennt Pandas das "Unnamed.
Ja, so weit klar, aber warum gibt es diese zusätzliche Spalte, wenn die Zeile mit den Überschriften auch mit einem Semikolon endet (und alle Zeilen jeweils 18 Spalten haben)?
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Es sind 18 Trennzeichen, und damit 19 Spalten. Komischerweise ist die letzte Spalte immer leer.
Warum heißt das Argument wohl sep(erator)?
Du mußt den fragen, der diese Dateien erzeugt, warum er eine leere Spalte an jede Zeile anhängt.
Benutzeravatar
snafu
User
Beiträge: 6741
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

@Julu:
Denk dir das Semikolon bzw. generell den Spaltentrenner nicht als Ende einer Spalte. Es dient stattdessen als Anweisung, die nächste Spalte einzuleiten. Wenn nach dem letzten Semikolon nichts mehr kommt, dann ist dies eine neue Spalte ohne Inhalt.

So ähnlich ist es auch bei "spam;".split(";"). Da wurde der leere String für die Darstellung von "kein Inhalt" gewählt. Es kommt demnach ['spam', ''] dort heraus. Kann man doof finden, ist aber eben so definiert (nicht nur in Python).
Julu
User
Beiträge: 11
Registriert: Sonntag 18. Februar 2024, 15:01

Sirius3 hat geschrieben: Montag 26. Februar 2024, 21:49...Warum heißt das Argument wohl sep(erator)?...
snafu hat geschrieben: Dienstag 27. Februar 2024, 03:12@Julu:Denk dir das Semikolon bzw. generell den Spaltentrenner nicht als Ende einer Spalte...
O. k., jetzt hab ich's begriffen, besten Dank.
Antworten