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

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *