Pandas進階120題之34:計算前一行與後一行資料的差值(1)
為幫助學習pandas,特意從和鯨社群中提煉出120道經典資料處理常見操作例題,從基礎入門到進階來更快速、更專業的角度理解pandas。主要包括:
Pandas基礎
Pandas進階
金融資料處理
NumPy科學計算
一些補充
(
https://www。
heywhale。com/mw/project
/5ef96ce863975d002c95fd8a/content
)
原始資料:
import pandas as pd
import numpy as np
import re
import time
data=pd。read_excel(r‘C:\Users\huatian\Desktop\Python_test\python_120_test_data。xlsx’)
data。head()。T
資料理解:
檢視資料數量:data。shape
data。shape
如上圖顯示,資料有20行,50列。並利用
http://
data。info()
進一步瞭解資料,每列資料是否有
空值
,資料型別,資料大小等
根據isnull()。sum(),檢視所有空值的列
data_col=data。isnull()。sum()
data_col[data_col>0]
需求描述:
現有一列float型別的資料,在我們的測試資料中是“salary”列,需求是:計算前一行與後一行資料的差值,並新增到原始資料中。
程式碼實現:
本次案例選擇了DataFrame。diff()函式實現前一行與後一行資料的差值
data[‘salary_diff’]=data[‘salary’]。diff()
上面案例是數值型別計算得到的結果,那麼如果是時間呢?前一行時間資料與後一行時間資料的差值!!!
data[‘createTime_diff’]=data[‘createTime’]。diff()
測試diff()函式得到前一行與後一行時間的差值,很有意思的是:當後一行時間早於前一行時間時,計算出的結果為-1days +
時間差
。注意注意!!!
DataFrame。
diff()函式
:是用來將資料進行某種移動之後與原資料進行比較得出的差異資料
DataFrame。diff(periods=1, axis=0)
即預設period=1,表示與前一行資料元素的差異
引數:
periods:移動的幅度,int型別,預設值為1。
axis:移動的方向,{0 or ‘index’, 1 or ‘columns’},如果為0或者’index’,則上下移動,如果為1或者’columns’,則左右移動。
返回值 :
DataFrame型別
總結
計算前一行與後一行資料的
差值
。很有意思的一個案例,在業務實驗中很常見的,在python中利用dataframe。diff()函式很容易實現此功能。