파이썬 판다스 텍스트 파일을 DataFrame으로 변환 예제
파이썬에서 텍스트 파일을 데이터프레임으로 바꾸는 방법을
text 파싱을 이용한 예시와 read_csv 함수를 이용하여 간단하게 여는 예시로 나누어서
설명해보도록 하겠습니다.
예제로 아래와 같은 간단한 텍스트 파일이 student.txt로 저장되어 있다고 가정해보겠습니다.
데이터 간 구분자는 공백을 가정합니다.
txt file to DataFrame 방법 1 : 텍스트 파싱 후 변환
다소 복잡할 수 있는 방법으로 txt 파일을 연 뒤, 데이터 파싱 과정을 거쳐
데이터프레임으로 변환하는 방법을 먼저 다루어보겠습니다.
이 방법은 구분자가 불규칙한 상황 등에서 유용할 수 있습니다.
만일, 구분자가 규칙적이라면 방법 2의 read_csv 함수를 이용한 방법 사용을 권장드립니다.
Step 1 : txt 파일 열기
먼저, txt 파일의 정보를 readlines 함수를 통해서 리스트 형태로 받아옵니다.
with open('student.txt', 'r') as f:
data = f.readlines()
print(data)
# 저장된 값
['이름 번호 국어 수학 영어\n',
'AAA 1000 80 90 95\n',
'BBB 1001 89 92 88\n',
'CCC 1002 96 83 97\n',
'DDD 1003 100 80 87']
Step 2 : 열 이름 목록 가져오기
column의 이름으로 진행될 첫 줄의 데이터를 split 함수를 통하여 분리해줍니다.
구분자가 공백이 아니라면 split 내에 해당 구분자를 input으로 적어주시면 됩니다.
마지막 부분의 줄 바꿈 기호는 strip 함수를 이용하여 제거하겠습니다.
column_name = data[0].strip().split()
print(column_name)
# ['이름', '번호', '국어', '수학', '영어']
Step 3 : 각 행의 데이터 가져오기
열 이름이 저장되어 있는 첫 행을 제외하고, 두 번째 행부터
각 행마다 저장된 데이터를 불러와서 열 strip, split의 전처리를 진행해줍니다.
data_split = [x.strip().split() for x in data[1:]]
print(data_split)
# [['AAA', '1000', '80', '90', '95'], ['BBB', '1001', '89', '92', '88'], ['CCC', '1002', '96', '83', '97'], ['DDD', '1003', '100', '80', '87']]
Step 4 : 데이터프레임 변환
각 행 단위로 분할된 데이터가 저장된 리스트(Step 3에서 생성)와
열 이름이 저장된 리스트(Step 2에서 생성)를 pd.DataFrame 함수에 input으로 넣어
최종 데이터프레임을 생성하면 변환이 완료됩니다.
import pandas as pd
df = pd.DataFrame(data_split, columns = column_name)
df
txt file to DataFrame 방법 2 : read_csv 함수 사용
만일, 각 데이터가 구분되어 있는 구분자가 파일 전체에서 동일한 상황이라면,
read_csv 함수를 이용하며 txt 파일의 데이터프레임 변환이 아주 쉽게 가능합니다.
해당 함수의 상세한 사용법의 예시는 아래의 이전 포스팅을 참고해주세요.
여기서는 read_csv 파일 내에 해당 txt 파일을 input으로 넣고,
sep 인자를 구분자로 맞추어 함수를 실행시키면 데이터프레임 변환이 완료됩니다.
df = pd.read_csv('student.txt', sep = ' ')
df
'Python > Pandas' 카테고리의 다른 글
[Pandas] 파이썬 데이터프레임 열 이름 바꾸기 방법 정리 : columns, rename (0) | 2022.04.09 |
---|---|
[Pandas] json 파일 <-> 데이터프레임 변환 : to_json, read_json (0) | 2022.04.01 |
[Pandas] 파이썬 결측치 대치하기(전체 열/특정 열 대체와 0, 평균 값, 보간 대체) : fillna (2) | 2022.03.14 |