아래 글에서 소개한 것처럼, 우리는 흔히 CSV 파일을 얻을 수 있습니다. Pandas에서는 CSV 혹은 Excel 파일을 어떻게 열고 활용할까요? 앞선 글에서 만든 데이터들을 어떻게 저장할까요?
이번 글에서는 Dataframe 을 CSV, Excel(xlsx), txt 파일로 저장하고, 읽어오는 법을 소개합니다.
* 본 글은 위 영상을 참고합니다.
1. csv, txt, xlsx 로 저장하기
우리가 사용했던 자료입니다. 이걸 csv와 txt로 저장해봅시다.
A. csv 로 저장하기
df.to_csv('score.csv', encoding = 'utf-8-sig', index=False)
# Encoding 없을 시 엑셀로 열면 글자가 깨질 수 있습니다.
# index = False 라면, 기존의 인덱스 '지원번호'가 사라진 채 데이터만 나옵니다.
B. 텍스트(.txt) 파일로 저장
df.to_csv('score.txt', sep='\t') #데이터 간 구분을 탭으로. 만약 sep='+' 를 넣으면 + 가 됩니다.
sep 으로 탭을 넣었을 때와 +를 넣었을 때입니다. 텍스트는 해봤는데 안되더군요.
C. 엑셀(.xlsx) 파일로 저장
df.to_excel('score.xlsx')
너무 간단한 것들이라 따로 할 말이 없습니다.
2. csv 파일 열기 (skiprows, nrows)
df = pd.read_csv('score.csv', skiprows=[1,3,5,7,8]) #그냥 2를 넣으면 제일 위 2줄 스킵
df
Skiprows 를 이용해서 원하는 행만 가져올 수 있습니다. 그냥 숫자를 넣으면, 그 갯수만큼 뛰어넘고 가져옵니다. 위 코드처럼 집합을 넣으면 그 순서의 행들만 스킵합니다.
df = pd.read_csv('score.csv', nrows=3) #지정된 갯수 만큼만 row 가져옴
df
nrows 는 원하는 갯수만큼만 가져오게 해주는 명령어입니다. 두 개를 조합하면, 앞의 몇 행을 뛰어넘고 그 때부터 몇개의 행을 가져올 수 있겠죠?
3. 텍스트(.txt) 파일 열기
df=pd.read_csv('score.txt')
df
음... 아까 sep='+'를 한번 실험해봤더니 이런 일이 벌어졌습니다. 이 데이터가 +로 구분된다는 걸 아니까, 이용해봅시다.
df=pd.read_csv('score.txt', sep='+')
df
이제 잘 나오는군요. csv 파일이 비록 comma seperated value 파일이긴 하지만, 다른 기호로 데이터가 구분되어도 잘 가져올 수 있겠습니다.
그런데 우리는 지원번호를 index로 넣었었는데, 이게 그냥 데이터로 빠져버렸습니다. 이걸 index로 넣어봅시다.
df=pd.read_csv('score.txt', sep='+', index_col='지원번호')
df
index_col 을 통해 원하는 Column을 index로 만들 수 있게 되었습니다. 당연히 지원번호 대신 이름을 넣으면 이름이 index가 됩니다. 아래처럼 따로 명령어를 사용해 index를 설정할 수도 있습니다.
df=pd.read_csv('score.txt', sep='+')
df.set_index('이름', inplace=True)
df
인덱스를 이번에는 이름으로 설정해봤습니다. 잘 바뀌었네요. inplace 안쓰시면 안바뀝니다...!
4. 엑셀(.xlsx) 파일 열기
df= pd.read_excel('score.xlsx', index_col='지원번호')
이렇게 치면 위에 다른 사진들처럼 잘 나옵니다. 인덱스는 지원번호가 되겠죠?
제가 이런 걸 배울 때 강의와 다른 것들을 자꾸 시도해보는 편입니다. 그래서 조금 어지러울 수 있다는 점 양해 부탁드립니다,,,^^