안녕하세요!
오늘은 주제를 약간 달리 해서 파이썬 txt 파일 불러오는 방법이랑 txt 파일 불러오는 방법에 대해서 설명드리겠습니다.
파이썬에서 txt 파일을 불러오는 방법은 txt 자료가 어떤 지에 따라서 다를 것 같습니다.
두 가지의 경우에 따라서 불러오는 방법에 대해서 알려드릴 텐데요. txt 안의 데이터가 데이터 프레임처럼 표형식으로 나오는 경우와 비정형 데이터 수집할 때처럼 줄 별로 되어 있는 경우를 나누어서 설명드리겠습니다. 이게 말로 하려니 약간 어렵긴 하네요🤣 txt 파일 보면 바로 이해가 가실 겁니다.
그러면 시작해보겠습니다.
1) txt 파일이 데이터 프레임 형식일 경우
test 파일에는 열이름이 a, b, c이고 1~9까지의 데이터를 표 안에 넣은 것입니다.
데이터를 구분해 주기 위해서 데이터 사이에 !를 넣었는데요. 이거는 다른 거로 만드시면 주로 tab이나 , 로 되어있을 겁니다. 뭐.... 사실 어떤 거로 해도 구분할 수 있는 방법이 있으니 아무거나 해도 상관없습니다.
일단 이런 형식의 파일을 불러오기에 앞서서 필요한 패키지가 있습니다.
파이썬에서 데이터의 형태를 다루려면 기본 중에 기본인 pandas 패키지가 필요합니다. 데이터 프레임 관련한 코드들은 pandas 안에 많이 들어있으니 알고 계시면 좋을 것 같아요.
파이썬에서 패키지를 설치하는 방법은
pip install 패키지이름
처음에만 설치해주시면 되고 이후에는 코드를 실행하기 전에 import만 해주시면 됩니다.
pandas. 코드를 입력하면서 작업해도 되지만 pandas는 주로 pd라는 약어로 이용합니다.
그러니, 아래처럼 import 할 때 as pd라고 같이 써주면 됩니다.
!pip install pandas
import pandas as pd
이렇게 코드를 작성하면 pandas 설치와 불러오는 것까지 마무리 됐습니다.
우리가 txt 파일을 불러올 때 사용할 코드는 read_table입니다.
pandas 패키지 안에 들어있는 코드를 이용하는 것이니 pd.read_table()로 하면 됩니다.
데이터이름 = pd.read_table("파일주소.txt",sep = "구분자")
주로 이렇게 작성하게 될 텐데, 구분자는 제가 작성한 txt 파일에서는! 였으니 sep="!"로 바꾸어서 넣겠습니다.
aa = pd.read_table('test.txt',sep="!")
print(aa)
코드를 입력 후 print(aa)를 실행시키면
이렇게 a, b, c라는 열 이름을 가진 데이터 프레임으로 불러오게 됩니다.
여기서는 txt 파일만 얘기했지만 구분자가 , (콤마)인 csv 파일 역시 read_table로 불러올 수 있습니다. 구분자 안에만 다른 기호를 넣어주면 되니깐 어렵지 않습니다.ㅎㅎ
바로 볼 test 3 역시도 비슷합니다.
test3 파일은 아까 앞에서 보았던 test 파일에서 구분하는 기호를 ! 대신 공백으로 바꾸어 준 것입니다. 공백과 탭의 경우에는 따로 sep에 넣지 않아도 read_table이 알아서 분리를 시켜줍니다. 한번 볼까요?
ab= pd.read_table('test3.txt')
print(ab)
이 코드를 실행시키면,
아까와 같은 결과가 나옵니다. 마찬가지로 저도 궁금해서 tab으로 txt 파일을 구분해서 sep를 지정 안 해줘도 되는지를 실험해봤는데 둘 다 위의 결과처럼 나오니 그대로 사용하셔도 될 것 같습니다.
2) txt 파일이 줄글 형태일 경우
다음은 txt 파일이 줄글 형태로 된 경우입니다. 저의 경우에는 텍스트 마이닝을 할 때 주로 사용한 것 같습니다.
먼저, txt 파일이 어떻게 생겼는지 한번 볼까요?
이렇게 줄글 형태로 되어있고 엔터를 이용해 구분되어 있습니다.
이런 경우에는 데이터를 불러오는 방법이 약간 다른데요.
f = open('test_word.txt',"r") #'r'은 읽기모드
먼저 open 코드를 이용해서 txt 파일을 열어주면 됩니다.
그다음에 안의 내용을 불러와야 합니다.
data=f.read().splitlines()
print(data)
원래 f.read()까지만 하면 전체 데이터를 한 번에 불러옵니다만 이러면 다시 분리해줘야 하는 작업을 해줘야 하기 때문에 그 뒤에 바로 splitlines()라는 코드를 입력해서 줄마다 분리된 채로 data에 저장되게 만들었습니다.
print 된 data를 보시면 바로 이해하실 수 있습니다.
line별로 구분해서 리스트에 넣어도 되지만 line 안에 있는 단어들 하나하나를 리스트에 넣을 수도 있습니다. for문을 이용하는 방법 두 가지가 있습니다. 둘 중에서 두 번째 꺼가 더 편하지만 아직 익숙하지 않다면 첫 번째 방법으로 해도 무관합니다.
먼저 for 문을 이용한 방법을 살펴보겠습니다.
aa=[]
for word in data:
aa.append(word.split())
print(aa)
aa라는 새로운 리스트를 만들고 data로 읽어낸 줄을 하나씩 for문으로 불러들입니다. 그리고 append라는 리스트 추가 코드를 이용해서 aa에 한 줄씩 리스트를 추가합니다. 여기서 word는 txt 파일에 있던 각각의 줄을 의미합니다. 그 줄을 split라는 코드를 이용해서 분리를 해서 aa에 하나씩 추가하는 것입니다. split()는 () 안의 문자를 기준으로 분리를 시키는 데 아무것도 작성하지 않으면 엔터와 띄어쓰기를 기준으로 분리를 합니다.
그 결과를 한번 보면
이렇게 문장이 띄어쓰기를 기준으로 구분이 된 것을 알 수 있습니다.
다른 방법도 살펴보겠습니다.
cc = [x.split() for x in data]
print(cc)
아까 앞에서 봤던 것보다는 간단하게 만들어졌습니다.
cc라는 데이터는 리스트입니다. 그 리스트는 data 안에 있는 요소 중 하나인 x를 split()한 값으로 넣어줄 겁니다. 우리가 cc 안에 넣어줄 요소들은 x가 split 된 데이터이고 이 x는 data에서 온 겁니다. 처음에는 약간 어렵지만 이 방법도 하다 보면 익숙해집니다.
결과를 한번 보겠습니다.
아까와 결과 값이 같습니다. 코드는 다르지만 이렇게 같은 결과를 낼 수도 있습니다.
모든 작업을 완료한 후 한 가지를 더 해주어야 하는데요. 그건 바로 f입니다. 아까 f를 open만 하고 닫지를 않았기 때문에 close를 입력해서 닫으면 작업은 끝납니다.
f.close()
이번 포스트에서는 파이썬에서 txt 파일을 불러오는 데 이를 리스트로 저장하는 방법과 데이터 프레임으로 저장하는 방법 2가지를 알려드렸습니다. 기초적이고 쉽지만 한동안 안 쓰면 까먹게 돼서.... (저도 포함해서요....ㅠ)
어쨌든 도움이 되셨으면 좋겠습니다.
읽으신 분들에게 도움이 되기를 바라며....
오늘 하루도 즐거운 하루 보내세요( •̀ ω •́ )✧
'코딩 > Python' 카테고리의 다른 글
파이썬 기초 - dataframe 조건에 맞는 값 불러오기(불린 인덱싱) - (1) (0) | 2022.01.04 |
---|---|
파이썬 기초 - dataframe 인덱싱을 위한 코드 iloc, loc - (0) | 2022.01.04 |
파이썬 기초 - dictionary를 dataframe으로 바꾸기, dataframe을 list, dictionary로 바꾸기 (0) | 2022.01.03 |
파이썬 기초 - 데이터 전처리를 위한 DataFrame 데이터 살펴보기 - (with seaborn) (0) | 2021.12.31 |
파이썬 기본 - 인터넷에서 간편하게 구동할 수 있는 구글 코랩(Colaboratory) 소개- (0) | 2021.12.30 |