Seite 1 von 1

gps Daten einlesen

Verfasst: Samstag 5. März 2022, 21:23
von Krischu
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?

Re: gps Daten einlesen

Verfasst: Samstag 5. März 2022, 21:48
von Sirius3
pandas.read_csv

Re: gps Daten einlesen

Verfasst: Samstag 5. März 2022, 22:03
von Krischu
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?

Re: gps Daten einlesen

Verfasst: Samstag 5. März 2022, 22:16
von Sirius3
Der erste Schritt wäre, das pandas-Tutorial durchzuarbeiten.

Re: gps Daten einlesen

Verfasst: Sonntag 6. März 2022, 08:41
von __deets__
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.

Re: gps Daten einlesen

Verfasst: Sonntag 6. März 2022, 08:53
von Krischu
Guter Tipp,kein zip.

Re: gps Daten einlesen

Verfasst: Sonntag 6. März 2022, 09:01
von __deets__
Reimt sich, und was sich reimt ist gut!

Re: gps Daten einlesen

Verfasst: Sonntag 6. März 2022, 10:57
von Krischu
"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.

Re: gps Daten einlesen

Verfasst: Sonntag 6. März 2022, 11:14
von Sirius3
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.

Re: gps Daten einlesen

Verfasst: Sonntag 6. März 2022, 15:51
von Krischu
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.