Панди: як знайти різницю між двома лініями


Ви можете використовувати функцію DataFrame.diff() , щоб знайти різницю між двома рядками в DataFrame pandas.

Ця функція використовує такий синтаксис:

DataFrame.diff(періоди=1, вісь=0)

золото:

  • періоди: кількість попередніх рядків для обчислення різниці.
  • вісь: знайдіть різницю в рядках (0) або стовпцях (1).

Наступні приклади показують, як використовувати цю функцію на практиці.

Приклад 1: Знайдіть різницю між кожним попереднім рядком

Припустімо, що у нас є наступні pandas DataFrame:

 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

Наступний код показує, як знайти різницю між кожним поточним рядком DataFrame і попереднім рядком:

 #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

Зверніть увагу, що ми також можемо знайти різницю між кількома попередніми рядками. Наприклад, наведений нижче код показує, як знайти різницю між кожним поточним рядком і рядком, який з’явився трьома рядками раніше:

 #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

Приклад 2: Знайдіть різницю за умовою

Ми також можемо відфільтрувати DataFrame, щоб відобразити рядки, де різниця між поточним рядком і попереднім рядком менша або більша за певне значення.

Наприклад, наступний код повертає лише ті рядки, у яких значення поточного рядка менше значення попереднього рядка:

 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

Додаткові ресурси

Як знайти унікальні значення в кількох стовпцях у Pandas
Як відфільтрувати Pandas DataFrame за значеннями стовпців
Як вибрати рядки за індексом у Pandas DataFrame

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *