2017-02-27 7 views
0

みなさんこんにちは皆私は時間単位で1ヶ月分のデータを含むcvsファイルを持っています。 1ヶ月間の午前12時から午後3時までの時間間隔の列の平均値を取得する必要があります。私はpandas.DataFrameを使ってこれを試しています。毎月のデータで特定の期間中の平均値を求めるPythonコード

データのサンプル私は私が全体の月の12 am-3am毎日から列2を平均化したい

DateTime current  voltage 
11/1/2014 12:00 1.122061402 4.058617834 
11/1/2014 1:00 1.120534925 4.060912132 
11/1/2014 2:00 1.119349897 4.058656072 
11/1/2014 3:00 1.118277733 4.060912132 
11/1/2014 4:00 1.120365636 4.060912132 
11/1/2014 5:00 1.120365636 4.060912132 

を使用しています。私は時間の条件文を使うことは良い選択だと思っていますが、日付/時刻データにその条件文を実装する方法がわかりません。

+1

'df ['DateTime']。resample( '3H')。mean()'? –

+0

私は3時間平均値を3時間ごとに与える3H平均を実装すれば私は1ヵ月間、午前12時から午後3時の間だけその平均値を取得したいと思います。 – acb

+1

'DateTime'はインデックスであると仮定しますか? 'df.between_time('12:00 '、' 3:00 ')。resample(' 3H ')。mean()' –

答えて

1

このファイルを既にdfという名前のPandasデータフレームにインポートしたとします。

  1. は、あなたの「日時」フィールドはdf.dtypesの値をチェックすることにより、日時などパンダによって認識されていることを確認してください。そうでない場合は、たとえば:

    df['DateTime'] = pd.to_datetime(df['DateTime'])

  2. 12 AMのような回、午後1時、などが適切に処理されていることを再確認してください。 (午前12時と午後12時とをデータセット内で区別するようなことは何も指示していません)。そうでない場合は、修正するか、元のソースから再エクスポートする適切な方法を考案する必要があります。

  3. あなたのDateTimeフィールドからDatetimeIndexを作成します。

    df = df.set_index(pd.DatetimeIndex(df['DateTime']))

  4. は(軽く修正)ドミトリーの提案を取る:

    >>> df.between_time('0:00', '3:00').resample('1D').mean()

結果のインデックスます平均化された時間間隔の始まりを示します。

コメントの新しい情報を考慮に入れて編集しました。

+0

ありがとうございます。データの特定の列でのみdf.between_timeを実行する必要はありますか?また、これらの値をリストに保存することはできますか? – acb

+0

確かなこと:平均値の現在の値だけを取得するには、 'list(df ['current']。between_time( '0:00'、 '3:00').resample( '1D')。例えば、そのタイムフレーム。 – mewahl

関連する問題