[Python/Matplotlib] 데이터 시각화 기초 - 1. 파이썬에서 외부 파일(txt/csv) 읽어오기

JavaChip·2022년 2월 18일
0
post-thumbnail
  • 이 시리즈에서 실습하는 모든 코드는 Jupyter notebook(anaconda3) 환경에서 실행되었습니다.

파이썬에서 파일 읽기

  • 파이썬에서 파일 입출력을 관리하기 위해 open() 함수를 사용한다.
    우선, 사용 예제를 통해 open() 사용법을 알아보자.

txt 파일 읽기

=== 'test.txt'의 파일 내용 ===
안녕하세요.(\n)
오늘은 파이썬 공부를 합니다.(\n)
열공합시다!(\n)

read() 사용

f = open('test.txt', 'r', encoding='utf-8')

data = f.read()
print(data)

f.close()

# === 실행 결과 ===
# 안녕하세요.
# 오늘은 파이썬 공부를 합니다.
# 열공합시다!

readline() 사용

f = open('test.txt', 'r', encoding='utf-8')

data = f.readline()
print(data)

f.close()

# === 실행 결과 ===
# 안녕하세요.
# 

readlines() 사용

f = open('test.txt', 'r', encoding='utf-8')

data = f.readlines()
print(data)

f.close()

# === 실행 결과 ===
# ['안녕하세요\n', '오늘은 파이썬 공부를 합니다.\n', '열공합시다!\n']
  • open('test.txt', 'r', encoding='utf-8')의 의미:
    test.txt 파일을 r(읽기) 모드로 불러오되, 인코딩은 utf-8 방식으로 불러들인다.

  • open() 메소드의 파일 열기 모드:
    r - read, 읽기 모드
    w - write, 쓰기 모드(모든 내용을 삭제하고 새로 씀. 덮어쓰기에 해당.)
    a - append, 추가 모드(기존 내용에 덧붙임. 이어쓰기에 해당.)

  • 불러온 파일을 담은 변수 f를 활용해 파일의 내용을 가져올 수 있다.
    read() - 전체 내용 그대로 읽어오기
    readline() - 한 줄 내용을 읽어오되, 개행문자도 함께 읽어온다.
    예시의 경우, print()의 개행과 중복되어 개행이 두 번 이루어졌다.
    readlines() - 파일의 내용이 한 줄씩 요소로 들어있는 리스트를 반환한다.

  • open()으로 가져온 파일은 반드시 close() 해주는 편이 좋다.

각 메소드별 전체 읽어오기 방법

# read()는 그 자체로 전체를 읽어오는 메소드이므로 생략함

# readline() 활용
f = open('test.txt', 'r', encoding='utf-8')
while True:
    data = f.readline()
    if data=="": break
    else: print(data, end="")    # print()의 자동 줄 바꿈 방지
f.close()

# readlines() 활용
f = open('test.txt', 'r', encoding='utf-8')
data = f.readlines()
for row in data:
    print(row, end="")    # print()의 자동 줄 바꿈 방지
f.close()

csv 파일 읽기

csv 모듈 사용하기

import csv

f = open('seoul.csv', 'r', encoding='cp949')
# seoul.csv 파일을 r(읽기) 모드로 불러오되,
# 인코딩은 cp949(Windows 한글 인코딩 default 방식) 방식으로 불러들인다.

data = csv.reader(f, delimiter=',')
# csv 파일을 담고 있는 변수 f를 reader()함수에 넣어 data라는 csv reader 객체 생성
# csv 파일의 데이터를 기호 ,를 기준으로 분리하여 읽어온다.

for row in data:
	print(row)
f.close()
  • 실행 결과
    (이하 생략)

참고

  • delimiter=','를 지정해주지 않아도 reader()의 default delimiter가 기호 , 로 지정되어 있으므로 위 실행 결과와 동일한 결과를 얻을 수 있다.

  • 만약, 원본 파일의 delimiter 설정값과 다른 기호를 delimiter로 지정한다면 아래와 같은 결과가 나온다.
    ['날짜,지점,평균기온(℃),최저기온(℃),최고기온(℃)'] (이하 생략)

profile
자바를 와그작

0개의 댓글