파이썬 판다스로 텍스트 파일 읽기 : read_table()
파이썬 판다스로 표 형태의 텍스트 파일(데이터 파일)을 불러와서 데이터프레임에 저장한 후, 연산, 데이터 추출, 데이터 가시화 등의 작업을 할 수 있습니다. 물론 엑셀에서도 이런 작업을 모두 할 수 있지만, 데이터를 자동으로 처리하는 데는 판다스가 유리합니다. 이 포스팅에서는 파이썬 판다스로 표 형태의 텍스트 파일을 읽어오는 방법을 알아보겠습니다.
글의 순서
파이썬 판다스로 읽을 텍스트 파일 형태
텍스트 파일을 판다스 데이터프레임으로 만드는 파라미터
파이썬 판다스로 읽을 텍스트 파일 형태
파이썬 판다스 read_table() 함수는 표 형태로 구성된 데이터 파일을 읽을 수 있게 해줍니다.
이번 포스팅에서 다루는 텍스트 파일은 아래 그림과 같이 데이터가 쉼표로 분리된 csv 파일 형태, 공백으로 분리된 형태, tab으로 분리된 형태입니다. 파일 이름은 각각 반복문_시간_csv.txt, 반복문_시간_공백.txt, 반복문_시간_tab.txt입니다.
데이터는 4행 2열의 표 형태이며, 반복문_시간_공백.txt 파일의 경우 header는 2행에 위치하고 있고, 반복문_시간_tab.txt 파일의 경우 header가 없습니다.
실습코드01은 파이썬으로 표 형태의 텍스트 파일을 불러와서 판다스 데이터프레임 변수 df에 저장하는 코드입니다. 각 파일을 구분하기 위하여 판다스 데이터프레임 변수를 df_csv, df_gap, df_tab으로 구분하였습니다. pd.read_table()이 pandas의 read_table() 함수를 나타냅니다. read_table() 함수의 파라미터는 다음 절에 정리하였습니다. 참고로 header가 없는 텍스트 파일인 반복문_시간_tab.txt 을 읽을 때는, names 옵션으로 열 이름을 지정해 주었습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
import pandas as pd file_path='C:/_python/' #01) comma로 구분된 text file 읽어오기 print('\n--comma--') df_csv = pd.read_table(file_path+'반복문_시간_csv.txt',sep=',') print(df_csv.head()) #02) 공백으로 구분된 text file 읽어오기 print('\n--gap, 2번째 줄이 header--') df_gap = pd.read_table(file_path+'반복문_시간_공백.txt',header=1, sep='\s+') print(df_gap.head()) #03) tab으로 구분된 text file 읽어오기 print('\n--tab--') df_tab = pd.read_table(file_path+'반복문_시간_tab.txt',sep='\t', header=None, names=['method','time(sec)']) print(df_tab.head()) print('\n--데이터 각 열의 type 확인--') print('--comma--') print(df_csv.dtypes) print('\n--gap--') print(df_gap.dtypes) print('\n--tab--') print(df_tab.dtypes) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
--comma-- 반복문 실행시간(sec) 0 while_loop 8.763060 1 for_loop 5.682706 2 sum_range 2.973586 3 sum_numpy 0.232516 --gap, 2번째 줄이 header-- 반복문 실행시간(sec) 0 while_loop 8.763060 1 for_loop 5.682706 2 sum_range 2.973586 3 sum_numpy 0.232516 --tab-- method time(sec) 0 while_loop 8.763060 1 for_loop 5.682706 2 sum_range 2.973586 3 sum_numpy 0.232516 --데이터 각 열의 type 확인-- --comma-- 반복문 object 실행시간(sec) float64 dtype: object --gap-- 반복문 object 실행시간(sec) float64 dtype: object --tab-- method object time(sec) float64 dtype: object |
텍스트 파일을 판다스 데이터프레임으로 만드는 파라미터
pandas의 read_table() 함수로 텍스트파일을 불러올 때 사용할 수 있는 파라미터가 실습코드 보다는 많은데 사용빈도가 높은 파라미터를 정리해 보겠습니다.
▶ io
텍스트 파일이 있는 경로. 만약 웹 상에 있다면 url을 지정합니다.
여기서, url은 웹 주소를 의미합니다.
▶ sep
한 행에서 각 열 사이의 구분을 쉼표(comma(,))로 한 경우, 그냥 공백인 경우, tab으로 분리된 경우로 나눌 수 있습니다. 각각 sep=‘,’, sep=‘\+s’, sep=’\t’으로 지정합니다.
▶ encoding
파일에서 글자를 읽어올 때, 어떤 방식으로 읽을 것인지를 지정할 수 있습니다. 마이크로소프트 오피스(MS Office)에서 저장한 파일을 읽을 때는 ‘cp949’, 나머지 대부분은 ‘utf-8’입니다. ‘utf-8’일 경우 encoding을 생략해도 됩니다.
▶ header
열 이름으로 사용할 행을 지정합니다. 별도 지정하지 않으면 첫 행을 열 이름으로 지정합니다. 만약 header가 없다면 header=None 이라고 씁니다.
▶ names
열 이름을 리스트 형태로 지정할 수 있습니다.
마치며 …
이 포스팅에서는 파이썬 판다스로 표 형태의 텍스트 파일을 읽어오는 방법을 알아보았습니다. 표 형태의 텍스트 파일(데이터 파일)을 불러와서 연산, 데이터 추출, 데이터 가시화 등의 작업을 하는 것은 엑셀에서도 가능합니다만, 판다스로 불러오게 되면 파이썬이라는 코딩 언어가 가진 장점을 최대한 활용할 수 있습니다. 특히 자동화할 때 유리합니다. 이번 포스팅의 판다스 read_table()을 유용하게 사용하시기 바랍니다.
함께 참고하면 더 좋은 글 :
▶ 파이썬 판다스로 엑셀 파일의 원하는 부분 골라 읽기
▶ 시계열 데이터 분석 : pandas CSV 파일 저장, 읽기
▶ 시계열 데이터 전처리 결과 확인 : pandas Series
▶ 시계열 데이터 전처리 결과 확인 : pandas DataFrame
▶ 파이썬 데이터 분석! 데이터 분석을 위한 코딩언어 파이썬
참고자료
pandas, IO tools (text, CSV, HDF5, …)