본문 바로가기

Software/Python

Python pandas를 이용한 저장된 파일에서 읽은 데이터를 쉽게 사용하기

Python pandas의 기초에 대한 이야기를 했는데요.[바로가기] 그 후에 살짝꿍... 응용 예제 하나 적어볼까 해요^^. 사실 IPython 환경에서 Python을 사용하면서 pandas와 같은 모듈을 이용하는 건 역시 데이터를 빠르게 분석하고 이를 도식화 혹은 그래프로 표현하여 상황을 파악... 그것도 빨리~ 파악하는데 사용하는 것이 제맛이죠^^.

언제나 그렇듯 pandas를 import해야죠... 흠.. 생각해보니 numpy는 사용하지 않았는데.. 습관처럼 import 해버렸네요ㅠㅠ.

설명을 위해 임의의 화일이 하나 있다고 보죠~~ 이름은 sample1.txt입니다. 이걸 pd.read_table로 읽을 수 있습니다. 왠만한 모니터링 환경에서 저장된 raw 데이터 화일이라면 그냥 다 읽습니다.^^. 그걸 확인했더니... 뭔가 필요없는 columns가 하나 보이네요. 아마 문장의 끝을 알려주는 부분을 인식한 모양입니다. 뭐 그냥 놔둬도 상관은 없을 수 있지만... 그냥 연습삼아 columns하나 삭제해볼까요^^

일단 columns속성에서 이상한 아이를 발견했네요^^ 이름을 확인해야하니까요^^

그 아이를 drop 속성에서 axis=1을 주고 삭제 할 수 있습니다. 깔끔하네요^^

사실 raw 데이터의 index는 시간입니다. 단위는 10kHz에서 샘플링되었으니 10kHz의 역수겠지요. 그레서 time이라는 열을 만들고 시간축을 만들어 넣었습니다. 일단 rawData는 잘 건들지 않는 습관을 가지는게 이렇게 분석할때는 좋아요~~^^ 그리고 지금에서야 이야기하지만.. 위 그래프는 어떤 장치의 전류를 측정한 파일이랍니다. 그래서 인덱스를 바꿀까 하다가.. raw 데이터는 놔두고 그냥 current라는 열을 만들어봤네요^^

그리고 난 다음.. 새로운 DataFrame에 current를 넣구요... index는 time으로 지정해 주었습니다.

pandas에서 바로 plot()속성을 이용하면 그래프를 그릴 수 있습니다. 그것도 라벨에 범례(legend)까지 붙여서 말이죠^^. 참 고맙습니다.^^. 그런데 이번에는 아까 tmpRawData 상태에서 바로 그려볼께요^^

직접 x축y축을 지정할 수 있습니다. 그리고 관심있는 한 영역만 확대(xlim, ylim)하고, 이럴때는 legend가 의미가 없으니 꺼두는 거죠^^. 그나저나 저 전류가 오버슈트가 있네요..ㅠㅠ 뭐 아무튼... 오늘은 이렇게 파일로 저장된 데이터를 pandas를 이용해서 쉽게 읽어들여서 살짝 가공한 다음 아~~~주 쉽게 그래프로 표현하는 예제를 하나 보여드렸습니다.^^

반응형