Seite 1 von 1

Euklidische Distanz

Verfasst: Sonntag 26. September 2021, 18:11
von laura0704
Hallo zusammen!

Ich haben einen Dataframe, der wie folgt aufgebaut ist

Timestamp ID X Y
0 0 100 1.728 14.378
1 12 100 2.035 14.378
2 24 100 2.342 14.378
3 36 100 2.630 14.378
4 48 100 2.937 14.416

Die erste Spalte beschreibt die von Pandas hinzugefügte Nummerierung (irrelevant), die zweite den Timestamp zu der die Koordinate bestimmt wurde, der dritte die dem Objekt zugeordnete ID und die letzten beiden die jeweils gemessene X bzw Y Koordinate. Eine fünfte Spalte wurde noch als "Kennziffer" hinzugefügt und beinhaltet eine Ziffer für die jeweils 20 zueinandergehörigen Koordinatenpunkte (20 Punkte bilden die Trajektorie eines Objekts, daher immer 20er Blöcke)

Nun zu meiner Frage: Wie berechne ich jeweils die zurückgelegte Distanz zwischen zwei Messungen, also den Vektor zwischen (Bsp von oben Zeile 1 und 2) (1.728/14.378) und (2.035/14.378)? Insgesamt habe ich über 100.000 Zeilen zwischen denen ich jeweils den Abstand berechnen und am besten als weitere Spalte einfügen muss
Geschieht dies am besten mit einer Schleife? Ich komme leider absolut nicht weiter, auch durch logisches Denken nicht, vielleicht kann hier ja jemand helfen - vielen Dank! :) :geek:

Re: Euklidische Distanz

Verfasst: Sonntag 26. September 2021, 18:29
von Buchfink
Hallo Laura0704

wenn Du Pandas nutzt, ist eine Schleife der falsche Ansatz.
Wie sieht denn Dein Code dazu bisher aus?

Re: Euklidische Distanz

Verfasst: Sonntag 26. September 2021, 18:34
von laura0704
Hallo!

Bezüglich der Euklidischen Distanz habe ich noch keinen Code, musste mich in die Aufgabe erstmal eindenken :idea: Aber ja Pandas benutze ich dafür, der Code davor bezieht sich auf das hinzufügen der Spalte mit den Kennziffern für die jeweiligen ID 20er Blöcke, da sieht das snippet so aus:


df_sorted['Kennziffer'] = (numpy.arange(len(df_sorted)) / 20).astype(int)

Re: Euklidische Distanz

Verfasst: Sonntag 26. September 2021, 18:35
von Sirius3
@laura0704: Differenz bilden, Quadrieren, Summieren, alles Standardoperationen auf einem Dataframe. Hast Du denn schon das Pandas-Tutorial durchgearbeitet?

Re: Euklidische Distanz

Verfasst: Sonntag 26. September 2021, 20:22
von laura0704
Ja, die mathematische Grundlage bzw. das theoretische Vorgehen ist nicht das Problem, eher das Durchlaufen aller Zeilen und dann das einschreiben des Ergebnisses in eine Liste bzw das Anhängen dieser Liste an den vorhandenen Dataframe

Re: Euklidische Distanz

Verfasst: Montag 27. September 2021, 07:57
von __deets__
Du musst keine Zeilen durchlaufen. Sondern einfach nur die Operationen auf dem Frame bzw. den Spalten durchführen. Der erledigt dann die iteration transparent für dich.

https://jakevdp.github.io/PythonDataSci ... andas.html

Re: Euklidische Distanz

Verfasst: Montag 27. September 2021, 08:19
von laura0704
Dann ändert sich doch aber der Wert der Spalten oder? Ich müsste ja eine neue Spalte anhängen, habe versucht die Werte in einer leeren Liste zu speichern und diese mit append anzuhängen, das klappt aber nicht

Re: Euklidische Distanz

Verfasst: Montag 27. September 2021, 08:28
von __deets__
Nö. Du kannst auch einen neuen Frame erzeugen lassen.

Re: Euklidische Distanz

Verfasst: Montag 27. September 2021, 09:14
von Sirius3
@lauro0704: ich weiß nicht, ob __deets__ Tutorial bei Deinem Problem direkt hilft, da Du keine numpy-Funktionen direkt brauchst.

Aber wie ich schon geschrieben hatte, solltest Du dringend (nochmal) das Tutorial durcharbeiten, wenn Dir so grundlegende Dinge wie anhängen einer Spalte fehlen: https://pandas.pydata.org/pandas-docs/v ... 05-columns