내가 공부한 것들

[파이썬] csv 및 Excel 가져오기, 내보내기

2ns 2024. 1. 4. 22:21

데이터를 분석하기 위해 가장 선행되어야 하는 것은 당연 데이터를 불러오는 것이다.

정말 기초 중에 기초지만, 가끔 기억이 안날 때가 있다.

(물론 구글 또는 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 가져오기(불러오기) 및 내보내기 코드를 살펴보았는데, 생각보다 이것저것 옵션들이 많았다.

옵션들을 모두 외울 필요는 없고, 기본적으로 어떻게 불러오고 내보내는지, 옵션들은 무엇이 있는지 이해만 하면 될 것 같다.