多視窗大小和Ticker分組的Pandas滾動平均值
問題背景
其中一個問題是,apply方法只能對整個分組物件應用一個函式,而不能對每個分組中的每個元素應用函式。這意味著,如果我們想為每個股票計算多個時間視窗的滾動平均線,我們需要編寫一個自定義函式,該函式可以接受一個時間序列作為輸入,並返回一個包含多個滾動平均線的DataFrame。
另一個問題是,如果我們使用transform方法,可能會導致資料維度不匹配的問題。這是因為transform方法會將函式的結果應用到整個分組物件,而不是每個分組中的每個元素。這意味著,如果我們想為每個股票計算多個時間視窗的滾動平均線,transform方法會返回一個包含多個列的DataFrame,而這些列的長度與分組物件相同。這可能導致資料維度不匹配,難以進行後續分析。
解決方案
為瞭解決這些問題,我們可以使用如下方法:
1、編寫一個自定義函式,該函式可以接受一個時間序列作為輸入,並返回一個包含多個滾動平均線的DataFrame。
2、使用groupby和apply方法,將自定義函式應用到每個分組物件中的每個元素。
以下是一個示例程式碼:
def my_RollMeans( x):
w = [ 1, 2, 3]
s = pd. Series( x)
Bob = pd. DataFrame([ s. rolling( w1). mean(). rename( 'Price_' + str( w1)) for w1 in w]). T
return Bob
df3. groupby( 'Ticker'). apply( lambda x: my_RollMeans( x. Price)). fillna( 0)
這個程式碼首先定義了一個自定義函式my_RollMeans,該函式可以接受一個時間序列作為輸入,並返回一個包含多個滾動平均線的DataFrame。然後,使用groupby和apply方法,將my_RollMeans函式應用到每個分組物件中的每個元素。這樣,就可以為每個股票計算多個時間視窗的滾動平均線,並避免資料維度不匹配的問題。
執行這個程式碼,可以得到以下輸出:
Price_1 Price_2 Price_3
Ticker Date
ABC 2018-07-01 9.0 0.0 0.000000
2018-07-02 8.0 8.5 0.000000
2018-07-03 7.0 7.5 8.000000
2018-07-04 8.0 7.5 7.666667
2018-07-05 8.0 8.0 7.666667
HIJ 2018-07-01 8.0 0.0 0.000000
2018-07-02 9.0 8.5 0.000000
2018-07-03 5.0 7.0 7.333333
2018-07-04 6.0 5.5 6.666667
2018-07-05 7.0 6.5 6.000000
XYZ 2018-07-01 9.0 0.0 0.000000
2018-07-02 5.0 7.0 0.000000
2018-07-03 9.0 7.0 7.666667
2018-07-04 8.0 8.5 7.333333
2018-07-05 6.0 7.0 7.666667
在這個輸出中,我們可以看到,為每個股票計算了三個時間視窗的滾動平均線,分別為1天、2天和3天。
滾動平均線的計算方法是,對於給定的視窗大小(通常是時間單位),從資料序列的起始點開始,每次將視窗內的資料點的平均值作為平均線的一個點,並逐步向序列的末尾滑動。這樣可以生成一條平滑的曲線,反映了資料的趨勢。
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70034537/viewspace-3004884/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Flink的滾動視窗、會話視窗、滑動視窗及其應用會話
- 瀏覽器的視窗位置和大小瀏覽器
- Databricks 第四篇:分組統計和視窗
- 監聽視窗大小改變,同時根據視窗大小修改某個元素的大小
- vue 動態監聽視窗大小變化事件Vue事件
- go timer 和 ticker 的區別Go
- Qt+ECharts開發筆記(二):Qt視窗動態調整大小,使ECharts跟隨Qt視窗大小變換QTEcharts筆記
- win10固定視窗大小怎麼設定_win10如何鎖定視窗大小Win10
- js 滾輪控制圖片縮放大小和拖動JS
- win10怎麼關閉視窗移動至邊緣時自動調整大小_win10取消移動視窗到邊緣自動調整大小的方法Win10
- flutter sliver 多種滾動組合開發指南Flutter
- Pandas 分組聚合操作詳解
- 檢視spark程式/區分pyspark和pandas的表的合併,pyspark是join,pandas是mergeSpark
- 建立多視窗的Windowsform程式WindowsORM
- 直播商城原始碼,vue 彈窗 慣性滾動 加速滾動原始碼Vue
- TCP的滑動視窗和擁塞控制TCP
- mysql視窗函式中的滑動視窗MySql函式
- SplashScreenManager 啟動介面和等待視窗
- win10系統中怎麼禁用非活動視窗滾動功能Win10
- 什麼是視差滾動?如何實現視差滾動的效果?
- pandas 分組合並欄位(qbit)
- win10如何取消視窗貼邊時自動調整大小Win10
- win10 視窗文字大小怎麼設定_win10怎麼設定視窗文字大小Win10
- 自己封裝的滾動條滾到底部和可視區域的外掛封裝
- Hive多視窗啟動異常(已解決!)Hive
- C# 強行鎖定 第三方 外部 應用程式窗體視窗的解析度尺寸大小 禁止滑鼠拖拽改變視窗大小C#
- 這麼讓IDEA啟動專案的多個微服務模組時在services視窗介面中顯示模組名稱和埠號Idea微服務
- [高效Mac] 多顯示器快速切換滑鼠焦點和移動視窗Mac
- 怎麼恢復win10預設視窗大小_win10開啟視窗的大小應該怎麼恢復預設Win10
- win10工作列預覽視窗大小如何調整_win10工作列縮圖預覽視窗大小的調整方法Win10
- 『心善淵』Selenium3.0基礎 — 17、Selenium操作瀏覽器視窗的滾動條瀏覽器
- 真正的讓iframe自適應高度 相容多種瀏覽器隨著視窗大小改變瀏覽器
- Python的pandas的Dataframe使用groupby分組並求每組的統計值Python
- 透過滑動視窗實現介面呼叫的多種限制策略
- Win10系統如何更改視窗元件字型大小 win10視窗字型設定Win10元件
- 視覺滾動[反差美]視覺
- 拖拽滾動檢視(一)
- goland 把多個專案視窗合併到一個視窗GoLand