Jadual Kandungan
Pengenalan: Cabaran dalam data koordinat cincin
Kaedah Teras: Pengiktirafan Pergerakan Berbalik Berasaskan Pandas
Pelaksanaan kod
Analisis sampel dan pengesahan hasil
Nota dan amalan terbaik
Meringkaskan
Rumah pembangunan bahagian belakang Tutorial Python Gunakan panda untuk mengesan gerakan terbalik dengan tepat dalam data koordinat cincin 360 darjah

Gunakan panda untuk mengesan gerakan terbalik dengan tepat dalam data koordinat cincin 360 darjah

Sep 13, 2025 pm 07:21 PM

Gunakan panda untuk mengesan gerakan terbalik dengan tepat dalam data koordinat anulus 360 darjah

Tutorial ini menerangkan cara menggunakan panda untuk mengesan gerakan terbalik secara efisien dan tepat dalam data koordinat anulus 360 darjah. Memandangkan masalah penyongsangan palsu yang mungkin bagi data koordinat di sempadan 0/360 darjah, kami mencadangkan satu strategi yang menggabungkan ambang perbezaan dan penghakiman nilai ekstrem tempatan. Kaedah ini secara berkesan menghindari salah laku yang disebabkan oleh menyelaras mengorbit, memastikan pengenalpastian tepat perubahan dalam trend pergerakan sebenar, dan sangat sesuai untuk adegan seperti retrograde planet.

Pengenalan: Cabaran dalam data koordinat cincin

Apabila memproses jenis data tertentu, seperti kedudukan badan langit pada gerhana, bacaan sensor sudut atau fasa isyarat berkala, kita sering menghadapi sistem koordinat cincin 360 darjah. Ciri -ciri koordinat jenis ini ialah apabila nilai mencapai 360 darjah, ia akan "kembali" hingga 0 darjah, atau apabila ia berkurangan dari 0 darjah kepada nilai negatif, ia akan "kembali" hingga 359 darjah (iaitu, Modulo 360 operasi).

Mengambil contoh tingkah laku songsang planet, koordinat ekliptik planet terus berubah dalam 360 darjah. Apabila planet berubah dari langsung ke retrograde, koordinatnya akan mencapai maksimum tempatan dan kemudian mula berkurangan; Apabila planet berubah dari langsung ke mengarahkan, koordinatnya akan mencapai minimum tempatan dan kemudian mula meningkat. Dalam sistem koordinat linear konvensional, kita dapat mengenal pasti gerakan terbalik ini dengan mengesan titik ekstrem tempatan (seperti menggunakan scipy.signal.argrelextrema).

Walau bagaimanapun, sistem koordinat cincin 360 darjah memberikan cabaran khas: ini secara fizikal adalah gerakan ke hadapan yang berterusan apabila koordinat planet terus meningkat dari sekitar 350 darjah, merangkumi 360 darjah (iaitu memasuki kawasan 0 darjah), dan kemudian terus meningkat. Tetapi dari perspektif berangka, contohnya, dari 358 darjah hingga 0 darjah, akan ada kejatuhan tajam. Sekiranya algoritma pengesanan nilai ekstrem tradisional digunakan secara langsung, fenomena ini yang melintasi sempadan dengan mudah boleh disalahgunakan sebagai titik permulaan gerakan terbalik, menghasilkan hasil "positif positif".

Pertimbangkan data "contoh kemalangan" berikut, yang menunjukkan proses merangkumi koordinat dari 358 darjah hingga 0 darjah:

 Koordinat Tarikh 17.03.2010 358.41273 # Ini bukan permulaan gerakan terbalik 18.03.2010 0.39843 # ia hanya melintasi sempadan 19.03.2010 2.39354

Dalam contoh ini, planet ini sebenarnya bergerak ke hadapan secara berterusan, tetapi disebabkan oleh sifat koordinat yang mengorbit, pemerhatian langsung nilai berangka akan mendedahkan "penurunan" dari 358 hingga 0, yang mungkin disalah anggap maksimum tempatan. Kami memerlukan cara untuk membezakan rentang sempadan ini dari gerakan terbalik yang benar.

Kaedah Teras: Pengiktirafan Pergerakan Berbalik Berasaskan Pandas

Untuk menyelesaikan masalah salah dalam data koordinat cincin 360 darjah, kita boleh menggunakan keupayaan pemprosesan data yang kuat untuk menggabungkan strategi utama: dengan menetapkan ambang perbezaan mutlak untuk menyaring perubahan "palsu" yang disebabkan oleh rentang sempadan 360 darjah. Penghakiman nilai yang melampau hanya dipertimbangkan apabila jumlah perubahan antara titik berterusan berada dalam julat kecil yang munasabah.

Langkah -langkah tertentu adalah seperti berikut:

  1. Penyediaan Data : Mengatur tarikh dan menyelaraskan data ke dalam data Pandas DataFrame.
  2. Kirakan perbezaan dan tetapkan ambang :
    • Gunakan kaedah diff () untuk mengira perbezaan antara koordinat bersebelahan.
    • Ambil nilai mutlak perbezaan abs ().
    • Tetapkan ambang (contohnya, 1 darjah) untuk menapis titik data yang perbezaan mutlaknya kurang daripada atau sama dengan ambang itu. Langkah ini adalah teras, yang dapat mengenal pasti mata-mata yang kelihatannya menjadi lompatan berangka besar disebabkan oleh persekitaran 360 darjah, tetapi mempunyai perubahan fizikal yang sangat kecil, dan tidak termasuk mereka dari nilai-nilai yang melampau.
  3. Mengesan maksimum tempatan (puncak atas) :
    • Tentukan sama ada koordinat semasa lebih besar daripada koordinat sebelumnya (c.gt (c.shift ())).
    • Tentukan sama ada koordinat semasa lebih besar daripada koordinat seterusnya (c.gt (c.shift (-1))).
    • Kedua -dua syarat ini berpuas hati pada masa yang sama, menunjukkan bahawa titik semasa adalah maksimum tempatan.
  4. Mengesan nilai minimum tempatan (puncak yang lebih rendah) :
    • Tentukan sama ada koordinat semasa lebih kecil daripada koordinat sebelumnya (c.lt (c.shift ())).
    • Tentukan sama ada koordinat semasa lebih kecil daripada koordinat seterusnya (c.lt (c.shift (-1))).
    • Kedua -dua syarat ini berpuas hati pada masa yang sama, menunjukkan bahawa titik semasa adalah minimum tempatan.
  5. Digabungkan dengan syarat-syarat : Keadaan penghakiman yang disebutkan di atas nilai maksimum tempatan dan nilai minimum tempatan secara logik dan dikendalikan dengan syarat ambang perbezaan yang dikira pada langkah 2. Akhirnya, ia ditandakan sebagai titik gerakan terbalik hanya apabila jumlah perubahan berada dalam ambang dan keadaan nilai ekstrem tempatan dipenuhi.

Pelaksanaan kod

Berikut adalah kod sampel untuk melaksanakan logik di atas menggunakan panda:

 Import Pandas sebagai PD
Import io

# Simulasi data data = "" "
Tarikh, koordinasi
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'])

# Ekstrak Koordinat Kolum C = df ['Coords']

# Langkah 1: Kirakan perbezaan mutlak koordinat bersebelahan dan tetapkan ambang.
# Di sini ambang ditetapkan kepada 1, yang bermaksud bahawa jika perbezaan mutlak dalam koordinat dua titik bersebelahan lebih besar dari 1,
# Kemudian dipercayai bahawa ini mungkin rentang sempadan dan tidak boleh dianggap sebagai titik gerakan terbalik yang melampau.
# Untuk gerakan planet harian, biasanya tidak ada perubahan terbalik sebenar lebih dari 1 darjah dalam sehari.
m0 = c.diff (). abs (). le (1)

# Langkah 2: Mengesan maksimum tempatan (puncak atas), iaitu, titik semasa lebih besar daripada dua mata sebelum dan selepas # pada masa yang sama, menggabungkan keadaan M0 untuk memastikan bahawa nilai maksimum palsu M1 tidak disebabkan oleh sempadan yang merangkumi M1 = (C.GT (C.Shift (-1))

# Langkah 3: Mengesan nilai minimum tempatan (puncak bawah), iaitu, titik semasa lebih kecil daripada dua mata sebelum dan selepas# juga bergabung dengan keadaan M0 untuk memastikan nilai minimum palsu tidak disebabkan oleh sempadan yang merangkumi m2 = (c.shift (-1))

# Langkah 4: Gabungkan keadaan minimum maksimum dan tempatan tempatan untuk mendapatkan bendera gerakan terbalik akhir df ['pembalikan'] = m1 | m2

Cetak (DF)

Analisis sampel dan pengesahan hasil

Jalankan kod di atas dan kami akan mendapat DataFrame yang mengandungi lajur pembalikan. Lajur ini menunjukkan sama ada setiap titik masa adalah titik permulaan gerakan terbalik dengan nilai boolean (benar/palsu).

 Tarikh koordinasi pembalikan
0 2010-03-13 350.60172 Palsu
1 2010-03-14 352.53184 Palsu
2 2010-03-15 354.47785 Palsu
3 2010-03-16 356.43861 Palsu
4 2010-03-17 358.41273 Palsu
5 2010-03-18 0.39843 FALSE # Berjaya diabaikan Sempadan Span 6 2010-03-19 2.39354 Palsu
7 2010-03-20 4.39545 Palsu
8 2010-03-21 6.40106 Palsu
9 2010-03-22 8.40673 Palsu
10 2010-03-23 ​​10.40828 Palsu
11 2010-03-24 12.40098 Palsu
12 2010-03-25 14.37956 Palsu
13 2010-03-26 16.33824 Palsu
14 2010-08-13 166.41245 Palsu
15 2010-08-14 167.00584 Palsu
16 2010-08-15 167.53165 Palsu
17 2010-08-16 167.98625 Palsu
18 2010-08-17 168.36589 Palsu
19 2010-08-18 168.66672 Palsu
20 2010-08-19 168.88494 Palsu
21 2010-08-20 169.01682 Palsu
22 2010-08-21 169.05885 benar # berjaya mengenal pasti titik permulaan sebenar gerakan terbalik 23 2010-08-22 169.00792 False
24 2010-08-23 168.86147 Palsu
25 2010-08-24 168.61771 Palsu
26 2010-08-25 168.27591 Palsu
27 2010-08-26 167.83665 Palsu

Dari hasil output, kita dapat melihat:

  • Dalam bahagian "Contoh Crash" (Indeks 0-13), tiada satu pun dari titik -titik ini ditandakan benar walaupun koordinat melompat dari 358.41273 hingga 0.39843 kerana perbezaan mutlaknya jauh lebih besar daripada 1 (358.41273 - 0.39843 adalah kira -kira sama dengan 358), dan keadaan M0 tidak dipenuhi. Ini berjaya menghindari kesalahan yang disebabkan oleh persimpangan sempadan.
  • Dalam bahagian contoh biasa (Indeks 14-27), koordinat mencapai maksimum tempatan 169.05885 pada 2010-08-21, dan kemudian mula menurun. Oleh kerana perbezaannya yang bersebelahan (mis. 169.05885 - 169.01682 = 0.04203 dan 169.05885 - 169.00792 = 0.05093) kedua -duanya kurang daripada 1 dan memenuhi keadaan maksimum tempatan, titik ini ditandakan dengan betul sebagai benar.

Nota dan amalan terbaik

  1. Kepentingan pemilihan ambang :
    • Ambang = 1 dalam kod adalah parameter utama yang menentukan bagaimana kita membezakan antara perubahan kecil "biasa" dari "pengecualian" sempadan.
    • Ambang ini harus ditentukan berdasarkan ciri -ciri sebenar data, kekerapan pensampelan dan kadar perubahan normal maksimum yang dijangkakan. Sebagai contoh, untuk koordinat planet harian, biasanya tidak ada perubahan terbalik sebenar lebih daripada 1 darjah dalam sehari, jadi 1 darjah adalah nilai permulaan yang munasabah. Ambang ini mungkin perlu diselaraskan jika data dicontohi lebih intensif atau pergerakan lebih cepat.
    • Memilih ambang yang terlalu kecil mungkin terlepas titik terbalik yang nyata tetapi sedikit lebih besar; Memilih ambang yang terlalu besar mungkin tidak menapis secara tidak sengaja yang disebabkan oleh rentang sempadan.
  2. Kesinambungan Data dan Susun :
    • Pastikan data input disusun dengan betul dalam susunan kronologi dan bahawa selang masa agak seragam. Kesahan peralihan () dan diff () operasi bergantung kepada struktur data ini.
    • Sekiranya terdapat nilai yang hilang atau selang masa yang tidak teratur dalam data, interpolasi atau resampling mungkin diperlukan.
  3. Generalisasi senario aplikasi :
    • Kaedah ini tidak terhad kepada pengesanan retrograde planet, tetapi juga terpakai kepada sebarang senario lain di mana perubahan trend sebenar dalam data 360 darjah anular (atau mana-mana berkala) dikesan, seperti:
      • Arah angin berubah dalam data arah angin.
      • Perubahan dalam arah putaran dalam data sensor sudut motor.
      • Titik nilai yang melampau untuk pengesanan fasa dalam sistem komunikasi.
  4. Batasan :
    • Untuk perubahan kadar yang sangat tinggi atau kekasaran data, hanya bergantung pada diff () dan ambang tetap mungkin tidak cukup kuat. Dalam kes ini, kaedah statistik pekeliling yang lebih kompleks mungkin perlu dipertimbangkan, atau data sudut ditukar menjadi koordinat Cartesian (mis. (Cos (sudut), sin (sudut))) sebelum analisis.

Meringkaskan

Dengan menggabungkan fungsi Pandas (), peralihan () dan penghakiman logik yang direka dengan teliti, kita dapat dengan cekap dan tepat mengesan gerakan terbalik dalam data koordinat anulus 360 darjah. Kuncinya adalah untuk memperkenalkan ambang perbezaan mutlak, yang secara berkesan membezakan lompatan berangka yang disebabkan oleh pengepungan koordinat dari perubahan trend pergerakan sebenar. Kaedah ini boleh digunakan untuk memproses data siri masa dengan ciri -ciri sempadan berkala seperti planet retrograde, dll.

Atas ialah kandungan terperinci Gunakan panda untuk mengesan gerakan terbalik dengan tepat dalam data koordinat cincin 360 darjah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Stock Market GPT

Stock Market GPT

Penyelidikan pelaburan dikuasakan AI untuk keputusan yang lebih bijak

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Cara memasang pakej dari fail keperluan.txt di python Cara memasang pakej dari fail keperluan.txt di python Sep 18, 2025 am 04:24 AM

Jalankan pipinstall-rrequirements.txt untuk memasang pakej ketergantungan. Adalah disyorkan untuk mencipta dan mengaktifkan persekitaran maya terlebih dahulu untuk mengelakkan konflik, memastikan bahawa laluan fail adalah betul dan PIP telah dikemas kini, dan menggunakan pilihan seperti-tidak-deps atau-pengguna untuk menyesuaikan tingkah laku pemasangan jika perlu.

Strategi penggabungan yang cekap bagi penyesuai dan model asas PEFT Lora Strategi penggabungan yang cekap bagi penyesuai dan model asas PEFT Lora Sep 19, 2025 pm 05:12 PM

Tutorial ini memperincikan bagaimana untuk menggabungkan penyesuai LORA PEFT dengan model asas untuk menghasilkan model yang sepenuhnya bebas. Artikel ini menunjukkan bahawa adalah salah untuk menggunakan transformer.automodel secara langsung untuk memuatkan penyesuai dan menggabungkan berat secara manual, dan menyediakan proses yang betul untuk menggunakan kaedah Merge_and_unload di perpustakaan PEFT. Di samping itu, tutorial juga menekankan pentingnya menangani segmen perkataan dan membincangkan isu dan penyelesaian keserasian versi PEFT.

Cara Menguji Kod Python dengan Pytest Cara Menguji Kod Python dengan Pytest Sep 20, 2025 am 12:35 AM

Python adalah alat ujian yang mudah dan berkuasa di Python. Selepas pemasangan, fail ujian ditemui secara automatik mengikut peraturan penamaan. Tulis fungsi bermula dengan ujian untuk ujian pernyataan, gunakan @pytest.fixture untuk membuat data ujian yang boleh diguna semula, mengesahkan pengecualian melalui pytest.raises, menyokong menjalankan ujian tertentu dan pelbagai pilihan baris arahan, dan meningkatkan kecekapan ujian.

Cara Mengendalikan Argumen Barisan Perintah di Python Cara Mengendalikan Argumen Barisan Perintah di Python Sep 21, 2025 am 03:49 AM

TheargParsemoduleisThereMendingWayOhandLecommand-lineargumentsinpython, menyediakan robrobustparsing, typevalidation, helpmessages, anderrorhandling; usesy.argvforsimplecasesrequiringminiminalsetup.

Masalah Ketepatan Nombor Titik Terapung di Python dan Skim Pengiraan Ketepatan Tinggi Masalah Ketepatan Nombor Titik Terapung di Python dan Skim Pengiraan Ketepatan Tinggi Sep 19, 2025 pm 05:57 PM

Artikel ini bertujuan untuk meneroka masalah biasa ketepatan pengiraan yang tidak mencukupi bagi nombor titik terapung di Python dan Numpy, dan menjelaskan bahawa punca akarnya terletak pada batasan perwakilan nombor terapung 64-bit standard. Untuk senario pengkomputeran yang memerlukan ketepatan yang lebih tinggi, artikel itu akan memperkenalkan dan membandingkan kaedah penggunaan, ciri-ciri dan senario yang berkenaan dengan perpustakaan matematik ketepatan tinggi seperti MPMATH, SYMPY dan GMPY untuk membantu pembaca memilih alat yang tepat untuk menyelesaikan keperluan ketepatan yang rumit.

Python Dapatkan Contoh Masa Semasa Python Dapatkan Contoh Masa Semasa Sep 15, 2025 am 02:32 AM

Mendapatkan masa semasa boleh dilaksanakan di Python melalui modul DateTime. 1. Gunakan datetime.now () untuk mendapatkan masa semasa tempatan, 2. Gunakan strftime ("%y-%m-%d%h:%m:%s") untuk memformat tahun, bulan, hari, jam, minit dan kedua, 3 menggunakan datetime.d. UTCNOW (), dan operasi harian dapat memenuhi keperluan dengan menggabungkan datetime.now () dengan rentetan yang diformat.

Cara bekerja dengan fail pdf di python Cara bekerja dengan fail pdf di python Sep 20, 2025 am 04:44 AM

PYPDF2, PDFPlumber dan FPDF adalah perpustakaan teras untuk Python untuk memproses PDF. Gunakan pypdf2 untuk melakukan pengekstrakan teks, penggabungan, pemisahan dan penyulitan, seperti membaca halaman melalui pdfreader dan memanggil extract_text () untuk mendapatkan kandungan; PDFplumber lebih sesuai untuk mengekalkan pengekstrakan teks susun atur dan pengiktirafan jadual, dan menyokong extract_tables () untuk menangkap data jadual dengan tepat; FPDF (disyorkan FPDF2) digunakan untuk menjana PDF, dan dokumen dibina dan dikeluarkan melalui add_page (), set_font () dan sel (). Apabila menggabungkan PDF, kaedah tambahan PDFWriter () dapat mengintegrasikan pelbagai fail

Bagaimanakah anda boleh membuat pengurus konteks menggunakan penghias @ContextManager di Python? Bagaimanakah anda boleh membuat pengurus konteks menggunakan penghias @ContextManager di Python? Sep 20, 2025 am 04:50 AM

Import@contextManagerFromContextLibandDefineageneratorfunctionThatTyieldSexactlyonce, whereCodeBeforeyieldActSasenterandCodeAfteryield (PreferitlySinfinal) actsas __

See all articles