Pandas: วิธีใช้ groupby กับ diff


คุณสามารถใช้ไวยากรณ์พื้นฐานต่อไปนี้เพื่อใช้ฟังก์ชัน groupby() กับฟังก์ชัน diff() ในหมีแพนด้า:

 df = df. sort_values (by=[' group_var1 ', ' group_var2 '])

df[' diff '] = df. groupby ([' group_var1 '])[' values_var ']. diff (). fillna ( 0 )

ตัวอย่างนี้จะเรียงลำดับแถวของ DataFrame ตามตัวแปรเฉพาะสองตัว จากนั้นจัดกลุ่มตาม group_var1 และคำนวณความแตกต่างระหว่างแถวในคอลัมน์ Values_var

โปรดทราบว่า fillna(0) บอกให้แพนด้าใส่ศูนย์เมื่อใดก็ตามที่ค่าของตัวแปรกลุ่มเปลี่ยนแปลงระหว่างบรรทัดที่ต่อเนื่องกันใน DataFrame

ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ

ตัวอย่าง: วิธีใช้ groupby กับ diff ใน Pandas

สมมติว่าเรามี DataFrame แพนด้าต่อไปนี้ซึ่งมียอดขายรวมของร้านค้าสองแห่งที่แตกต่างกันในวันที่ต่างกัน:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' store ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' date ': pd. to_datetime (['2022-01-01', '2022-01-02',
                                           '2022-01-03', '2022-01-04',
                                           '2022-01-01', '2022-01-02',
                                           '2022-01-03', '2022-01-04']),
                   ' sales ': [12, 15, 24, 24, 14, 19, 12, 38]})

#view DataFrame
print (df)

  blind date sales
0 A 2022-01-01 12
1 A 2022-01-02 15
2 A 2022-01-03 24
3 A 2022-01-04 24
4 B 2022-01-01 14
5 B 2022-01-02 19
6 B 2022-01-03 12
7 B 2022-01-04 38

ตอนนี้สมมติว่าเราต้องการสร้างคอลัมน์ใหม่ที่เรียกว่า sales_diff ซึ่งมีค่าความแตกต่างในมูลค่าการขายระหว่างวันที่ติดต่อกันโดยจัดกลุ่มตามร้านค้า

เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อทำสิ่งนี้:

 #sort DataFrame by store and date
df = df. sort_values (by=[' store ', ' date '])

#create new column that contains difference between sales grouped by store
df[' sales_diff '] = df. groupby ([' store '])[' sales ']. diff (). fillna ( 0 )

#view update DataFrame
print (df)

  store date sales sales_diff
0 A 2022-01-01 12 0.0
1 A 2022-01-02 15 3.0
2 A 2022-01-03 24 9.0
3 A 2022-01-04 24 0.0
4 B 2022-01-01 14 0.0
5 B 2022-01-02 19 5.0
6 B 2022-01-03 12 -7.0
7 B 2022-01-04 38 26.0

คอลัมน์ sales_diff ใหม่มีความแตกต่างในมูลค่าการขายระหว่างวันที่ติดต่อกันโดยจัดกลุ่มตามร้านค้า

ตัวอย่างเช่น เราเห็น:

  • ความแตกต่างในยอดขายของร้านค้า A ระหว่างวันที่ 1/1/2565 และ 1/2/2565 คือ 3
  • ความแตกต่างในยอดขายของร้านค้า A ระหว่าง 02/01/2022 และ 03/01/2022 คือ 9
  • ความแตกต่างในยอดขายของร้านค้า A ระหว่าง 3/1/2565 และ 4/1/2565 คือ 0

และอื่นๆ

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่น ๆ ในแพนด้า:

วิธีดำเนินการผลรวม GroupBy ใน Pandas
วิธีใช้ Groupby และ Plot ใน Pandas
วิธีนับค่าที่ไม่ซ้ำโดยใช้ GroupBy ใน Pandas

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *