오픈소스를 위한 기초 상식

CSV 파일로 데이터 저장: 데이터 관리와 활용의 첫걸음

지나가는 프로도 2025. 2. 2. 14:15

CSV 저장의 기초

웹에서 수집한 데이터를 저장하고 활용하는 방법은 데이터 분석 작업에서 매우 중요합니다. 특히, CSV(Comma Separated Values) 파일은 구조화된 데이터를 저장하는 데 널리 사용되는 포맷으로, Pandas를 활용하면 데이터를 손쉽게 CSV 파일로 저장하고 불러올 수 있습니다. 이 글에서는 CSV 파일로 데이터를 저장하는 방법론과 실용적인 팁을 단계적으로 설명합니다.


 

1. CSV 파일이란 무엇인가?

CSV 파일은 데이터 행이 줄바꿈 문자로 구분되고, 각 열은 쉼표(,)로 분리된 텍스트 기반 파일 형식입니다. CSV 파일은 간단한 구조와 범용성을 갖추고 있어 다양한 환경에서 데이터를 교환하거나 저장하는 데 적합합니다.

CSV 파일의 주요 특징

  1. 경량화: 파일 크기가 작아 대량의 데이터를 효율적으로 저장 가능
  2. 호환성: Excel, Google Sheets, 데이터베이스 등 다양한 툴에서 쉽게 사용 가능
  3. 인간 가독성: 텍스트 편집기로 열어서 내용을 확인 가능

 

2. Pandas로 CSV 파일 저장하기

Pandas는 데이터프레임을 CSV 파일로 쉽게 저장할 수 있도록 to_csv() 메서드를 제공합니다. 아래는 기본적인 저장 과정을 단계별로 정리한 방법론입니다.

2.1 기본 저장 방법

Requests와 BeautifulSoup를 통해 수집한 데이터를 Pandas 데이터프레임으로 변환한 후, CSV 파일로 저장합니다:

더보기
import pandas as pd

# 예제 데이터프레임 생성
data = [
    {"title": "헤드라인 1", "link": "https://example.com/news1"},
    {"title": "헤드라인 2", "link": "https://example.com/news2"}
]
df = pd.DataFrame(data)

# CSV 파일로 저장
df.to_csv('headlines.csv', index=False)

코드 설명

  • df.to_csv():
    • 데이터프레임을 CSV 파일로 저장하는 메서드입니다.
    • index=False는 데이터프레임의 인덱스를 CSV 파일에 포함하지 않도록 설정합니다.

 

CSV 저장의 고급 옵션

CSV 파일을 저장할 때 상황에 따라 다양한 옵션을 활용할 수 있습니다.

3.1 열 이름 지정

CSV 파일의 열 이름을 변경하거나 원하는 순서로 저장할 수 있습니다.

더보기
# 특정 열 이름과 순서로 저장
df.to_csv('headlines_custom.csv', columns=['title', 'link'], index=False)
 
3.2 파일 인코딩 설정

다국어 데이터를 다룰 때, 파일 인코딩을 지정하여 데이터 손상을 방지합니다.

더보기
# UTF-8 인코딩으로 저장
df.to_csv('headlines_utf8.csv', index=False, encoding='utf-8')
 
3.3 구분자 변경

쉼표(,) 대신 다른 구분자를 사용하는 경우 sep 옵션을 설정합니다.

더보기
# 탭 구분자로 저장
df.to_csv('headlines_tab.tsv', index=False, sep='\t')

 

4. CSV 파일 저장 시 유의사항

  1. 파일 경로 설정:
    • 파일을 저장할 디렉토리가 존재하지 않으면 FileNotFoundError가 발생할 수 있습니다. 저장 전에 디렉토리가 존재하는지 확인하세요.
  2. 데이터 포맷 확인:
    • CSV로 저장하기 전에 데이터프레임의 데이터 타입과 포맷을 확인하세요. 예를 들어 날짜 데이터는 문자열로 저장되므로 적절히 변환하는 것이 중요합니다.
  3. 대량 데이터 처리:
    • 대량 데이터를 저장할 경우, 저장 속도를 높이기 위해 chunksize 옵션을 사용하거나 데이터를 분할하여 저장합니다.

 

실습

5. 실습: Requests로 수집한 데이터 저장

아래는 Requests와 Pandas를 사용하여 네이버 뉴스 헤드라인 데이터를 CSV 파일로 저장하는 예제입니다:

더보기

import requests
from bs4 import BeautifulSoup
import pandas as pd

# 네이버 뉴스 데이터 수집
url = 'https://www.naver.com'
headers = {'User-Agent': 'Mozilla/5.0'}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')

# 헤드라인 데이터 추출
headlines = []
news_section = soup.find('div', class_='MediaNewsView-module__news_desc___a55yg')
if news_section:
    for item in news_section.find_all('a'):
        headlines.append({"title": itehttp://m.text.strip(), "link": item['href']})

# 데이터프레임 생성
df = pd.DataFrame(headlines)

# CSV 파일로 저장
df.to_csv('naver_headlines.csv', index=False, encoding='utf-8')

print("CSV 파일 저장 완료: naver_headlines.csv")


 

6. CSV 파일 저장의 활용 방안

6.1 분석 작업

저장된 CSV 파일은 Pandas의 read_csv() 메서드를 사용하여 다시 읽어와 다양한 분석 작업에 활용할 수 있습니다.

더보기

# CSV 파일 읽기
data = pd.read_csv('naver_headlines.csv')

# 데이터 확인
print(data.head())

# 데이터 분석 (예: 제목 길이 확인)
data['title_length'] = data['title'].apply(len)
print(data.sort_values(by='title_length', ascending=False).head())

6.2 데이터 시각화

CSV 파일 데이터를 Matplotlib, Seaborn 등과 같은 라이브러리를 활용하여 시각화할 수 있습니다.


 

7. 결론

CSV 파일로 데이터를 저장하는 것은 데이터 관리와 활용의 기본적인 단계입니다. Pandas의 to_csv() 메서드를 사용하면 수집한 데이터를 간단히 파일로 저장할 수 있으며, 저장된 데이터를 다시 불러와 다양한 분석 및 시각화 작업에 활용할 수 있습니다. 이번 글에서 다룬 기본 방법과 고급 옵션을 적절히 활용하여 더욱 효율적인 데이터 처리 환경을 구축해 보세요!