반응형

[python]CSV 데이터 포멧 입출력

CSV데이터

CSV(Comma Separated Values)데이터를 처음 접할때 엑셀에서 지원되는 포멧이기 때문에 처음에는 엑셀파일로 아는 경우가 많다. 그러나 실제로는 콤마를 기준으로 데이터를 구분하는 형식이라 볼 수 있다. 이는 CSV의 원 뜻만 확인해도 알 수 있다.

기본적으로 문자열 형태로 저장되기 때문에 문자열 처리에 자신이 있다면 쉽게 csv데이터를 만드는 것과 읽는 것을 하기에는 간단한 편이지만, 간단한 만큼 ','(콤마)가 들어있는 데이터에 대해서는 구분이 잘 안된다. 그리고 이러한 문제가 데이터 오염이라고 말을 한다.

물론 콤마를 데이터안에 반드시 입력을 해야 할 경우에는 "따옴표로 감싸주는 방법이 있다. 그러나 데이터에 다시 따옴표가 들어가야 할 경우 상황이 복잡해지게 된다. 가능하면 간단한 데이터 그중에서도 수치 데이터에 사용하기를 권장한다. 그외에 복잡한 데이터의 경우 다른 형태의 포멧을 사용하길 권장한다.


파이썬에서 CSV

본 예시는 '파이썬 프로그래밍으로 지루한 작업 자동화하기'서적의 예시를 참조하였다.

csv파일 읽기

수학자들의 사랑을 받는 파이썬은 최근에는 CSV 모듈이 자체적으로 내장이 되어 있다. (물론 문자열처리에 자신이 있다면 직접 구현해도 상관없지만, 굳이 바퀴를 재 발명할 필요는 없다.) 따라서 추가로 모듈을 다운로드 설치 과정 없이 import해서 사용할 수 있다. 사용방법은 csv파일을 open한뒤에 csv모듈의 reader 객체를 생성하여서 읽을 수 있다. 이때 읽어진 데이터는 리스트 형식으로 읽어진다.

 여기서 주목해야 할 점은 읽어진 모든 데이터는 문자열로 읽어진다는 점이다. 만약 수치를 처리하고 싶다면 수치형으로 형전환을 해야 한다.


예시1)

>>>import csv
>>>exampleFile = open('example.csv')
>>>exampleReader = csv.reader(exampleFile)
>>>exampleData = list(exampleReader)




csv파일 쓰기

반대로 csv 파일로 쓸경우에는 csv모듈의 writer객체를 생성하고 파일open객체를 연결시켜줘야 쓸 수 있다. 단, open시 줄바꿈 옵션을 제거(newline='')해야 한다. 이는 csv모듈에서 한줄씩 작성될때 마지막에 줄바꿈으로 구분하기 때문이다.


예시2)

import csv
>>>outputFile = open('output.csv', 'w', newline='')
>>>outputWrite = csv.writer(outputFile)
>>>outputWrite.writerow(['spam', 'eggs', 'bacon', 'ham'])
>>>outputWrite.writerow(['hello, world!', 'eggs', 'bacon', 'ham'])
>>>outputWrite.writerow([1, 2, 3.141592, 4])
>>>outputFile.close()


예시에서 hello, world 부분을 csv파일을 다른 편집기로 열어보면 ""으로 감싸진 것을 확인할 수 있다.



생각해 볼 점

만약 데이터가 안들어 있는 빈경우에는 csv를 편집기로 열어서 확인할 경우 콤마(,)만 있는 것을 확인할 수 있다. 이 경우 읽게되면 문자열 형식으로 읽기 때문에 ''(빈문자) 형태로 읽어진다.

 또한 csv의 파일의 에러를 확인하는 방법으로 콤마의 개수를 확인하는 방식이기 때문에 파일이 깨진경우(혹은 데이터 오염) 대부분 콤마의 개수가 안맞는 경우이다.


참고자료

서적, 파이썬 프로그래밍으로 지루한 작업 자동화하기



반응형
반응형

[python]기본 Shell 활용

파이썬의 IDE와 Shell

 파이썬으로 본격적으로 개발을 한다면은 사실 파이참(PyCharm) 같은 IDE(통합개발환경) 툴을 사용 하는 것이 좋다. 다른 IDE처럼 문법 검사 등 개발 시간을 단축시켜주는 많은 보조 기능들이 제공이 되기 때문이다. 과거에는 명필은 붓을 탓하지 않는 다는 말이 있다.


 그러나 오늘날은 도구의 성능의 영향이 확실히 크다. 그러나 초보자 혹은 상황이 여의치 않을 경우에는 파이썬을 설치할때 기본적으로 제공되는 IDE도 상당한 도움이 된다. 특히, Shell은 간단하게 테스트 할때 많은 도움이 된다.


Python Shell의 활용

 기본적으로 Windows PowerShell 이나 CMD 그리고 유닉스 계열의 bash shell 에서 파이썬을 설치한 다음에 python(혹은 python3)만 입력할 경우 보이는 >>>이 보이는 화면이 파이썬 Shell이다. 여기에서는 한 줄씩 JS(자바스크립트)처럼 코드 입력후 실행을 해볼 수 있다. 반면 GUI에 제공되는 Shell의 경우 같이 설치된 IDLE를 실행하면 파이썬에서 제공하는 Shell을 확인할 수 있다.


 이러한 기능은 모듈을 테스트하거나 간단한 코드의 결과를 확인할 때 유용하다. 이러한 기능은 개발을 단축시키는데에 도움이 된다. 특히 GUI에 제공되는 Shell의 경우 전용 단축키와 기능들이 제공이 되기 때문에 운영체제에서 제공되는 Shell에서 실행하는 것보다 더 편리한 편이다.


주요 단축키

 주요 단축키의 경우 Options -> Configure IDLE 를 선택하여 나온 화면의 Key 탭에서 변경이 가능하다. 많은 단축키들이 있고 이를 자신의 입맛대로 수정을 할 수 있다. (그러나 정해진 표준이 없다면, 가능하면 수정을 하지 않는 것을 권장한다) 그리고 기본적으로 자주 사용하는 단축키를 적어 놓는다.


윈도우 기준

Shell 재시작 : Ctrl + F6

이전 줄 코드 읽어 오기(이전으로) : Alt + p

이전 줄 코드 읽어 오기(최근으로) : Alt + n

되돌리기 : Ctrl + Shift + z

자동완성 : tab


 그 외 기본적으로 동일하게 사용되는 기능은 오려두기, 복사, 붙여넣기, 문장 맨앞으로, 문장 맨뒤로는 굳이 외우지 않아도 잘 알기 때문에 생략을 한다.

반응형
반응형

[python] 버전에 대한 논의와 라이브러리 설치

버전에 대한 (의미없는) 논쟁

 필자가 처음 파이썬을 접하게 된것은 기록시점으로부터 약 4년전인 2014년 말 혹은 2015년 초 쯤 이었다. 당시 필자는 순수 물리학으로 졸업해서 대학원을 컴퓨터 공학으로 전과 지원을 해서 공부를 했기 때문에 이제 막 C/C++와 자료구조를 한참 익히고 있을 때였다.


 그러던 중 멀티미디어 강의를 하고 있던 선배의 부탁으로 실습준비를 도와주면서 파이썬을 처음으로 접하게 되었다. 당시 python3.1이 나오던 시기였기 때문에 대부분 자료는 python2.7을 기준으로 하는 자료가 많았다. 게다가 대부분읜 자료는 윈도우보다는 리눅스나 OS X 기반환경에 대한 설명이 주를 이루었었다. 이는 당시 윈도우 환경에서는 오류가 나는 일이 많았던 것으로 기억이 난다.


 때문에 당시에 규모 있는 커뮤니티에서 2.7 버전과 3.x 버전 중 어느 버전을 사용해야 하느냐는 질문이 나오면 2.x 버전을 사용하는 사람을 게으름뱅이(?)로 취급하는 사람들도 꽤 있었기 때문에 논쟁이 격해지기도 했는데, 의미가 없는 짓이다. 일단 당시 수치계산에 중요한 numpy 라는 라이브러리가 아직 3.x를 완벽하게 지원되지 않았기 때문에 이는 자신이 하려는 일에 지원이 되는지 여부를 확인하고 선택해야 한다.


 물론 지금은 시간이 많이 지나서 기존 2.7에서 지원되는 라이브러리가 3.x에서도 많이 되는것 같다. 특히 pip 같은 라이브러리 관리 툴의 경우 윈도우 환경에서 사용하기 위해서는 별도로 설치 방법을 찾아서 설치를 해주었어야 했으나 지금은 Python 설치시 같이 설치가 된다.



라이브러리 설치

 라이브러리 설치는 이미 Python이 설치되어 있다는 전제하에서 진행을 한다.

 라이브러리를 설치하는 방법은 직접 파일을 다운로드 받아서 설치하는 방법이 있지만, 오프라인 환경에서 작업해야 하는 것이 아닌 이상 pip를 통해서 설치하면 된다. 만약 python2.7 과 python3.x를 같이 혼용해서 사용한다면, -m 옵션을 사용해서 명령어를 실행하면 된다.


예시로 numpy를 설치한다.


# 한가지 버전만 사용하는 경우
pip install numpy

# 두가지 버전을 같이 사용하는 경우 만약 3.x의 경우
python3 -m pip install numpy


 위의 명령어를 powershell 이나 cmd 창에서 실행하면 된다. MS에서는 최근 powershell을 밀고 있으니 powershell을 사용하는 것도 권장한다.

 만약 opencv를 설치할 경우에도 pip를 통해서 설치가 가능하다. 과거에는 python 패키지 관리격인 anaconda를 통해서 설치가 가능했지만, 필자가 이 글을 적는 시점에 확인한 결과 opencv도 설치가 가능했다.


# OpenCV 를 설치하는 경우
# 여기서 matplotlib는 그래프 같은 새창을 띄울때 사용되는 라이브러리이다
python3 -m pip install matplotlib opencv-python

# python3 인터프리터를 호출한후 라이브러리 호출을 확인한다
>>>import cv2
>>>print(cv2.__version__)


대부분 설치 확인을 이미지를 띄워보지만, 버전만 확인해봐도 호출이 제대로 되는지 확인이 된다.


 위의 방식으로 설치할 경우 버전이 최신으로 설치가 되니 버전을 선택을 하고 싶다면, 버전도 추가로 입력을 해줘야 한다. 이처럼 과거보다 python 프로그램의 진입장벽이 많이 낮아 진것이 체감된다. 특히 OpenCV의 경우 C++로 개발하는 것이 아니라면, 이제는 소스를 받아서 CMake로 메타 빌드까지 안해도 되는 시대가 되었다.


참조자료

python opencv 설치 방법



반응형

'Python > Python3' 카테고리의 다른 글

[python3]타입검사(Type Check)  (0) 2019.04.23
[Python3]Str(문자열)의 편리한 기능들  (0) 2019.04.20
[Python3]List의 편리한 기능들  (0) 2019.04.19
[python]CSV 데이터 포멧 입출력  (0) 2018.10.22
[python]기본 Shell 활용  (0) 2018.10.20

+ Recent posts