


Verwenden Sie Pandas, um die Reverse-Bewegung in 360-Grad-Ringkoordinatendaten genau zu erkennen
Einführung: Herausforderungen in Ringkoordinatendaten
Bei der Verarbeitung bestimmter Datenarten, wie der Position eines Himmelskörpers auf der Sonnenfinsternis, dem Lesen eines Winkelsensors oder der Phase eines periodischen Signals, begegnen wir häufig auf ein 360-Grad-Ringkoordinatensystem. Das Merkmal dieser Art von Koordinaten ist, dass der Wert, wenn er 360 Grad erreicht, bis zu 0 Grad zurückgeht oder wenn er von 0 Grad zu negativen Werten abnimmt, er bis zu 359 Grad (d. H. Modulo 360 -Operationen) "zurückwinden".
Wenn das Beispiel des planetarischen inversen Verhaltens nimmt, ändern sich die Ekliptikkoordinaten des Planeten weiterhin innerhalb von 360 Grad. Wenn sich ein Planet von direkter zu retrograde wechselt, erreichen seine Koordinaten ein lokales Maximum und beginnen dann zu verringern. Wenn sich ein Planet von direkter zu direkter Wechsel wechselt, erreichen seine Koordinaten ein lokales Minimum und beginnen sich dann zu erhöhen. In einem herkömmlichen linearen Koordinatensystem können wir diese umgekehrten Bewegungen identifizieren, indem wir lokale extreme Punkte erkennen (z. B. die Verwendung von scipy.signal.argrelextrema).
Das 360-Grad-Ringkoordinatensystem stellt jedoch eine besondere Herausforderung dar: Dies ist physikalisch eine kontinuierliche Vorwärtsbewegung, wenn die Koordinaten des Planeten von etwa 350 Grad weiter steigen und sich von 360 Grad erstrecken (d. H. In den Eintritt in den 0-Grad-Bereich) und dann weiter zunehmen. Aus numerischer Sicht wird es beispielsweise von 358 Grad bis 0 Grad einen scharfen Tropfen geben. Wenn der traditionelle Algorithmus zur Erkennung von Extremwert direkt angewendet wird, kann dieses Phänomen, das die Grenze überschreitet, leicht als Ausgangspunkt einer umgekehrten Bewegung falsch eingeschätzt werden, was zu einem "falsch positiven" Ergebnis führt.
Betrachten Sie die folgenden "Crash -Beispieldaten", die den Prozess der Spannungskoordinaten von 358 Grad bis 0 Grad anzeigen:
Datumskoordinaten 17.03.2010 358.41273 # Dies ist nicht der Beginn der Rückwärtsbewegung 18.03.2010 0.39843 # Es überschreitet nur die Grenze 19.03.2010 2.39354
In diesem Beispiel bewegt sich der Planet tatsächlich kontinuierlich vorwärts, aber aufgrund der umlaufenden Art der Koordinaten wird eine direkte Beobachtung des numerischen Werts einen "Rückgang" von 358 auf 0 aufdecken, was möglicherweise mit einem lokalen Maximum verwechselt werden kann. Wir brauchen eine Möglichkeit, diese Grenzspanne von der wahren umgekehrten Bewegung zu unterscheiden.
Kernmethode: Pandas-basierte Reverse-Bewegungserkennung
Um das Problem der Fehleinschätzung in 360-Grad-Ringkoordinatendaten zu lösen, können wir die leistungsstarken Datenverarbeitungsfunktionen von Pandas verwenden, um eine Schlüsselstrategie zu kombinieren: indem wir eine absolute Differenzschwelle festlegen, um die durch 360-Grad-Grenzspanne verursachten "falschen" Änderungen herauszufiltern. Das Urteilsvermögen wird nur berücksichtigt, wenn die Änderung zwischen kontinuierlichen Punkten innerhalb eines angemessenen geringen Bereichs liegt.
Die spezifischen Schritte sind wie folgt:
- Datenvorbereitung : Datum organisieren und Daten in Pandas DataFrame koordinieren.
- Berechnen Sie die Differenz und setzen Sie den Schwellenwert :
- Verwenden Sie die Diff () -Methode, um die Differenz zwischen benachbarten Koordinaten zu berechnen.
- Nehmen Sie den absoluten Wert der Differenz ABS ().
- Legen Sie einen Schwellenwert (z. B. 1 Grad) fest, um Datenpunkte herauszufiltern, deren absolute Differenz kleiner oder gleich diesem Schwellenwert ist. Dieser Schritt ist der Kern, der Punkte effektiv identifizieren kann, die aufgrund der 360-Grad-Umgebung riesige numerische Sprünge zu sein scheinen, aber sehr kleine physische Veränderungen aufweisen und sie von extremen Werten ausschließen.
- Lokales Maximum erkennen (oberer Peak) :
- Bestimmen Sie, ob die Stromkoordinate größer ist als die vorherige Koordinate (C.GT (C.Shift ()).
- Bestimmen Sie, ob die Stromkoordinate größer ist als die nächste Koordinate (C.GT (C.Shift (-1))).
- Diese beiden Bedingungen sind gleichzeitig erfüllt, was darauf hinweist, dass der aktuelle Punkt ein lokales Maximum ist.
- Lokale Mindestwerte erkennen (niedrigerer Peak) :
- Bestimmen Sie, ob die Stromkoordinate kleiner ist als die vorherige Koordinate (C.LT (C.Shift ())).
- Bestimmen Sie, ob die Stromkoordinate kleiner ist als die nächste Koordinate (C.LT (C.Shift (-1))).
- Diese beiden Bedingungen sind gleichzeitig erfüllt, was darauf hinweist, dass der aktuelle Punkt ein lokales Minimum ist.
- In Kombination mit den Bedingungen : Die oben genannten Beurteilungsbedingungen des lokalen Maximalwerts und des lokalen Mindestwerts werden logisch und betrieben mit den in Schritt 2 berechneten Differenzschwellenbedingungen. Letztendlich wird sie nur als umgekehrter Bewegungspunkt markiert, wenn der Änderungsbetrag innerhalb des Schwellenwerts liegt und die lokale Extremwertbedingung erfüllt ist.
Code -Implementierung
Hier ist ein Beispielcode, um die obige Logik mit Pandas zu implementieren:
Pandas als PD importieren IO importieren # Simulieren Sie data = "" "" Datum, Koordni 13.03.2010, 350.60172 14.03.2010.352.53184 15.03.2010,354,47785 16.03.2010,356.43861 17.03.2010,358.41273 18.03.2010, 0,39843 19.03.2010,2.39354 20.03.2010,4.39545 21.03.2010, 6.40106 22.03.2010, 8.40673 23.03.2010, 10.40828 24.03.2010,12.40098 25.03.2010, 14.37956 26.03.2010, 16.33824 13.08.2010, 166.41245 14.08.2010.167.00584 15.08.2010, 167.53165 16.08.2010, 167.98625 17.08.2010, 168.36589 18.08.2010, 168.66672 19.08.2010, 168.88494 20.08.2010, 169.01682 21.08.2010, 169.05885 22.08.2010, 169.00792 23.08.2010, 168.86147 24.08.2010, 168.61771 25.08.2010, 168.27591 26.08.2010, 167.83665 "" " df = pd.read_csv (io.stringio (data), parse_dates = ['Datum'])) # Koordinatenspalte extrahieren C = df ['Koordnen'] # Schritt 1: Berechnen Sie die absolute Differenz der benachbarten Koordinaten und setzen Sie den Schwellenwert. # Hier ist der Schwellenwert auf 1 gesetzt, was bedeutet, dass der absolute Unterschied in Koordinaten von zwei benachbarten Punkten größer als 1 ist. # Dann wird angenommen, dass dies eine Grenzspanne sein kann und nicht als extremer Punkt der umgekehrten Bewegung angesehen werden sollte. # Für die tägliche Planetenbewegung gibt es normalerweise keine wirkliche Umkehränderung von mehr als 1 Grad pro Tag. M0 = C.Diff (). ABS (). Le (1) # Schritt 2: Erfassen Sie das lokale Maximum (oberer Peak), dh der Strompunkt ist größer als die beiden Punkte vor und nach # gleichzeitig die M0-Bedingung, um sicherzustellen # Step 3: Detect the local minimum value (lower peak), that is, the current point is smaller than the two points before and after# Also combine with the m0 condition to ensure that the false minimum value is not caused by boundary spanning m2 = (c.lt(c.shift(-1)) & c.lt(c.shift())) & m0 # Schritt 4: Führen Sie die lokalen maximalen und lokalen Mindestbedingungen zusammen, um das endgültige Rückwärtsbewegungsflag DF ['Umkehrung'] = M1 | M2 Druck (df)
Probenanalyse und Ergebnisüberprüfung
Führen Sie den obigen Code aus und wir erhalten einen Datenrahmen, der die Umkehrspalte enthält. Diese Spalte gibt an, ob jeder Zeitpunkt der Ausgangspunkt der umgekehrten Bewegung durch einen booleschen Wert (True/False) ist.
Umkehrung der Datumskoordnungen 0 2010-03-13 350.60172 Falsch 1 2010-03-14 352.53184 Falsch 2 2010-03-15 354.47785 Falsch 3 2010-03-16 356.43861 Falsch 4 2010-03-17 358.41273 Falsch 5 2010-03-18 0.39843 Falsch # erfolgreich ignorierte die Grenzspanne 6 2010-03-19 2.39354 Falsch 7 2010-03-20 4.39545 Falsch 8 2010-03-21 6.40106 Falsch 9 2010-03-22 8.40673 Falsch 10 2010-03-23 10.40828 Falsch 11 2010-03-24 12.40098 Falsch 12 2010-03-25 14.37956 Falsch 13 2010-03-26 16.33824 Falsch 14 2010-08-13 166.41245 Falsch 15 2010-08-14 167.00584 Falsch 16 2010-08-15 167.53165 Falsch 17 2010-08-16 167.98625 Falsch 18 2010-08-17 168.36589 Falsch 19 2010-08-18 168.66672 Falsch 20.08.2010-08-19 168.88494 Falsch 21 2010-08-20 169.01682 Falsch 22 2010-08-21 169.05885 True # Identifizieren Sie erfolgreich den wirklichen Ausgangspunkt der Reverse Motion 23.08.08-22 169.00792 Falsch 24 2010-08-23 168.86147 Falsch 25 2010-08-24 168.61771 Falsch 26 2010-08-25 168.27591 Falsch 27 2010-08-26 167.83665 Falsch
Aus den Ausgabergebnissen können wir sehen:
- Im Abschnitt "Crash -Beispiel" (Index 0-13) ist keiner dieser Punkte für wahr gekennzeichnet, obwohl die Koordinaten von 358.41273 auf 0,39843 springen, da ihre absolute Differenz viel größer als 1 ist (358,41273 - 0,39843 ist ungefähr 358) und der M0 -Zustand wird nicht erreicht. Dies vermeidet erfolgreich Fehleinschätzungen, die durch das Grenzübergang verursacht werden.
- Im normalen Beispielabschnitt (Index 14-27) erreichten die Koordinaten am 2010-08-21 ein lokales Maximum von 169,05885 und begannen dann zu sinken. Da seine angrenzenden Unterschiede (z. B. 169,05885 - 169,01682 = 0,04203 und 169,05885 - 169.00792 = 0,05093) beide weniger als 1 sind und die lokale maximale Bedingung erfüllen, ist dieser Punkt korrekt als True gekennzeichnet.
Notizen und Best Practices
- Die Bedeutung der Schwellenwertauswahl :
- Schwellenwert = 1 im Code ist ein Schlüsselparameter, der bestimmt, wie wir zwischen "normalen" geringfügigen Änderungen von "Ausnahme" -Grandspannweiten unterscheiden.
- Dieser Schwellenwert sollte basierend auf den tatsächlichen Merkmalen der Daten, der Stichprobenfrequenz und der erwarteten maximalen normalen Änderungsrate ermittelt werden. Zum Beispiel gibt es für tägliche planetarische Koordinaten normalerweise keine wirkliche Umkehränderung von mehr als 1 Grad pro Tag, daher ist 1 Grad ein vernünftiger Startwert. Dieser Schwellenwert muss möglicherweise angepasst werden, wenn die Daten intensiver abgetastet werden oder die Bewegung schneller ist.
- Die Auswahl einer zu kleinen Schwelle kann den realen, aber etwas größeren Rückwärtspunkt verpassen. Die Auswahl einer zu großen Schwelle kann das durch die Grenzspanne verursachte Fehleinschätzung nicht effektiv filtern.
- Datenkontinuität und Sortierung :
- Stellen Sie sicher, dass die Eingabedaten in chronologischer Reihenfolge korrekt sortiert sind und dass die Zeitintervalle relativ gleichmäßig sind. Die Gültigkeit von Shift () und Diff () -Operationen hängt von dieser Struktur der Daten ab.
- Wenn in den Daten fehlende Werte oder unregelmäßige Zeitintervalle vorhanden sind, können Interpolation oder Resampling erforderlich sein.
- Allgemeinheit der Anwendungsszenarien :
- Diese Methode ist nicht auf die retrograde Erkennung der Planeten beschränkt, sondern gilt auch für jedes andere Szenario, in dem sich reale Trends in den 360-Grad-Ring (oder in regelmäßigen Zeiten) ändern, wie beispielsweise:
- Windrichtung ändert sich in den Windrichtungsdaten.
- Änderungen der Drehrichtung in den motorischen Winkelsensordaten.
- Extremwertpunkt für die Phasenerkennung im Kommunikationssystem.
- Diese Methode ist nicht auf die retrograde Erkennung der Planeten beschränkt, sondern gilt auch für jedes andere Szenario, in dem sich reale Trends in den 360-Grad-Ring (oder in regelmäßigen Zeiten) ändern, wie beispielsweise:
- Einschränkung :
- Bei extrem hochwertigen Veränderungen oder Datensparnissenheit ist es möglicherweise nicht robust genug. In diesen Fällen müssen möglicherweise komplexere kreisförmige Statistikmethoden berücksichtigt werden, oder die Winkeldaten werden vor der Analyse in kartesische Koordinaten (z. B. (COS (COS), SIN (Winkel)) umgewandelt.
Zusammenfassen
Durch die Kombination von Pandas 'Diff (), Shift () -Funktionen und sorgfältig gestalteten logischen Beurteilungen können wir die Reverse-Bewegung in 360-Grad-Ring-Koordinaten-Daten effizient und genau erkennen. Der Schlüssel besteht darin, einen absoluten Differenzschwellenwert einzuführen, der den numerischen Sprung, der durch Koordinatenumkreisung von den realen Bewegungsveränderungen verursacht wird, effektiv unterscheidet. Diese Methode kann verwendet werden, um Zeitreihendaten mit periodischen Grenzmerkmalen wie retrograde Planet usw. zu verarbeiten.
Das obige ist der detaillierte Inhalt vonVerwenden Sie Pandas, um die Reverse-Bewegung in 360-Grad-Ringkoordinatendaten genau zu erkennen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Stock Market GPT
KI-gestützte Anlageforschung für intelligentere Entscheidungen

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Führen Sie Pipinstall-Rrequirements.txt aus, um das Abhängigkeitspaket zu installieren. Es wird empfohlen, zunächst die virtuelle Umgebung zu erstellen und zu aktivieren, um Konflikte zu vermeiden, sicherzustellen, dass der Dateipfad korrekt ist und dass die PIP aktualisiert wurde, und Optionen wie-No-Deps oder -User, um das Installationsverhalten bei Bedarf anzupassen.

In diesem Tutorial wird beschrieben, wie der PEFT LORA -Adapter mit dem Basismodell effizient zusammengeführt werden kann, um ein völlig unabhängiges Modell zu generieren. Der Artikel weist darauf hin, dass es falsch ist, Transformatoren direkt zu verwenden. Automodel zum Laden des Adapters und zum manuellen Zusammenführen der Gewichte und bietet den richtigen Prozess zur Verwendung der Methode merge_and_unload in der PEFT -Bibliothek. Darüber hinaus unterstreicht das Tutorial auch die Bedeutung des Umgangs mit Word -Segmentern und diskutiert die Kompatibilität und Lösungen von PEFT -Versionen.

Python ist ein einfaches und leistungsstarkes Testwerkzeug in Python. Nach der Installation werden Testdateien automatisch gemäß den Namensregeln ermittelt. Schreiben Sie eine Funktion, die mit Test_ für Assertionstests beginnt, verwenden Sie @PyTest.Fixure, um wiederverwendbare Testdaten zu erstellen, die Ausnahmen über pyTest.raises zu überprüfen, unterstützt die laufenden Tests und mehrere Befehlszeilenoptionen und verbessert die Testeneffizienz.

TheArgParSemoduleiTherecommendedwaytoHandleCommand-Lineargumentesinpython, das Robustparsing, Typevalidation, Helpsages, AndersHandling berücksichtigt; usesys.argvForSimpecaseSeRequiringMinimalsetup.

Dieser Artikel zielt darauf ab, das gemeinsame Problem der unzureichenden Berechnungsgenauigkeit der schwimmenden Punktzahlen in Python und Numpy zu untersuchen, und erklärt, dass seine Grundursache in der Darstellungsbeschränkung der Standardzahlen der 64-Bit-Schwimmpunkte liegt. Für Computerszenarien, die eine höhere Genauigkeit erfordern, wird der Artikel die Nutzungsmethoden, -funktionen und anwendbaren Szenarien von mathematischen Bibliotheken mit hoher Präzision einführen und vergleichen

Die aktuelle Zeit kann in Python über das DateTime -Modul implementiert werden. 1. Verwenden Sie datetime.now (), um die lokale aktuelle Zeit zu erhalten, 2. verwenden Strftime ("%y-%M-%d%H:%m:%s"), um das Ausgabejahr, den Monat, den Tag, die Stunde, die Minute und die zweite, zu formatieren. UTCNOW () und tägliche Operationen können die Anforderungen erfüllen, indem datetime.now () mit formatierten Zeichenfolgen kombiniert werden.

PYPDF2, PDFPLUMBER und FPDF sind die Kernbibliotheken für Python, um PDF zu verarbeiten. Verwenden Sie PYPDF2, um die Textextraktion, das Zusammenführen, die Aufteilung und die Verschlüsselung durchzuführen, z. PDFPLUMBER eignet sich besser zum Aufbewahren von Layout -Textextraktion und Tabellenerkennung und unterstützt extract_tables (), um Tabellendaten genau zu erfassen. FPDF (empfohlene FPDF2) wird zum Generieren von PDF verwendet, und es werden Dokumente erstellt und über add_page (), set_font () und cell () ausgegeben. Beim Zusammenführen von PDFs kann die append () -Methode von PDFWriter mehrere Dateien integrieren

Importieren Sie@contextManagerfromContextLibanddefinaGeneratorFunctionThatyieldSexactlyonce, whercodeBeforyieldactsasenterandCodeafteryield (vorzugsweise infinal) actsas __exit __. 2.UsetheFunctionInaThstatement, wherheided ValuesieScessable
