파이썬

[python/pandas] csv 파일을 DataFrame으로 불러오기 / csv로 저장하기 (read_csv, to_csv)

도도o 2024. 7. 20. 21:50

파이썬에서 데이터프레임은 주로 pandas 라이브러리를 이용하여 처리하게 된다.

이 글에서는 데이터 파일을 가져오고 저장하는 방법과 자주 사용하는 옵션을 간단하게 정리해두고자 한다.

 

1. pd.read_csv()

`pd.read_csv()` 함수는 csv 파일의 데이터를 불러오는 데 사용된다. txt 파일도 같은 함수로 불러올 수 있다.

import pandas as pd

df = pd.read_csv("파일경로/data.csv")
df = pd.read_csv("파일경로/data.txt")

 

 

1) header

파일의 첫 행에 컬럼명이 있는 경우 `header` 옵션을 사용하여 지정할 수 있다. 기본값은 `header=0`으로, 첫 번째 줄이 컬럼명으로 간주된다.

import pandas as pd

df = pd.read_csv("파일경로/data.csv")                   # 첫번째 줄에 컬럼명이 있는 경우
df = pd.read_csv("파일경로/data.csv", header = False)   # 첫번째 줄에 컬럼명이 없는 경우

 

데이터에 컬럼명이 포함되어 있지 않은 경우, 컬럼명을 직접 지정해서 불러올 수 있다. 컬럼명이 있더라도, 원하는대로 컬럼명을 변경할 수 있다. 이 경우, 데이터 컬럼의 순서대로 새로운 컬럼명을 작성하면 된다. 이러한 경우들에 사용하는 옵션은 `names` 이다.

header = ["ID", "Name", "Gender"]
df = pd.read_csv("파일경로/data.csv", names = header)

df.head()

 


2) usecols

특정한 컬럼만 불러오고 싶을 때는 `usecols` 옵션을 사용하여 불러올 컬럼명을 명시하면 된다.

import pandas as pd

columns = ["Survived", "Age", "Parch", "Fare", "Embarked"]
df = pd.read_csv("titanic.csv", usecols = columns)

print(df.columns)

 


3) sep

csv 파일의 구분자는 기본적으로 comma(,)지만, 다른 구분자를 사용할 경우 `sep` 옵션을 지정해야 한다.

다른 구분자로는 "|"(bar), "\t"(tab), ":"(colon) 등이 있다. 

import pandas as pd

# 구분자가 탭인 파일
df = pd.read_csv("파일경로/data.csv", sep="\t")

# 구분자가 공백인 파일
df = pd.read_csv("파일경로/data.txt", sep = "  ")

 

 


4) chunksize

대용량 데이터를 처리할 때는 `chunksize` 옵션을 사용하여 데이터의 일부씩 불러올 수 있다.

나는 RAM 8기가를 사용하는데, 용량이 큰 파일을 불러올 때, 주피터 노트북의 커널이 터지는 경우가 있었다.

이럴 때는 chunk 단위로 불러오면 메모리 문제를 해결할 수 있다.

import pandas as pd

chunksize = 1000000
chunks = pd.read_csv("파일경로/data.csv", chunksize = chunksize)

for chunk in chunks:
	print(chunk.head())

 

 

 

2. pd.DataFrame.to_csv()

`pd.DataFrame.to_csv()` 함수는 데이터프레임을 csv 파일로 저장하는 데 사용된다. txt 파일도 같은 함수로 저장할 수 있다.

import pandas as pd

df = pd.DataFrame({
    "ID": [1, 2, 3],
    "Name": ["Alice", "Bob", "Charlie"],
    "Age": [25, 30, 35]
})

# CSV 파일로 저장하기
df.to_csv("파일경로/output.csv")

 

 

1) index

데이터프레임을 저장할 때, 기본적으로 인덱스가 함께 저장된다. 인덱스를 제외하고 저장하려면 `index=False` 옵션을 사용한다.

인덱스를 저장하지 않아도, pandas로 불러오면 자동으로 인덱스가 생성된다. 따라서 데이터프레임을 저장할 때 가장 많이 사용하는 옵션이다.

df.to_csv("파일경로/output.csv", index=False)

 

 

2) columns

특정한 컬럼만 저장하고 싶을 때는 `columns` 옵션을 사용하여 저장할 컬럼명을 명시하면 된다.

df.to_csv("파일경로/output.csv", columns=["ID", "Name"])

 

 

 

 

 

 

참고한 자료 : pandas document (공식문서)

- https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html

- https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_csv.html