728x90
작업 환경은 주피터 노트북 환경에서 작업이 이루어 졌으며, 먼저 라이브러리를 import 시켜 줍니다.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import find_peaks
라이브러리가 import 되었으면, 이제 사용할 시계열 데이터를 불러옵니다.
data_frame_TNT = pd.read_csv("ImsData_csv/TNT_csv/TNT_test_1.csv")
print(data_frame_TNT)
저의 경우는 많은 양의 데이터중 일부만 사용해서 작업을 진행하였고, 이 데이터는 700만에서 900만정도의 값이 왔다갔다 거리는 시계열 데이터입니다.
이제 사용할만큼의 시계열 데이터를 지정하고 peak를 찾는 과정을 진행해봅시다.
사용할 시계열 데이터가 양이 적다면 지정하는 과정은 생략하셔도 됩니다.
- 먼저 전체 시계열에 0.1이상의 값 중 피크들을 찾는 코드입니다.
graph_data_or = data_frame_TNT['test_1']
x = graph_data_or[0:13365]
peaks, properties = find_peaks(x, height=0.1)
#print(f'Index of each peaks : {peaks} ')
#print(f'Index of each peaks : {properties["peak_heights"]} ')
peaks_num = peaks
peaks_value = properties["peak_heights"]
print(peaks_num)
print(peaks_value)
plt.plot(x)
plt.plot(peaks, x[peaks], "x")
저의 경우는 시계열데이터의 잡음이 많아서 결과가 안좋게 나왔지만 원래대로라면 정상적으로 이쁘게 나옵니다.
- 이제 일정 이상의 값을 가질때의 피크를 출력해보겠습니다.
graph_data_or = data_frame_TNT['test_1']
x = graph_data_or[0:13365]
peaks, properties = find_peaks(x, height=8200000)
#print(f'Index of each peaks : {peaks} ')
#print(f'Index of each peaks : {properties["peak_heights"]} ')
peaks_num = peaks
peaks_value = properties["peak_heights"]
print(peaks_num)
print(peaks_value)
plt.plot(x)
plt.plot(peaks, x[peaks], "x")
저의 경우는 820만이상의 값만 잡게 해봤습니다.
- 이제 일정 값 사이의 피크를 찾아내는 방법을 적용해 봅시다
저의 경우는 700만에서 760만 사이의 값중 피크를 찾아내는 것을 적용해서 사용했습니다.
graph_data_or = data_frame_TNT['test_1']
x = graph_data_or[0:13365]
peaks, properties = find_peaks(x, height=(7000000, 7600000))
#print(f'Index of each peaks : {peaks} ')
#print(f'Index of each peaks : {properties["peak_heights"]} ')
peaks_num = peaks
peaks_value = properties["peak_heights"]
print(peaks_num)
print(peaks_value)
plt.plot(x)
plt.plot(peaks, x[peaks], "x")
시계열 데이터의 피크를 scipy와 matplotlib을 이용하여 검출하는 방법을 알아보았습니다.
728x90
'코딩 > python - 코드' 카테고리의 다른 글
[python] Gramian Angular Field로 시계열 데이터 이미지화 (0) | 2021.11.25 |
---|---|
[python] 시계열 데이터를 Recurrence Plot을 이용하여 Image로 표현하기 (0) | 2021.04.06 |
[python] file 소켓을 통한 txt파일 전송 서버->클라이언트 (0) | 2020.11.10 |