2016-04-10 13 views
1

私はPythonの初心者です。これが私の最初の質問です。間違いをお詫び申し上げます。cvs連続データセットから平均値/分を計算するにはどうすればよいですか?

私は、連続測定(毎秒約測定ですが、間隔は固定されていません)の大きなcsvファイルを持っています。私は1分間に平均値を取得する必要があります。私はgroupbyがおそらくこれをやっているのを助けてくれることを知ったが、私はindexとdtype'datetime 'としてDATE_TIME列を指定することに固執している。 csvファイルは次のようになります。

、DATE_TIME、N2O_dry
0,2016-03-01 02:32:02.651,0.70714453962
1,2016-03-01 02:32:03.762,0.7071444254000001
2,2016-03-01 02:32:05.257,0.70373171894
3,2016-03-01 02:32:05.953,0.70083729096
4,2016-03-01 02:32:07.049,0.69760065648
5 、2016-03-01 02:32:07.928,0.6954438788699999
6,2016-03-01 02:32:08.726,0.6874527606899999
7,2016-03-01 02:32:10.005,0.6724201105500001
8,2016-03-01 02:32:10.851,0.6607286568199999



104503,2016-03-02 08:21:18.421,0.26879397415
104504,2016-03-02 08:21:19.532,0.26884030311
104505,2016-03-02 08:21:20.359,0.26887979686

しかし、

import pandas 

df=pandas.read_csv(file,usecols=[1,'N2O_dry']) 
df=df.set_index('DATE_TIME') 
df=pandas.to_datetime(df.index) 

は、これまでのところ、私は唯一のデータフレーム内のファイルを読み取り、インデックスとしてDATE_TIME列を指定することに成功し、これとDATE_TIME列DTYPE =「datetime64 [NS]」オブジェクトを作ります今私はDATE_TIME列だけで残っているようです。誰か助けてくれますか?

`

答えて

0

私はあなたがread_csvにパラメータparse_datesindex_colを追加し、(これは0.18.0パンダで動作します)meanresampleを使用することができると思う:

import pandas as pd 
import io 

temp=u""",DATE_TIME,N2O_dry 
0,2016-03-01 02:32:02.651,0.70714453962 
1,2016-03-01 02:32:03.762,0.7071444254000001 
2,2016-03-01 02:32:05.257,0.70373171894 
3,2016-03-01 02:32:05.953,0.70083729096 
4,2016-03-01 02:32:07.049,0.69760065648 
5,2016-03-01 02:32:07.928,0.6954438788699999 
6,2016-03-01 02:32:08.726,0.6874527606899999 
7,2016-03-01 02:32:10.005,0.6724201105500001 
8,2016-03-01 02:32:10.851,0.6607286568199999""" 
#after testing replace io.StringIO(temp) to filename 
df = pd.read_csv(io.StringIO(temp), 
       usecols=[1,'N2O_dry'], 
       parse_dates=['DATE_TIME'], 
       index_col=['DATE_TIME']) 
print df 
          N2O_dry 
DATE_TIME       
2016-03-01 02:32:02.651 0.707145 
2016-03-01 02:32:03.762 0.707144 
2016-03-01 02:32:05.257 0.703732 
2016-03-01 02:32:05.953 0.700837 
2016-03-01 02:32:07.049 0.697601 
2016-03-01 02:32:07.928 0.695444 
2016-03-01 02:32:08.726 0.687453 
2016-03-01 02:32:10.005 0.672420 
2016-03-01 02:32:10.851 0.660729 

print df.resample('1Min').mean() 
        N2O_dry 
DATE_TIME     
2016-03-01 02:32:00 0.6925 
+0

ありがとうございました! read_csvのパラメータは完全に機能します!リサンプル関数は、時系列の個々の分の平均値を取得しようとするので、私が探しているものを正確には実行しません。この関数は、毎分全体の平均値を出力するようです(出力は単なる値です) 。私は自分の問題を表現するのに十分ではなかったと思います。私はそれ以上の助けに感謝しますが、私はここから行くことができるかもしれません! – vera

+0

Hmmm、おそらく最高の[最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)と望ましい出力です。 – jezrael

0

私が正しく理解している場合、

を使用
df.index = pd.to_datetime(df.index) 

の代わりに
df = pd.to_datetime(df.index) 

これは、DATE_TIME列だけを残して問題を分類する必要があります。 そして、あなたは(iPythonで)取得する:

In [27]:df.index 
Out[27]: 
DatetimeIndex(['2016-03-01 02:32:02.651000', '2016-03-01 02:32:03.762000', 
       '2016-03-01 02:32:05.257000', '2016-03-01 02:32:05.953000', 
       '2016-03-01 02:32:07.049000', '2016-03-01 02:32:07.928000', 
       '2016-03-01 02:32:08.726000', '2016-03-01 02:32:10.005000', 
       '2016-03-01 02:32:10.851000'], 
       dtype='datetime64[ns]', name=u'DATE_TIME', freq=None) 

しかし、それでもまだ:

In [26]: df 
Out[26]: 
          N2O_dry 
DATE_TIME       
2016-03-01 02:32:02.651 0.707145 
2016-03-01 02:32:03.762 0.707144 
2016-03-01 02:32:05.257 0.703732 
2016-03-01 02:32:05.953 0.700837 
2016-03-01 02:32:07.049 0.697601 
2016-03-01 02:32:07.928 0.695444 
2016-03-01 02:32:08.726 0.687453 
2016-03-01 02:32:10.005 0.672420 
2016-03-01 02:32:10.851 0.660729 
+0

それはうまくいった!どうもありがとうございました! – vera

+0

@vera偉大な、私は助けることができてうれしい。この回答を受け入れることを検討(クリックしてください)すると、未回答の質問には表示されません。 – quapka

関連する問題