Rumah > pembangunan bahagian belakang > Tutorial Python > 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
Lepaskan: 2024-10-30 07:45:27
asal
529 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan