Edited at

時系列のcsvデータを、pandasで簡単に移動平均を取る


目的

以下のようなときに使える方法です


  • オシロスコープやらデータロガーから吸い出したcsvデータのノイズを落として見やすくする

  • web上から取得した時系列データのcsvデータについて、大きな傾向を見るために細かい動きをフィルタする


環境


  • python

  • pandas

Anacondaを入れておけはなんとかなる


方法

"hoge.csv"というデータファイルがあり、その中に"ch1"というデータ列があったとすると、以下の方法で、"ma"列に過去10データの移動平均が入ります。

変数windowを変えると、移動平均区間を変えられます

import pandas as pd

df = pd.read_csv("hoge.csv")

window = 10
df["ma"] = df["ch1"].rolling(window).mean()


まとめ

rollingオブジェクトを生成して、そこからmean()(平均値)を引っ張る、みたいな処理になっているようです。

古いバージョンのpandasだと、pandas.rolling_mean()というメソッドがありますが、最新バージョンでコレを使うと、警告が出ます。