日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

利用Python实现数据偏移

發布時間:2023/12/19 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用Python实现数据偏移 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

總第190篇/張俊紅

現在有如下這么一張表,這張表存儲了每個uid在不同周(w)的訂單情況。我們想知道每個用戶在不同周內消費頻次的變化情況。消費頻次變化的標準就是這周訂單數和上周訂單數的相對變化,如果這周訂單比上周增加了,就說明消費頻次提高了,反之則說明消費頻次降低了。

要實現上面的需求,其實只需要新增一列,這一列用來存儲每個uid在上一周期的訂單情況,然后將兩列進行做差,差的結果就是每個uid消費頻次的變化。具體結果如下:

上面這個結果該如何實現呢?也就是如何讓數據進行上下偏移呢?借助的就是Python中的shift函數,我們這一節就講講shift是怎么使用的。shift的功能是對數據進行偏移,該函數的具體參數如下:

df.shift(periods=1,?freq=None,?axis=0)

periods為偏移的幅度;freq只適用于時間索引的偏移,是對索引的偏移,而值不發生變化;axis用來指明是橫向偏移還是縱向偏移,當axis=0時表示縱向偏移,默認就是縱向偏移,當要縱向偏移時,axis參數可以省略不寫。當axis=1時表示橫向偏移。如果periods為正,則表示向下/右偏移,如果peeriods為負,則表示向上/左偏移。接下來我們看一些具體實例:

df.shift(1)

運行上面的代碼,所有的數據向下偏移一行,具體結果如下:

df.shift(-1)

運行上面的代碼,所有的數據向上偏移一行,具體結果如下:

df.shift(1,axis?=?1)

運行上面的代碼,所有的數據向右偏移一列,具體結果如下:

df.shift(-1,axis?=?1)

運行上面的代碼,所有的數據向左偏移一列,具體結果如下:

了解完了shift用法以后我們來看下我們開頭那個需求該怎么做呢?新增加一列last_sales,并給其賦值為sales列,然后將last_sales這一列向上偏移一行。實現代碼如下:

df["last_sales"]?=?df["sales"] df["last_sales"]?=?df["last_sales"].shift(1) df

運行上面代碼,會得到每一行的sales_s與他的上一行的sales,這個sales不一定是他自己上一個周期的sales,比如第一個uid=2的上一個周期應該是0,但是這里面卻是4:

很明顯,上面的結果并非我們想要的結果,我們想要的是每個uid內的上一個周期的sales,而非每一行sales對應的上一行的sales,那怎么辦呢?方法就是在組內進行shift,也就是與groupby 進行組合使用,先對uid進行groupby,然后再進行shift偏移,具體代碼如下:

df["last_sales"]?=?df.groupby("uid")["sales"].shift(1).fillna(0) df

最后運行上面的代碼,就得到了我們開頭想要的結果,即每個uid當期的sales和他自己上一期的sales,具體結果如下:

以上就是關于shift函數的使用情況。

你還可以看:

最近瘋傳的SIR傳染病模型是什么?

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的利用Python实现数据偏移的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。