Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengira Perbezaan Berasaskan Masa dalam Pandas DataFrames Menggunakan Groupby dan diff()?

Bagaimana untuk Mengira Perbezaan Berasaskan Masa dalam Pandas DataFrames Menggunakan Groupby dan diff()?

Barbara Streisand
Barbara Streisandasal
2024-10-30 07:45:27465semak imbas

How to Calculate Time-Based Differences in Pandas DataFrames Using Groupby and diff()?

Panda Groupby Pelbagai Medan untuk Perbezaan Berasaskan Masa

Dalam bidang analisis data, membandingkan perubahan mengikut masa adalah tugas yang penting. Pandas, perpustakaan Python serba boleh, menawarkan keupayaan yang mantap untuk mengendalikan operasi sedemikian. Apabila berurusan dengan data yang disusun mengikut medan dan masa berbilang kategori, kaedah groupby.diff() terbukti tidak ternilai.

Pertimbangkan DataFrame seperti yang disediakan, di mana setiap tapak mempunyai skor yang berbeza-beza merentas negara dan tarikh. Matlamatnya adalah untuk mengira perbezaan 1/3/5 hari dalam markah bagi setiap gabungan tapak/negara.

Penyelesaian Masalah

Untuk mencapai matlamat ini, kami menggunakan langkah berikut:

  1. Isih DataFrame: Susun data dalam susunan yang konsisten mengikut tapak, negara dan tarikh menggunakan sort_values().
  2. Pengumpulan mengikut Tapak dan Negara: Manfaatkan kumpulan mengikut() untuk membuat kumpulan berdasarkan medan tapak dan negara.
  3. Mengira Perbezaan: Gunakan diff() dalam setiap kumpulan untuk mengira skor perbezaan untuk baris berturut-turut.
<code class="python">df = df.sort_values(by=['site', 'country', 'date'])
df['diff'] = df.groupby(['site', 'country'])['score'].diff().fillna(0)</code>

Output:

Hasilnya ialah DataFrame yang mempamerkan perbezaan skor yang dikira:

date site country score diff
2018-01-01 fb es 100 0.0
2018-01-02 fb gb 100 0.0
2018-01-01 fb us 50 0.0
2018-01-02 fb us 55 5.0
2018-01-03 fb us 100 45.0
2018-01-01 google ch 50 0.0
2018-01-02 google ch 10 -40.0
2018-01-01 google us 100 0.0
2018-01-02 google us 70 -30.0
2018-01-03 google us 60 -10.0

Isih Terperinci

Dalam kes di mana pesanan sewenang-wenangnya diperlukan, seperti mengutamakan "google" daripada "fb", lajur kategori boleh dibuat dan ditetapkan sebagai parameter pengisihan. Ini memastikan pesanan yang ditentukan dikekalkan.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Perbezaan Berasaskan Masa dalam Pandas DataFrames Menggunakan Groupby dan diff()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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