순서

I. 목적
II. Data list to Pandas Dataframe
III. Pandas Dataframe to .csv file


I. 목적

데이터 2개를 파싱해서 하나는 앞서 Data Plotting에 사용하고,
나머지 하나는 2ms 실시간 데이터이며 csv파일로 저장을 해줘야합니다.

csv파일에 대한 목적은 아래와 같습니다.

모니터링으로 큰 틀의 데이터 흐름을 확인할 순있지만,
단지 시각적인 그림일 뿐 데이터 분석을 할 수 없습니다.

그렇기 때문에 그림이 자연스럽게
적당한 10ms 주기로 업데이트를 했었습니다.

하지만 데이터 분석을 위해서는 실제 모든 데이터를 가져와야하고 (2ms)
이를 파일로 저장해 분석하기 위한 모듈입니다.


II. Data list to Pandas Dataframe

 

매 2ms마다 csv에 데이터를 쌓을 수도 있지만
파일을 계속 쓰고 닫아야하는 시간문제가 발생할 것이라고 생각되었습니다.

그래서 parsing 후에 pandas Dataframe(이하 DF)으로 쌓아주었고
마지막에 Save버튼을 눌렀을 때 Dataframe -> csv로 변환을 진행했습니다.

DF로 변환하는 방법은 다음과 같습니다.

0. Column을 정의한다.
1. Colunm으로 빈 DF를 만든다.
2. concat으로 DF를 쌓는다.

 

엑셀의 Column 항목들

 

Data를 지정안하면 Columns만 있고 데이터는 없는 DF 생성

 

Column항목에 맞춰서 (N x col) List를 DF로 변환

concat으로 DF 쌓아서 업데이트 반복!!


III. Pandas Dataframe to .csv file

UI에서 보시는 바와 같이
이름 / 디렉토리 열기 / Save 버튼이 있습니다.

name / Dir / Save

1. Name
name은 그냥 edit 위젯이므로 스킵하고!!


2. Dir 버튼
Directory Dialog는 Click button widget으로 버튼을 구성하고
내부 시그널 함수에서 구현했다.

dialog = QtGui.QFileDialog() 로 Init해주고
getExistingDirectory()로 파일 경로를 지정해주는 창을 띄운다.
(우리가 익히아는 그 창이다)
(D:/ 는 창이 처음 뜰 때 초기 위치옵션!) 

이 함수를 통해 clicked시 함수호출로 savedir에 경로를 저장합니다
위 경로는 string으로 반환된 경로!


3. Save Button
save 눌렀을 때, 다음 과정을 진행합니다.

1. 해당 Dir이 존재하는지 확인!
os.path.isdir()

2. 해당 디렉토리 + '/ Name.csv'를 추가한다.

3. 해당 이름이 이미 존재하는지 확인!
is_file()

4. 중복이라면 복사본 '(1)', '(2)' 등을 붙여 생성.
to_csv()

+) 1과 2 사이의 if문은
기본적으로 디렉토리가 "D:/depth1/depth2" 처럼 끝나지만
디스크 초기위치라면 "D:/" 로 끝나기 때문에 예외처리를 해준 것입니다.

++) 옵션에서 index=False를 사용하면
DF에는 존재했던 행의 인덱스를 csv에서는 없앨 수 있습니다.

+ Recent posts