Table des matières
Introduction: défis dans les données de coordonnées en anneau
Méthode de base: reconnaissance de mouvement inverse basé sur les pandas
Implémentation de code
Exemple d'analyse et vérification des résultats
Notes et meilleures pratiques
Résumer
Maison développement back-end Tutoriel Python Utilisez des pandas pour détecter avec précision le mouvement inversé dans les données de coordonnées à 360 degrés

Utilisez des pandas pour détecter avec précision le mouvement inversé dans les données de coordonnées à 360 degrés

Sep 13, 2025 pm 07:21 PM

Utilisez des pandas pour détecter avec précision le mouvement inversé dans les données de coordonnées annulaires à 360 degrés

Ce didacticiel explique comment utiliser les pandas pour détecter efficacement et avec précision le mouvement inversé ou les extrêmes locaux dans des données de coordonnées annulaires à 360 degrés. Compte tenu du éventuel problème d'inversion fausse des données de coordonnées à la limite de 0/360 degrés, nous proposons une stratégie qui combine le seuil de différence et le jugement de valeur extrême locale. Cette méthode évite efficacement les erreurs de jugement causées par une orbite des coordonnées, garantit une identification précise des changements dans les tendances réelles de mouvement et convient particulièrement aux scènes telles que le planétaire rétrograde.

Introduction: défis dans les données de coordonnées en anneau

Lors du traitement de certains types de données, tels que la position d'un corps céleste sur l'éclipse, la lecture d'un capteur d'angle ou la phase d'un signal périodique, nous rencontrons souvent un système de coordonnées à 360 degrés. La caractéristique de ce type de coordonnées est que lorsque la valeur atteint 360 degrés, elle "enroulera" à 0 degrés, ou lorsqu'elle diminuera de 0 degrés à des valeurs négatives, elle "recouvre" à 359 degrés (c'est-à-dire les opérations Modulo 360).

Prenant l'exemple du comportement inverse planétaire, les coordonnées écliptiques de la planète continuent de changer à 360 degrés. Lorsqu'une planète passe de directement à rétrograde, ses coordonnées atteindront un maximum local et commencent ensuite à diminuer; Lorsqu'une planète passe de directement à directe, ses coordonnées atteindront un minimum local, puis commencent à augmenter. Dans un système de coordonnées linéaires conventionnel, nous pouvons identifier ces mouvements inverses en détectant des points extrêmes locaux (comme l'utilisation de Scipy.Signal.arGrelextrema).

Cependant, le système de coordonnées de la bague à 360 degrés présente un défi spécial: il s'agit physiquement d'un mouvement vers l'avant continu lorsque les coordonnées de la planète continuent d'augmenter d'environ 350 degrés, couvrant 360 degrés (c'est-à-dire entrant dans la zone à 0 degrés), puis continue d'augmenter. Mais d'un point de vue numérique, par exemple, de 358 degrés à 0 degrés, il y aura une baisse nette. Si l'algorithme de détection de valeur extrême traditionnelle est directement appliqué, ce phénomène qui traverse la frontière peut facilement être mal jugé comme point de départ d'un mouvement inversé, résultant en un résultat "faux positif".

Considérez les données "Exemple de crash" suivant, qui montre le processus d'écart de coordonnées de 358 degrés à 0 degrés:

 Coordonnées de date 17.03.2010 358.41273 # Ce n'est pas le début du mouvement inversé 18.03.2010 0.39843 # Il traverse la frontière 19.03.2010 2.39354

Dans cet exemple, la planète avance en continu, mais en raison de la nature en orbite des coordonnées, une observation directe de la valeur numérique révèlera un "déclin" de 358 à 0, ce qui peut être confondu avec un maximum local. Nous avons besoin d'un moyen de distinguer cette étendue limite du véritable mouvement inversé.

Méthode de base: reconnaissance de mouvement inverse basé sur les pandas

Pour résoudre le problème des erreurs de jugement dans les données de coordonnées des anneaux à 360 degrés, nous pouvons utiliser de puissantes capacités de traitement des données de Pandas pour combiner une stratégie clé: en définissant un seuil de différence absolue pour filtrer les «faux» modifications causées par une durée limite à 360 degrés. Le jugement de valeur extrême n'est pris en compte que lorsque la quantité de variation entre les points continue est dans une petite portée raisonnable.

Les étapes spécifiques sont les suivantes:

  1. Préparation des données : organiser la date et coordonner les données dans Pandas DataFrame.
  2. Calculez la différence et définissez le seuil :
    • Utilisez la méthode diff () pour calculer la différence entre les coordonnées adjacentes.
    • Prenez la valeur absolue de la différence ABS ().
    • Définissez un seuil (par exemple, 1 degré) pour filtrer les points de données dont la différence absolue est inférieure ou égale à ce seuil. Cette étape est le noyau, qui peut identifier efficacement des points qui semblent être d'énormes sauts numériques en raison de l'environnement à 360 degrés, mais qui ont de très petits changements physiques, et les exclure des valeurs extrêmes.
  3. Détecter le maximum local (pic supérieur) :
    • Déterminez si la coordonnée actuelle est supérieure à la coordonnée précédente (C.GT (C.Shift ())).
    • Déterminez si la coordonnée actuelle est supérieure à la coordonnée suivante (C.GT (C.Shift (-1))).
    • Ces deux conditions sont remplies en même temps, indiquant que le point de courant est un maximum local.
  4. Détecter les valeurs minimales locales (pic inférieur) :
    • Déterminez si la coordonnée de courant est plus petite que la coordonnée précédente (C.Lt (C.Shift ())).
    • Déterminez si la coordonnée actuelle est plus petite que la coordonnée suivante (C.LT (C.Shift (-1))).
    • Ces deux conditions sont remplies en même temps, indiquant que le point actuel est un minimum local.
  5. Combiné avec les conditions : les conditions de jugement susmentionnées de la valeur maximale locale et de la valeur minimale locale sont logiquement et fonctionnaient avec les conditions de seuil de différence calculées à l'étape 2. En fin de compte, il est marqué comme un point de mouvement inversé uniquement lorsque le montant de la modification est dans le seuil et la condition de valeur extrême locale est remplie.

Implémentation de code

Voici un exemple de code pour implémenter la logique ci-dessus à l'aide de pandas:

 Importer des pandas en tant que PD
Importer IO

# simule data data = "" "
Date, coords
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 = ['date'])

# Extraire la colonne des coordonnées C = df ['coords']

# Étape 1: Calculez la différence absolue des coordonnées adjacentes et définissez le seuil.
# Ici, le seuil est fixé à 1, ce qui signifie que si la différence absolue dans les coordonnées de deux points adjacents est supérieur à 1,
# Ensuite, on pense que cela peut être une durée limite et ne doit pas être considéré comme un point extrême de mouvement inversé.
# Pour le mouvement planétaire quotidien, il n'y a généralement pas de véritable changement inversé de plus d'un degré en une journée.
M0 = C.Diff (). ABS (). Le (1)

# Étape 2: détecter le maximum local (pic supérieur), c'est-à-dire que le point de courant est supérieur aux deux points avant et après # en même temps, combinez la condition M0 pour s'assurer que la valeur maximale fausse M1 n'est pas causée par la limite étendue M1 = (C.GT (C.Shift (-1)) & c.gt (C.Shift ()) & M0

# Étape 3: détecter la valeur minimale locale (pic inférieur), c'est-à-dire que le point de courant est plus petit que les deux points avant et après # se combinent également avec la condition M0 pour garantir que la valeur minimale fausse n'est pas causée par la limite étendue M2 = (C.LT (C.Shift (-1)) & C.LT (C.Shift ()) & M0

# Étape 4: fusionnez les conditions minimales maximales et locales locales pour obtenir l'indicateur de mouvement inversé final DF ['inversion'] = M1 | M2

Imprimer (DF)

Exemple d'analyse et vérification des résultats

Exécutez le code ci-dessus et nous obtiendrons un DataFrame contenant la colonne d'inversion. Cette colonne indique si chaque point dans le temps est le point de départ du mouvement inversé par une valeur booléenne (vrai / false).

 REVERSION DES CORDS DATE
0 2010-03-13 350.60172 Faux
1 2010-03-14 352.53184 Faux
2 2010-03-15 354.47785 Faux 2010
3 2010-03-16 356.43861 Faux 2010
4 2010-03-17 358.41273 Faux 2010
5 2010-03-18 0.39843 FAUX # # SPEAU DE BONDE IGNORTS SUCTOR
7 2010-03-20 4.39545 Faux
8 2010-03-21 6.40106 Faux
9 2010-03-22 8.40673 Faux
10 2010-03-23 ​​10.40828 Faux
11 2010-03-24 12.40098 Faux
12 2010-03-25 14.37956 Faux
13 2010-03-26 16.33824 Faux
14 2010-08-13 166.41245 Faux
15 2010-08-14 167.00584 Faux
16 2010-08-15 167.53165 Faux
17 2010-08-16 167.98625 Faux 2010
18 2010-08-17 168.36589 faux
19 2010-08-18 168.66672 Faux
20 2010-08-19 168.88494 faux
21 2010-08-20 169.01682 Faux
22 2010-08-21 169.05885 Vrai # Identifiez avec succès le point de départ réel du mouvement inversé 23 2010-08-22 169.00792 FALSE
24 2010-08-23 168.86147 Faux 2010
25 2010-08-24 168.61771 Faux 2010
26 2010-08-25 168.27591 Faux 2010
27 2010-08-26 167.83665 Faux

À partir des résultats de sortie, nous pouvons voir:

  • Dans la section "Exemple de crash" (index 0-13), aucun de ces points n'est marqué vrai malgré les coordonnées passant de 358,41273 à 0,39843 car leur différence absolue est bien supérieure à 1 (358,41273 - 0,39843 est approximativement égale à 358), et la condition M0 n'est pas remplie. Cela évite avec succès les erreurs de jugement causées par le passage aux frontières.
  • Dans l'exemple normal (index 14-27), les coordonnées ont atteint un maximum local de 169.05885 le 2010-08-21, puis ont commencé à décliner. Étant donné que ses différences adjacentes (par exemple 169.05885 - 169.01682 = 0,04203 et 169.05885 - 169.00792 = 0,05093) sont toutes deux inférieures à 1 et répond à l'état maximum local, ce point est correctement marqué comme vrai.

Notes et meilleures pratiques

  1. L'importance de la sélection des seuils :
    • Threshold = 1 dans le code est un paramètre clé qui détermine la façon dont nous distinguons les changements mineurs "normaux" des étendues de limite "exception".
    • Ce seuil doit être déterminé sur la base des caractéristiques réelles des données, de la fréquence d'échantillonnage et du taux de variation normal maximum attendu. Par exemple, pour les coordonnées planétaires quotidiennes, il n'y a généralement pas de véritable changement inverse de plus de 1 degré en une journée, donc 1 degré est une valeur de départ raisonnable. Ce seuil peut devoir être ajusté si les données sont échantillonnées plus intensives ou si le mouvement est plus rapide.
    • Choisir un seuil trop petit peut manquer le point inverse réel mais légèrement plus grand; Le choix d'un seuil trop grand peut ne pas filtrer efficacement la mauvaise évaluation provoquée par une durée limite.
  2. Continuité et tri des données :
    • Assurez-vous que les données d'entrée sont triées correctement dans l'ordre chronologique et que les intervalles de temps sont relativement uniformes. La validité des opérations Shift () et Diff () dépend de cette structure des données.
    • S'il y a des valeurs manquantes ou des intervalles de temps irréguliers dans les données, l'interpolation ou le rééchantillonnage peut être nécessaire.
  3. Généralité des scénarios d'application :
    • Cette méthode ne se limite pas à la détection rétrograde planétaire, mais s'applique également à tout autre scénario où des changements de tendance réels dans les données annulaires à 360 degrés (ou tout périodique) sont détectées, telles que:
      • La direction du vent change dans les données de direction du vent.
      • Modifications de la direction de rotation dans les données du capteur d'angle du moteur.
      • Point de valeur extrême pour la détection de phase dans le système de communication.
  4. Limitation :
    • Pour les modifications extrêmement élevés ou la rareté des données, le simple fait de s'appuyer sur Diff () et les seuils fixes peut ne pas être suffisamment robuste. Dans ces cas, des méthodes de statistiques circulaires plus complexes peuvent devoir être prises en compte, ou les données d'angle sont converties en coordonnées cartésiennes (par exemple (COS (angle), sin (angle))) avant analyse.

Résumer

En combinant les fonctions de Pandas (), Shift () et un jugement logique soigneusement conçu, nous pouvons détecter efficacement et avec précision le mouvement inversé dans les données de coordonnées annulaires à 360 degrés. La clé est d'introduire un seuil de différence absolue, qui distingue efficacement le saut numérique causé par l'encerclement des coordonnées des changements de tendance de mouvement réels. Cette méthode peut être utilisée pour traiter les données de séries chronologiques avec des caractéristiques limites périodiques telles que la planète rétrograde, etc.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Stock Market GPT

Stock Market GPT

Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Comment installer des packages à partir d'un fichier exigence.txt dans Python Comment installer des packages à partir d'un fichier exigence.txt dans Python Sep 18, 2025 am 04:24 AM

Exécutez pipinstall-rrequirements.txt pour installer le package de dépendance. Il est recommandé de créer et d'activer l'environnement virtuel d'abord pour éviter les conflits, s'assurer que le chemin du fichier est correct et que le PIP a été mis à jour et utiliser des options telles que --No-Deps ou --User pour ajuster le comportement d'installation si nécessaire.

Stratégie de fusion efficace de l'adaptateur et du modèle de base PEFT LORA Stratégie de fusion efficace de l'adaptateur et du modèle de base PEFT LORA Sep 19, 2025 pm 05:12 PM

Ce tutoriel détaille comment fusionner efficacement l'adaptateur PEFT LORA avec le modèle de base pour générer un modèle complètement indépendant. L'article souligne qu'il est faux d'utiliser directement Transformers.Automodel pour charger l'adaptateur et fusionner manuellement les poids, et fournit le processus correct pour utiliser la méthode Merge_and_unload dans la bibliothèque PEFT. De plus, le tutoriel souligne également l'importance de traiter les segments de mots et discute des problèmes et des solutions de compatibilité des versions de PEFT.

Comment tester le code Python avec Pytest Comment tester le code Python avec Pytest Sep 20, 2025 am 12:35 AM

Python est un outil de test simple et puissant dans Python. Après l'installation, les fichiers de test sont automatiquement découverts en fonction des règles de dénomination. Écrivez une fonction commençant par test_ pour les tests d'assurance, utilisez @ pytest.fixture pour créer des données de test réutilisables, vérifiez les exceptions via PyTest.Rais, prend en charge l'exécution de tests spécifiés et plusieurs options de ligne de commande et améliore l'efficacité des tests.

Comment gérer les arguments de ligne de commande dans Python Comment gérer les arguments de ligne de commande dans Python Sep 21, 2025 am 03:49 AM

TheargParsemoduleisthereComMendwaytoHandleCommand-lineargumentsInpython, fournissantRobustParsing, Typevalidation, HelpMessages, AnderrorHling; usys.argvforsimplécasesrequiringminimalsepup.

Problème de précision du nombre de points flottants dans Python et son schéma de calcul de haute précision Problème de précision du nombre de points flottants dans Python et son schéma de calcul de haute précision Sep 19, 2025 pm 05:57 PM

Cet article vise à explorer le problème commun de la précision de calcul insuffisante des nombres de points flottants dans Python et Numpy, et explique que sa cause profonde réside dans la limitation de représentation des nombres de points flottants 64 bits standard. Pour les scénarios informatiques qui nécessitent une précision plus élevée, l'article introduira et comparera les méthodes d'utilisation, les fonctionnalités et les scénarios applicables de bibliothèques mathématiques de haute précision telles que MPMATH, SYMPY et GMPY pour aider les lecteurs à choisir les bons outils pour résoudre les besoins de précision complexe.

Comment travailler avec les fichiers PDF dans Python Comment travailler avec les fichiers PDF dans Python Sep 20, 2025 am 04:44 AM

PYPDF2, PDFPLUMBER et FPDF sont les bibliothèques de base pour Python pour traiter PDF. Utilisez le PYPDF2 pour effectuer l'extraction de texte, la fusion, la division et le chiffrement, tels que la lecture de la page via Pdfreader et l'appel extract_text () pour obtenir du contenu; PDFPLUMBER convient plus pour conserver l'extraction de texte de mise en page et la reconnaissance de la table, et prend en charge extract_tables () pour capturer avec précision les données de table; FPDF (FPDF2 recommandé) est utilisé pour générer du PDF, et les documents sont construits et sorties via add_page (), set_font () et cellule (). Lors de la fusion des PDF

Python Obtenez l'exemple de l'heure actuelle Python Obtenez l'exemple de l'heure actuelle Sep 15, 2025 am 02:32 AM

L'obtention de l'heure actuelle peut être implémentée dans Python via le module DateTime. 1. Utilisez dateTime.now () pour obtenir l'heure actuelle locale, 2. Utilisez le strftime ("% y-% m-% d% h:% m:% s") pour formater l'année de sortie, le mois, le jour, l'heure, la minute et la seconde, 3. UTCNow () et les opérations quotidiennes peuvent répondre aux besoins en combinant DateTime.now () avec des chaînes formatées.

Comment pouvez-vous créer un gestionnaire de contexte en utilisant le décorateur @contextManager dans Python? Comment pouvez-vous créer un gestionnaire de contexte en utilisant le décorateur @contextManager dans Python? Sep 20, 2025 am 04:50 AM

Importer @ contextManagerfromContextLibandDeFineAgeneratorFonctionnement toTyieldSexactlyOnce, où les actes de championnalsAnterAndCodeLifteryiel

See all articles