ホーム>source

季節ごとにいくつかのデータ分析を実行する必要があります。

2015年の終わりから2017年の後半まで、1年半に相当する1時間ごとの測定値があります。このデータを季節ごとに並べ替えることが目的です。

これが私が使用しているデータの例です。

Date,Year,Month,Day,Day week,Hour,Holiday,Week Day,Impulse,Power (kW),Temperature (C)
04/12/2015,2015,12,4,6,18,0,6,2968,1781,16.2
04/12/2015,2015,12,4,6,19,0,6,2437,1462,16.2
19/04/2016,2016,4,19,3,3,0,3,1348,809,14.4
19/04/2016,2016,4,19,3,4,0,3,1353,812,14.1
11/06/2016,2016,6,11,7,19,0,7,1395,837,18.8
11/06/2016,2016,6,11,7,20,0,7,1370,822,17.4
11/06/2016,2016,6,11,7,21,0,7,1364,818,17
11/06/2016,2016,6,11,7,22,0,7,1433,860,17.5
04/12/2016,2016,12,4,1,17,0,1,1425,855,14.6
04/12/2016,2016,12,4,1,18,0,1,1466,880,14.4
07/03/2017,2017,3,7,3,14,0,3,3668,2201,14.2
07/03/2017,2017,3,7,3,15,0,3,3666,2200,14
24/04/2017,2017,4,24,2,5,0,2,1347,808,11.4
24/04/2017,2017,4,24,2,6,0,2,1816,1090,11.5
24/04/2017,2017,4,24,2,7,0,2,2918,1751,12.4
15/06/2017,2017,6,15,5,13,1,1,2590,1554,22.5
15/06/2017,2017,6,15,5,14,1,1,2629,1577,22.5
15/06/2017,2017,6,15,5,15,1,1,2656,1594,22.1
15/11/2017,2017,11,15,4,13,0,4,3765,2259,15.6
15/11/2017,2017,11,15,4,14,0,4,3873,2324,15.9
15/11/2017,2017,11,15,4,15,0,4,3905,2343,15.8
15/11/2017,2017,11,15,4,16,0,4,3861,2317,15.3

ご覧のとおり、3年間のデータがあります。

私がやろうとしていたことは、最初の列を pd.to_datetime() で変換することですコマンド。次に、dd/mm間隔の年に関係なく、日/月に従って行をグループ化します(冬が21/12から21/03に行く場合、日付が含まれるすべての行で新しいデータフレームを作成します年に関係なく、この間隔に含まれます)が、年を無視することでそれを行うことができませんでした(より複雑になります)。

編集: 望ましい出力は次のとおりです。

df_spring
Date,Year,Month,Day,Day week,Hour,Holiday,Week Day,Impulse,Power (kW),Temperature (C)
19/04/2016,2016,4,19,3,3,0,3,1348,809,14.4
19/04/2016,2016,4,19,3,4,0,3,1353,812,14.1
07/03/2017,2017,3,7,3,14,0,3,3668,2201,14.2
07/03/2017,2017,3,7,3,15,0,3,3666,2200,14
24/04/2017,2017,4,24,2,5,0,2,1347,808,11.4
24/04/2017,2017,4,24,2,6,0,2,1816,1090,11.5
24/04/2017,2017,4,24,2,7,0,2,2918,1751,12.4
df_autumn
Date,Year,Month,Day,Day week,Hour,Holiday,Week Day,Impulse,Power (kW),Temperature (C)
04/12/2015,2015,12,4,6,18,0,6,2968,1781,16.2
04/12/2015,2015,12,4,6,19,0,6,2437,1462,16.2
04/12/2016,2016,12,4,1,17,0,1,1425,855,14.6
04/12/2016,2016,12,4,1,18,0,1,1466,880,14.4
15/11/2017,2017,11,15,4,13,0,4,3765,2259,15.6
15/11/2017,2017,11,15,4,14,0,4,3873,2324,15.9
15/11/2017,2017,11,15,4,15,0,4,3905,2343,15.8
15/11/2017,2017,11,15,4,16,0,4,3861,2317,15.3

残りの季節についても同様です。

あなたの答え
  • 解決した方法 # 1

    Day を使用して関連する行をフィルタリングすることにより、各シーズンを定義します  および Month  冬に提示された列:

    df_winter = df.loc[((df['Day'] >= 21) & (df['Month'] == 12)) | (df['Month'] == 1) | (df['Month'] == 2) | ((df['Day'] <= 21) & (df['Month'] == 3))]
    
    

  • 解決した方法 # 2

    month.isin() でデータフレームを簡単にフィルタリングできます

    # spring
    df[df['Month'].isin([3,4])]
        Date    Year    Month   Day Day week    Hour    Holiday Week Day    Impulse Power (kW)  Temperature (C)
    2   19/04/2016  2016    4   19  3   3   0   3   1348    809 14.4
    3   19/04/2016  2016    4   19  3   4   0   3   1353    812 14.1
    10  07/03/2017  2017    3   7   3   14  0   3   3668    2201    14.2
    11  07/03/2017  2017    3   7   3   15  0   3   3666    2200    14.0
    12  24/04/2017  2017    4   24  2   5   0   2   1347    808 11.4
    13  24/04/2017  2017    4   24  2   6   0   2   1816    1090    11.5
    14  24/04/2017  2017    4   24  2   7   0   2   2918    1751    12.4
    
    # autumn
    df[df['Month'].isin([11,12])]
    Date    Year    Month   Day Day week    Hour    Holiday Week Day    Impulse Power (kW)  Temperature (C)
    0   04/12/2015  2015    12  4   6   18  0   6   2968    1781    16.2
    1   04/12/2015  2015    12  4   6   19  0   6   2437    1462    16.2
    8   04/12/2016  2016    12  4   1   17  0   1   1425    855 14.6
    9   04/12/2016  2016    12  4   1   18  0   1   1466    880 14.4
    18  15/11/2017  2017    11  15  4   13  0   4   3765    2259    15.6
    19  15/11/2017  2017    11  15  4   14  0   4   3873    2324    15.9
    20  15/11/2017  2017    11  15  4   15  0   4   3905    2343    15.8
    21  15/11/2017  2017    11  15  4   16  0   4   3861    2317    15.3
    
    

関連記事

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ postgresql - Odooで標準価格フィールド値を取得する方法は?