[영상] 시계열 분석 Python 실습 1시간 완성
Day 1: 예지보전 개론 & 센서 데이터 이해
[영상] 시계열 분석 Python 실습 1시간 완성
설비 예지보전 > Day 1: 예지보전 개론 & 센서 데이터 이해
- 예지보전(PdM)의 개념과 사후·예방보전과의 차이를 설명할 수 있다
- 제조 현장 4종 센서(진동·온도·전류·음향)의 역할을 구분할 수 있다
- Python pandas/numpy로 센서 시계열을 로드하고 기초 통계를 산출할 수 있다
- 이상 징후 조기 포착 데이터 파이프라인 구성 요소를 나열할 수 있다
영상 핵심 정리 — 예지보전 개론 & Python 시계열
| 보전 유형 | 방식 | 비용이 어디서 발생하는가 | 다운타임 |
|---|---|---|---|
| 사후보전 (BM) | 고장 후 수리 | 긴급 수리비에 2차 피해와 생산 손실이 얹힌다 | 높음 |
| 예방보전 (PM) | 주기적 교체 | 아직 쓸 수 있는 부품까지 버린다 | 중간 |
| 예지보전 (PdM) | 데이터 기반 예측 | 센서·모델 투자를 부품 낭비 감소로 회수한다 | 낮음 |
| 처방보전 (RxM) | AI 자동 처방 | PdM 위에 의사결정 자동화 비용이 더해진다 | 최소 |
보전 유형별 비용을 1.0 · 0.6 · 0.3 같은 지수 하나로 못 박은 표가 흔한데, 설비 종류와 정비 인건비, 라인 정지 손실에 따라 순서까지 뒤집힌다. 이 과정에서는 숫자를 고정하지 않고 D1 마지막 reading 의 MTBF·MTTR·OEE 로 사업장 값을 직접 계산한다.
import pandas as pd, numpy as np
df = pd.read_csv('vibration.csv', parse_dates=['timestamp'], index_col='timestamp')
# 1분 단위 집계
agg = df['vibration_g'].resample('1min').agg(['mean','std','max'])
agg['rms'] = df['vibration_g'].resample('1min').apply(
lambda x: np.sqrt(np.mean(x**2))
)
print(agg.tail(5))
1분에 한 값씩 남기면 압축비는 원신호 표본율에 그대로 비례한다. 10 Hz 신호면 600:1, 1 kHz 진동이면 60,000:1, 25.6 kHz 원신호면 1,536,000:1 이다. 압축비를 하나로 외우지 말고 센서마다 표본율에서 계산해야 한다. 다만 1분 평균은 추세를 보는 값이라 주파수 성분은 남지 않는다. 진동은 원신호 자리에서 FFT 를 먼저 돌리고 그 결과를 올린다(다음 reading 참고).
함정 주의: 리샘플링 전 결측값을 .ffill() 로 채우지 않으면 RMS 계산이 NaN 으로 오염된다.
fillna(method='ffill') 은 pandas 2.1 부터 FutureWarning 이 뜨는 폐기 문법이므로 .ffill() 을 쓴다.
resample('1T') 의 대문자 T 도 같은 이유로 '1min' 으로 바뀌었다.
실무에서는 결측 5% 이상이면 해당 배치 전체를 품질 이슈로 플래그한다.
다음 task와의 연결
이어지는 reading '산업용 센서 4종'에서 진동·온도·전류·음향의 측정 원리와 샘플링 주파수 설계 원칙을 다룬다.
AI 에이전트에게 예지보전(PdM)용 진동 센서 시계열 데이터를 pandas로 전처리하는 코드를 작성하게 하고, 나이퀴스트 조건과 1분 집계 로직이 올바른지 검토하세요.
예지보전(PdM) 시스템을 위한 진동 센서 시계열 데이터 전처리 파이프라인을 Python으로 작성해줘. pandas read_csv로 초당 1000샘플 데이터를 로드하고, 나이퀴스트 조건을 고려한 샘플링 주파수 설정과 resample('1min').mean()으로 1분 집계하는 코드를 포함해줘. 표본율이 10 Hz, 1 kHz, 25.6 kHz 일 때 1분 집계의 압축비가 각각 얼마가 되는지 계산해서 표로 보여주고, 1분 평균을 취했을 때 어떤 정보가 사라지는지도 설명해줘.- • PdM 은 상태를 보고 필요할 때만 정비한다 — 주기 교체의 부품 낭비와 돌발 정지를 함께 줄인다
- • 진동 센서는 초당 수백~수천 샘플 — 나이퀴스트 조건 필수
- • pandas read_csv + resample('1min').mean() 으로 1분 집계
- • 정상 데이터만 학습하는 One-Class 모델이 현장 기본값
