gps Daten einlesen

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Krischu
User
Beiträge: 87
Registriert: Dienstag 14. Januar 2014, 09:07

Ich habe eine Datei mit GPS-Daten in folgendem Format:

Code: Alles auswählen


2022-02-24T14:09:07.000Z,49.8464488,13.1807312,526.521

Wie kann ich diese Daten in ein Array einesen, so daß ich sie als Datentypen weiter verwenden kann, z.B.

DATE ,LAT, LON, ELEV

Die drei Floatwerte würde ich noch hinbekommen, aber den DATE-String, den müßte ich noch weiter verhackstücken.
Wie kriege ich die kommaseparierten Werte am elegantesten in ein Array von unterschiedlich getypten Variablen? Insbesondere den String?
--
Grüße
Christoph
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

pandas.read_csv
Krischu
User
Beiträge: 87
Registriert: Dienstag 14. Januar 2014, 09:07

Sirius3 hat geschrieben: Samstag 5. März 2022, 21:48 pandas.read_csv
Gut. Habe ich mal eingebaut:

Code: Alles auswählen

df = pd.read_csv (r'./gps.txt',names=['DATE','LAT', 'LON','NN'], header=None)
print (df)

Code: Alles auswählen

                        DATE        LAT        LON       NN
0   2022-02-24T14:09:07.000Z  52.846449  14.180731  516.521
1   2022-02-24T14:09:08.000Z  52.846451  14.180736  516.537
2   2022-02-24T14:09:09.000Z  52.846456  14.180743  516.398
3   2022-02-24T14:09:10.000Z  52.846461  14.180746  516.580
4   2022-02-24T14:09:11.000Z  52.846463  14.180747  516.525
..                       ...        ...        ...      ...
77  2022-02-24T14:10:24.000Z  52.846462  14.180794  520.922
78  2022-02-24T14:10:25.000Z  52.846462  14.180794  520.968
79  2022-02-24T14:10:26.000Z  52.846462  14.180794  520.983
80  2022-02-24T14:10:27.000Z  52.846462  14.180795  521.003
81  2022-02-24T14:10:28.000Z  52.846462  14.180795  521.024

[82 rows x 4 columns]
Jetzt will ich die Punkte LAT,LON plotten

Vorher hatte ich ein Array
und folgendes Stück Code:

Code: Alles auswählen

plt.scatter(*zip(*gps))
plt.title('GPS-Werteverteilung')
plt.xlabel('sek')
plt.ylabel('n')
plt.grid(True)
plt.show()
wie addressiere ich jetzt die LAT,LON Werte in df und kriege die in ein Array, auf das ich zip anwenden kann?
--
Grüße
Christoph
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Der erste Schritt wäre, das pandas-Tutorial durchzuarbeiten.
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du willst auch kein zip anwenden. Dieses Konstrukt hat ja nur aus einer Liste mit Tupeln zwei Listen gemacht, und die an Plot übergeben. Das kannst du jetzt direkt mit den Spalten machen. Kein Grund das mühselig so hinzufrickeln.
Krischu
User
Beiträge: 87
Registriert: Dienstag 14. Januar 2014, 09:07

Guter Tipp,kein zip.
--
Grüße
Christoph
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Reimt sich, und was sich reimt ist gut!
Krischu
User
Beiträge: 87
Registriert: Dienstag 14. Januar 2014, 09:07

"Tutorial durcharbeiten". RTFM ist immer leicht zu sagen. Besser wäre es gewesen, vielleicht noch ein Tut zu empfehlen. W3Schools ist nicht sehr ergiebig.
Aber gut, hatte ja eine gewisse "erzieherische " Wirkung. Nicht helfen hilft auch zur Selbsthilfe.

Komme jetzt etwas weiter:

Code: Alles auswählen


import numpy as np
import matplotlib
import math as m
import matplotlib.pyplot as plt
import pandas as pd


%matplotlib inline  

df = pd.read_csv (r'./gps.txt',names=['DATE','LAT', 'LON','NN'], header=None)
#print (df)
#print(df.info()) 
#print(df.loc[:,'LAT'])
lat=df.loc[:,'LAT']
lon=df.loc[:,'LON']
print(lat[63])
print(lon[28])
Warum heißt die Funktion bloß "loc"? Printe ich "lat" alleine, bekomme eine 2spaltige Darstellung mit lfd. Index. Printe ich ``` lat [ i ] ``` , so bekomme ich ein einzelnes Array-Element.
Freue ich mich zwar drüber, verstehe es aber nicht. :)

OK, ist type "Series". Muß noch sowas wie:

Code: Alles auswählen

alat = np.array(lat.values.tolist())
alon = np.array(lon.values.tolist())
durchführen. Komme jetzt weiter.
--
Grüße
Christoph
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Was hat jetzt W3Schools damit zu tun?
Wenn ich von Tutorial schreibe, meine ich immer das offizielle:
https://pandas.pydata.org/pandas-docs/s ... 10min.html
oder speziell zum Plotten:
https://pandas.pydata.org/docs/getting_ ... tting.html

Der Index könnte z.B. die DATE-Spalte sein, damit man gleich die richtige x-Achse hat.
Krischu
User
Beiträge: 87
Registriert: Dienstag 14. Januar 2014, 09:07

Sirius3 hat geschrieben: Sonntag 6. März 2022, 11:14 Was hat jetzt W3Schools damit zu tun?
Wenn ich von Tutorial schreibe, meine ich immer das offizielle:
https://pandas.pydata.org/pandas-docs/s ... 10min.html
oder speziell zum Plotten:
https://pandas.pydata.org/docs/getting_ ... tting.html
W3Schools war das erste Pandas Tutorial, das ich fand. Danke für den Hinweis auf das offizielle.
--
Grüße
Christoph
Antworten