Pandas: cara mencari perbedaan antara dua garis
Anda dapat menggunakan fungsi DataFrame.diff() untuk menemukan perbedaan antara dua baris dalam DataFrame pandas.
Fungsi ini menggunakan sintaks berikut:
DataFrame.diff(periode=1, sumbu=0)
Emas:
- periode: jumlah baris sebelumnya untuk menghitung selisihnya.
- sumbu: temukan perbedaan pada baris (0) atau kolom (1).
Contoh berikut menunjukkan cara menggunakan fungsi ini dalam praktiknya.
Contoh 1: Temukan perbedaan antara setiap baris sebelumnya
Misalkan kita memiliki panda DataFrame berikut:
import pandas as pd #createDataFrame df = pd. DataFrame ({' period ': [1, 2, 3, 4, 5, 6, 7, 8], ' sales ': [12, 14, 15, 15, 18, 20, 19, 24], ' returns ': [2, 2, 3, 3, 5, 4, 4, 6]}) #view DataFrame df period sales returns 0 1 12 2 1 2 14 2 2 3 15 3 3 4 15 3 4 5 18 5 5 6 20 4 6 7 19 4 7 8 24 6
Kode berikut menunjukkan cara menemukan perbedaan antara setiap baris DataFrame saat ini dan baris sebelumnya:
#add new column to represent sales differences between each row df[' sales_diff '] = df[' sales ']. diff () #view DataFrame df period sales returns sales_diff 0 1 12 2 NaN 1 2 14 2 2.0 2 3 15 3 1.0 3 4 15 3 0.0 4 5 18 5 3.0 5 6 20 4 2.0 6 7 19 4 -1.0 7 8 24 6 5.0
Perhatikan bahwa kita juga dapat menemukan perbedaan antara beberapa baris sebelumnya. Misalnya, kode berikut menunjukkan cara mencari selisih antara setiap baris saat ini dan baris yang muncul tiga baris sebelumnya:
#add new column to represent sales differences between current row and 3 rows earlier df[' sales_diff '] = df[' sales ']. diff (periods= 3 ) #view DataFrame df period sales returns sales_diff 0 1 12 2 NaN 1 2 14 2 NaN 2 3 15 3 NaN 3 4 15 3 3.0 4 5 18 5 4.0 5 6 20 4 5.0 6 7 19 4 4.0 7 8 24 6 6.0
Contoh 2: Temukan perbedaannya berdasarkan kondisi
Kita juga dapat memfilter DataFrame untuk menampilkan baris yang selisih antara baris saat ini dan baris sebelumnya kurang atau lebih dari nilai tertentu.
Misalnya, kode berikut hanya mengembalikan baris yang nilai baris saat ini lebih kecil dari nilai baris sebelumnya:
import pandas as pd #createDataFrame df = pd. DataFrame ({' period ': [1, 2, 3, 4, 5, 6, 7, 8], ' sales ': [12, 14, 15, 13, 18, 20, 19, 24], ' returns ': [2, 2, 3, 3, 5, 4, 4, 6]}) #find difference between each current row and the previous row df[' sales_diff '] = df[' sales ']. diff () #filter for rows where difference is less than zero df = df[df[' sales_diff ']< 0 ] #view DataFrame df period sales returns sales_diff 3 4 13 3 -2.0 6 7 19 4 -1.0
Sumber daya tambahan
Cara menemukan nilai unik di beberapa kolom di Pandas
Cara memfilter Pandas DataFrame berdasarkan nilai kolom
Cara memilih baris berdasarkan indeks di Pandas DataFrame