1. Rolling (rolling()메서드))
- 일정 기간에 대한 집계를 수행할 수 있음
- ex) 최근 3일간, 일주일간의 평균이나 합을 집계
# 최근 3일간 Ozone 열 평균
air['Ozone'].rolling(window=3, min_periods=1).mean() # window=생략가능
# 최근 7일간 Ozone 열 평균
air['Ozone'].rolling(window=7, min_periods=1).mean()
# 새로운 열 추가
air['OZ_mean_3'] = round(air['Ozone'].rolling(window=3, min_periods=1).mean(), 1)
air['OZ_mean_7'] = round(air['Ozone'].rolling(window=7, min_periods=1).mean(), 1)
# 앞에 최근값 3개나 7개가 없어도 2개의 평균, 1개의 평균을 계산함.

2. Shift (shift())
- 데이터를 행 방향 또는 열 방향으로 이동시킬 때 사용
- 시계열 데이터에서 이전 값과 비교하는 데 사용
# 새로운 열 추가
air['OZ_lag_1'] = air['Ozone'].shift(1)
air['OZ_lag_2'] = air['Ozone'].shift(2)
air['OZ_lag_3'] = air['Ozone'].shift(3)

3. Rolling & Shift
- 일반적으로 당일을 제외한 기간에 대한 rolling을 수행할 때 사용
- ex) 당일을 제외한 최근 3일간의 Ozone 값 평균을 갖는 열 추가
# 새로운 열 추가
air['OZ_mean_3_lag_1'] = round(air['Ozone'].rolling(3, min_periods=1).mean().shift(1), 2)

# 참고
- 내일의 Ozone 값을 예측하는 머신러닝 모델을 만들때는 1일 후 값을 각 행에 추가해야 함.
- 즉 당일 Ozone, Temp, Sola.R 등의 정보와 최근 Ozone값과 평균 등을 활용해 다음날 Ozone 값을 예측함.
4. Pivot
1) 기존형태

2) 피벗형태

5. Melt (pd.melt())
매개변수 의미
1) id_vars : 움직이지 않을 열 (=기준 열)
2) value_vars : '값'이 되어 아래로 내려올 현재 열
- 생략하면 id_vars에 지정한 열 이외의 모든 열
3) var_name : value_vars에 지정한 열이 값이 될 때 부여할 열 이름
4) value_name : 새로운 열이 되는 기존 값에 부여할 이름
# 언피벗
day_count_n = pd.melt(day_count_w,
id_vars=['Year', 'Month'],
# value_vars=range(1, 32),
var_name='Day',
value_name='Count')
# 정렬
day_count_n.sort_values(by=['Year', 'Month', 'Day'], ascending=True, inplace=True)
# 결측치 제거(31일이 꽉 차지 않는 월에 결측치 존재)
day_count_n.dropna(inplace=True)
# 인덱스 초기화
day_count_n.reset_index(drop=True, inplace=True)
# 데이터 형식 변경
day_count_n['Count'] = day_count_n['Count'].astype(int)
# 확인
day_count_n

'파이썬 > 데이터 다듬기' 카테고리의 다른 글
[240920] 데이터다듬기#7 - 판다스 데이터프레임 변경 (3) (0) | 2024.09.21 |
---|---|
[240920] 데이터다듬기#6 - 판다스 데이터프레임 변경 (2) (0) | 2024.09.21 |
[240920] 데이터다듬기 #5 판다스 데이터프레임 변경(1) (1) | 2024.09.21 |
[240913] 데이터다듬기#4 - 판다스 데이터프레임 집계 (0) | 2024.09.13 |
[240913] 데이터다듬기#3 - 판다스 데이터프레임 조회 (1) | 2024.09.13 |