2016-12-19 2 views
-1

私はあなたがPythonのコーディングに関する質問に私を助けてくれることを期待していました。 24時間にわたって5百万以上のデータポイントを取得したCSVファイルがあります。このファイルには、UTC時間と強度値の2つの列が含まれています。私はすべての強度データを6分ごとに3分の範囲に平均化したいと思います(例えば平均(x-1.5 min:x + 1.5 min)、xは0,6,12,18などの配列です)。私は複数の道を試みましたが、何も働いていないようです。PythonでCSVファイルの6分ごとに特定の時間範囲を平均化する

私が使用してデータを呼び出しています:

df=pd.read_csv("file.csv",names=['Date','Intensity'], na_values='nan') 

データ例:

df= 
'Date'         'Intensity' 
2016-06-17 00:00:00.054951500   15299 
2016-06-17 00:00:00.056950500   13248 
2016-06-17 00:00:00.058948500   12838 
2016-06-17 00:00:00.060942500   8920 
2016-06-17 00:00:00.062947500   12631 
2016-06-17 00:00:00.064942500   13455 
... (continues on for 24 hours).... 

を考えは3分の平均(最初と最後の平均を除く)ごとに6分を作ることです。最初だけでなく、(私は右のように見えることはできません) pd.Timedeltaコマンド、 を:私が使用して試してみましたまだのとおり

df= 
         'Date'     'Intensity' 
average(0 : 1.5 min)=  2016-06-17 00:00:00  14554    
average(4.5 : 7.5 min)=  2016-06-17 00:06:00  18243    
average (10.5 : 13.5 min)= 2016-06-17 00:12:00  20244    
average (16.5 : 19.5 min)= 2016-06-17 00:18:00  10722 
... 

:例えば、得られたデータを計算しなければならないとのように見えますすべての時間を秒に変換し、そこから計算します(しかし、あまりにも多くの作業が必要です)。私は何をすべきか考えている人はいますか?

ありがとうございました!

+3

あなたが試みた複数の道の少なくとも1つ(おそらく*最も*正しいと感じたもの) –

+0

アドバイスをいただきありがとうございます。投稿が編集されました。 – LexStJ

答えて

0

私はあなたがパンダを知っていますかどれだけ知っているが、あなたは何ができるか、CSVからのデータフレームにデータをロードできると仮定することはありません。あなたならば、あなたはいくつかのサンプルの入力データをポストする必要があり

import pandas as pd 

# load data from csv into intesity_df 
... 

# group by time 
intensity_df = intensity_df.groupby(pd.Grouper(key='date', freq='3min')) 
+0

頻度文字列:http://pandas.pydata.org/pandas-docs/stable/timeseries.html#timeseries-offset-aliases – nme

+0

文書for Grouper:http://pandas.pydata.org/pandas-docs/stable/ generated/pandas.Grouper.html – nme

+0

ありがとうございました。しかしそれは、groupbyが3分ごとに表示される値だけを取ることを縫っている。 6分ごとに3分以上平均することができますか?私は私の最初の質問を編集し、いくつかのデータを追加しました。おそらくそれは私の質問をあまり混乱させません。 – LexStJ

関連する問題