1

次のように構造化されたデータの長いリストがあります

Date, Time, Temperature, Moisture, Accumulated precipitation

1/01/2011, 00:00, 23, 50, 2,    
1/01/2011, 00:15, 22, 45, 1,   
1/01/2011, 00:30, 20, 39, 0,  
1/01/2011, 01:00, 25, 34, 0,  
1/01/2011, 01:15, 23, 50, 0,  
           .
           .
           .
           .
1/01/2011, 23:45, 22, 40, 0,
           .
           .
           .
           .
31/01/2011, 00:00, 23, 45, 0,        

Temperature変数の毎日の平均とMoistureその月の 31 日を取得するにはどうすればよいですか?

4

2 に答える 2

3

これは、pandasライブラリが得意とする類のものです。基本的な考え方は、データを という名前のオブジェクトに読み込むことができDataFrames、Excel シートのようなものであり、それらに対して適切な処理を行うことができるというものです。temps.csv私があなたのように作ったファイルから始めます:

>>> df = pd.read_csv("temps.csv", index_col=False, parse_dates=[[0,1]], skipinitialspace=True)
>>> df = df.rename(columns={"Date _Time": "Time"})
>>> df = df.set_index("Time")
>>> df
                     Temperature  Moisture  Accumulated precipitation
Time                                                                 
2011-01-01 00:00:00           23        50                          2
2011-01-01 00:15:00           22        45                          1
2011-01-01 00:30:00           20        39                          0
2011-01-01 01:00:00           25        34                          0
2011-01-01 01:15:00           23        50                          0
2011-01-01 23:45:00           22        40                          0
2011-01-02 00:00:00          123       250                         32
2011-01-02 00:15:00          122       245                         31
2011-01-02 00:30:00          120       239                         30
2011-01-02 01:00:00          125       234                         30
2011-01-02 01:15:00          123       250                         30
2011-01-02 23:45:00          122       240                         30

フレームがきれいな形になったら、簡単にリサンプリングできます (デフォルトは平均値です)。

>>> df.resample("D")
            Temperature  Moisture  Accumulated precipitation
Time                                                        
2011-01-01         22.5        43                        0.5
2011-01-02        122.5       243                       30.5

または、最大または最小を取得します。

>>> df.resample("D", how="max")
            Temperature  Moisture  Accumulated precipitation
Time                                                        
2011-01-01           25        50                          2
2011-01-02          125       250                         32
>>> df.resample("D", how="min")
            Temperature  Moisture  Accumulated precipitation
Time                                                        
2011-01-01           20        34                          0
2011-01-02          120       234                         30

など。これは、毎日記録されたデータ ポイントの単純な平均であることに注意してください。測定間の距離の違いを考慮して別の方法でリサンプリングする場合も、簡単です。Python でデータ処理を行う場合は、 10 分間の概要を読んで役立つかどうかを確認することをお勧めします。

于 2013-10-04T21:47:45.747 に答える
0

別のデータベースでの提案を使用して、次のようにしました。

df = pd.read_csv('path-tracks.csv', index_col= '日付', parse_dates=[0])
df

                  Lat    Lon  ID  Moisture  Temperature Category

日付
2004-02-05 06:45:00 19.7 -95.2 1 45 -38 CCM
2004-02-05 07:45:00 19.7 -94.7 1 34 -48 CCM
2004-02-05 08:45:00 19.3 -93.9 1 57 -60 CCM
2004-02-05 09:45:00 19.0 -93.5 1 89 -58 CCM
2004-02-05 10:45:00 19.0 -92.8 1 34 -50 CCM
2004-02-05 11:45: 00 19.2 -92.6 1 23 -40 CCM
2004-02-05 12:45:00 19.9 -93.0 1 10 -43 CCM
2004-02-05 13:15:00 20.0 -92.8 1 50 -32 CCM
2004-05-30 04:45:00 23.1 -100.2 2 45 -45 SCME
2004-05-30 05:45:00 23.2 -100.0 2 68 -56 SCME
2004-05-30 06:45:00 23.3 -100.0 2 90 -48 SCME
2004-05-30 07:45:00 23.3 -100.2 2 100 -32 SCME
2004-05-31 03:15:00 23.4 -99.0 3 12 -36 SCM
2004-05-31 04:15:00 23.5 -98.9 3 34 -46 SCM
2004-05-31 05:15:00 23.6 -98.7 3 56 -68 SCM
2004-05-31 06:15:00 23.7 -98.8 3 78 -30 SCM

ここで、次のように 1 日の合計を取得してみてください。

df.resample('D',how='sum')

私は以下を取得します:

          Lat    Lon  ID  Moisture  Temperature

日付
2004-02-06 155.8 -748.5 8 342 -369
2004-02-07 NaN NaN NaN NaN NaN
2004-02-08 NaN NaN NaN NaN NaN
2004-02-09 NaN NaN NaN NaN NaN
2004-02-10 NaN NaN NaN NaN NaN
2004-02-11 NaN NaN NaN NaN NaN
2004-02-12 NaN NaN NaN NaN NaN
2004-02-13 NaN NaN NaN NaN NaN
2004-02-14 NaN NaN NaN NaN NaN
2004-02-15 NaN NaN NaN NaN NaN
2004-02-16 NaN NaN NaN NaN NaN
2004-02-17 NaN NaN NaN NaN NaN
2004-02-18 NaN NaN NaN NaN NaN
2004-02-19 NaN NaN NaN NaN NaN
2004-02-20 NaN NaN NaN NaN NaN
2004-02-21 NaN NaN NaN NaN NaN
2004-02-22 NaN NaN NaN NaN NaN
2004-02-23 NaN NaN NaN NaN NaN
2004-02-24 NaN NaN NaN NaN NaN
2004-02-25 NaN NaN NaN NaN NaN
2004-02-26 NaN NaN NaN NaN NaN
2004-02-27 NaN NaN NaN NaN NaN
2004-02-28 NaN NaN NaN NaN NaN
2004-02-29 NaN NaN NaN NaN NaN
2004-03-01 NaN NaN NaN NaN NaN
2004-03-02 NaN NaN NaN NaN NaN
2004-03-03 NaN NaN NaN NaN NaN
2004-03-04 NaN NaN NaN NaN NaN
2004-03-05 NaN NaN NaN NaN NaN
2004-03-06 NaN NaN NaN NaN NaN
2004-03-07 NaN NaN NaN NaN NaN
2004-03-08 NaN NaN NaN NaN NaN
2004-03-09 NaN NaN NaN NaN NaN
2004-03-10 NaN NaN NaN NaN NaN
2004-03-11 NaN NaN NaN NaN NaN
2004-03-12 NaN NaN NaN NaN NaN
2004-03-13 NaN NaN NaN NaN NaN
2004-03-14 NaN NaN NaN NaN NaN
2004-03-15 NaN NaN NaN NaN NaN
2004-03-16 NaN NaN NaN NaN NaN
2004-03-17 NaN NaN NaN NaN NaN
2004-03-18 NaN NaN NaN NaN NaN
2004-03-19 NaN NaN NaN NaN NaN
2004-03-20 NaN NaN NaN NaN NaN
2004-03-21 NaN NaN NaN NaN NaN
2004-03-22 NaN NaN NaN NaN NaN
2004-03-23 NaN NaN NaN NaN NaN
2004-03-24 NaN NaN NaN NaN NaN
2004-03-25 NaN NaN NaN NaN NaN
2004-03-26 NaN NaN NaN NaN NaN
2004-03-27 NaN NaN NaN NaN NaN
2004-03-28 NaN NaN NaN NaN NaN
2004-03-29 NaN NaN NaN NaN NaN
2004-03-30 NaN NaN NaN NaN NaN
2004-03-31 NaN NaN NaN NaN NaN
2004-04-01 NaN NaN NaN NaN NaN
2004-04-02 NaN NaN NaN NaN NaN
2004-04-03 NaN NaN NaN NaN NaN
2004-04-04 NaN NaN NaN NaN NaN
2004-04-05 NaN NaN NaN NaN NaN
2004-04-06 NaN NaN NaN NaN NaN
2004-04-07 NaN NaN NaN NaN NaN
2004-04-08 NaN NaN NaN NaN NaN
2004-04-09 NaN NaN NaN NaN NaN
2004-04-10 NaN NaN NaN NaN NaN
2004-04-11 NaN NaN NaN NaN NaN
2004-04-12 NaN NaN NaN NaN NaN
2004-04-13 NaN NaN NaN NaN NaN
2004-04-14 NaN NaN NaN NaN NaN
2004-04-15 NaN NaN NaN NaN NaN
2004-04-16 NaN NaN NaN NaN NaN
2004-04-17 NaN NaN NaN NaN NaN
2004-04-18 NaN NaN NaN NaN NaN
2004-04-19 NaN NaN NaN NaN NaN
2004-04-20 NaN NaN NaN NaN NaN
2004-04-21 NaN NaN NaN NaN NaN
2004-04-22 NaN NaN NaN NaN NaN
2004-04-23 NaN NaN NaN NaN NaN
2004-04-24 NaN NaN NaN NaN NaN
2004-04-25 NaN NaN NaN NaN NaN
2004-04-26 NaN NaN NaN NaN NaN
2004-04-27 NaN NaN NaN NaN NaN
2004-04-28 NaN NaN NaN NaN NaN
2004-04-29 NaN NaN NaN NaN NaN
2004-04-30 NaN NaN NaN NaN NaN
2004-05-01 NaN NaN NaN NaN NaN
2004-05-02 NaN NaN NaN NaN NaN
2004-05-03 NaN NaN NaN NaN NaN
2004-05-04 NaN NaN NaN NaN NaN
2004-05-05 NaN NaN NaN NaN NaN
2004-05-06 NaN NaN NaN NaN NaN
2004-05-07 NaN NaN NaN NaN NaN
2004-05-08 NaN NaN NaN NaN NaN
2004-05-09 NaN NaN NaN NaN NaN
2004-05-10 NaN NaN NaN NaN NaN
2004-05-11 NaN NaN NaN NaN NaN
2004-05-12 NaN NaN NaN NaN NaN
2004-05-13 NaN NaN NaN NaN NaN
2004-05-14 NaN NaN NaN NaN NaN
2004-05-15 NaN NaN NaN NaN NaN
2004-05-16 NaN NaN NaN NaN NaN
2004-05-17 NaN NaN NaN NaN NaN
2004-05-18 NaN NaN NaN NaN NaN
2004-05-19 NaN NaN NaN NaN NaN
2004-05-20 NaN NaN NaN NaN NaN
2004-05-21 NaN NaN NaN NaN NaN
2004-05-22 NaN NaN NaN NaN NaN
2004-05-23 NaN NaN NaN NaN NaN
2004-05-24 NaN NaN NaN NaN NaN
2004-05-25 NaN NaN NaN NaN NaN
2004-05-26 NaN NaN NaN NaN NaN
2004-05-27 NaN NaN NaN NaN NaN
2004-05-28 NaN NaN NaN NaN NaN
2004-05-29 NaN NaN NaN NaN NaN
2004-05-30 NaN NaN NaN NaN NaN
2004-05-31 92.9 -400.4 8 303 -181
2004-06-01 94.2 -395.4 12 180 -180

私は何か悪いことをした?日付 2004-02-05 6:45:00 が考慮されていないためですか? このエラーを修正するにはどうすればよいですか?

于 2013-10-08T06:55:11.887 に答える