[파이썬] csv 및 Excel 가져오기, 내보내기
데이터를 분석하기 위해 가장 선행되어야 하는 것은 당연 데이터를 불러오는 것이다.
정말 기초 중에 기초지만, 가끔 기억이 안날 때가 있다.
(물론 구글 또는 ChatGPT에 물어보면 10초도 안되어 알 수 있다.)
다시 한번 상기하고자 이렇게 정리해본다.
먼저 CSV 및 Excel을 가져오기 위해서는 pandas를 불러와야 한다.
pandas를 불러오고 나서 csv를 가져오는(불러오는) 코드는 아래와 같다.
csv 불러오기
import pandas as pd
df = pd.read_csv('23-24 프리미어리그 득점순위(240104 기준).csv')
df
그리고 csv를 가져올 때, 여러 옵션(seps, header, index_col, usecols, encoding 등)이 있다.
1. seps: 구분 기호를 지정하는 옵션(기본값은 ',')
df = pd.read_csv('파일경로.csv', sep='|')
# 파일경로.csv 예시
이름|나이|직업
김철수|30|개발자
이영희|25|디자이너
위 코드의 결과는 다음과 같다.
이름 나이 직업
0 김철수 30 개발자
1 이영희 25 디자이너
2. header: 헤더가 있는 줄을 지정(기본값은 0)
df = pd.read_csv('23-24 프리미어리그 득점순위(240104 기준).csv', header=1)
df
3. index_col: 인덱스로 사용할 열을 지정(index_col=0은 0번째 열(파이썬에서는 0이 첫번째를 뜻함)이 인덱스라는 의미)
df = pd.read_csv('23-24 프리미어리그 득점순위(240104 기준).csv', index_col=0)
df
4. usecols: 읽을 열을 지정(예: 2번째, 4번째 열만 읽기)
df = pd.read_csv('23-24 프리미어리그 득점순위(240104 기준).csv', usecols=[1,3])
df
5. skiprows: 건너뛸 행을 지정(기본값은 0)
여기서 skiprows=1은 첫번째 행을 스킵하고 두번째 행부터 읽어들이고 싶다는 것으로
첫번째 행은 순위, 이름, 팀, 득점, 경기수를 의미하고 이것들을 스킵한다는 의미
(두번째 행이 컬럼으로 가게 됨)
만약 header=1 옵션도 들어가게 되면, 세번째 행이 컬럼으로 가게 된다.
df = pd.read_csv('23-24 프리미어리그 득점순위(240104 기준).csv', skiprows=1)
df
df = pd.read_csv('23-24 프리미어리그 득점순위(240104 기준).csv', skiprows=1, header=1)
df
csv 내보내기
반대로 csv를 내보내는 코드는 아래와 같다. 파일경로와 파일명을 아래와 같이 작성하면, 해당 경로에 csv파일이 생긴다.
1. index: 데이터프레임의 인덱스를 파일에 포함시킬지 여부를 결정하며, 기본값은 True이다.
df.to_csv('저장할 파일경로/파일명.csv', index=False)
위의 4번 예제를 저장한 결과 아래와 같다. (index=True로 했는데, 첫번째 열이 인덱스로 저장된 걸 알 수 있다.)
근데 한글이 ? 물음표로 깨져서 나온다. 그 이유는 인코딩(encoding)을 해주지 않았기 때문이다.
인코딩 옵션을 넣어줘야 하며, 한글은 보통 utf-8-sig, EUC-KR 또는 cp949를 많이 한다.
2. encoding: 문자나 기호들을 컴퓨터에서 저장하거나 전송할 수 있는 형태로 변환하는 과정
(ASCII, UTF-8, ISO 8859-1, EUC-KR, CP949 등이 있음)
df.to_csv('저장할 파일경로/파일명.csv', index=True, encoding='utf-8-sig')
3. header: 열 이름을 파일에 포함시킬지 여부를 결정(기본값: True)
df.to_csv('저장할 파일경로/파일명.csv', index=True, encoding='utf-8-sig', header=False)
Excel 불러오기
df = pd.read_excel('23-24 프리미어리그 득점순위(240104 기준).xlsx')
df
옵션은 csv와 같으며, 다만 엑셀은 여러개의 시트를 보유하고 있어, 특정 시트를 가져오는 코드가 추가로 있다.
(기본값은 첫번째 시트)
df = pd.read_excel('23-24 프리미어리그 득점순위(240104 기준).xlsx', sheet_name=1)
이렇게 하면 두번째 시트가 불러와지게 된다.
Excel 내보내기
df.to_excel('저장할 파일경로/파일명.xlsx', index=False)
csv와 옵션은 같으며, Excel을 불러올 때와 마찬가지로 sheet_name 옵션을 통해 시트 이름을 정의할 수 있다.
이렇게 csv와 Excel 가져오기(불러오기) 및 내보내기 코드를 살펴보았는데, 생각보다 이것저것 옵션들이 많았다.
옵션들을 모두 외울 필요는 없고, 기본적으로 어떻게 불러오고 내보내는지, 옵션들은 무엇이 있는지 이해만 하면 될 것 같다.