1. 저장을 위한 데이터 준비하기
지난 강의에서 우리는 BeautifulSoup
라이브러리를 사용해 웹 페이지에서 데이터를 추출하는 법을 배웠어. 이제 우리가 스크래핑한 데이터를 분석하기 편리한 형식으로 변환해 볼거야. 데이터를 스크립트 안에만 두면 큰 도움이 안 되잖아? 오늘은 데이터를 CSV와 Excel로 저장하는 방법을 배울 거야. 그러니까, 프로그래머의 삶에서 중요한 건 데이터를 "먹이는" 거... 아니, 저장하는 거지.
데이터를 재미있는 표 형식으로 변환하기 전에, 데이터를 내보내기 위해 어떻게 준비해야 하는지 잠시 살펴보자. 보통 우리가 웹 페이지에서 추출한 데이터는 리스트나 딕셔너리 형태야. 가능하면 데이터를 표 형식에 맞게 잘 정리하자.
데이터 예시
다음은 당신이 책에 대한 데이터를 수집했다고 가정하자:
books = [
{"title": "해리 포터와 마법사의 돌", "author": "조앤 K. 롤링", "price": "350.00"},
{"title": "반지의 제왕", "author": "J.R.R. 톨킨", "price": "500.00"},
{"title": "마스터와 마르가리타", "author": "М. А. 불가코프", "price": "450.00"}
]
2. CSV
형식으로 저장하기
CSV
(Comma-Separated Values)는 표 데이터를 저장하는 데 사용되는 간단한 텍스트 형식이야. CSV
의 각 줄은 하나의 레코드고, 각 열은 쉼표로 구분돼. 우리 데이터를 이 형식으로 저장하는 방법을 알아보자.
csv
라이브러리 사용하기
Python은 csv
모듈이라는 아주 편리한 기능을 제공해서, CSV
파일 작업을 매우 쉽게 만들어줘. 우리의 책 데이터를 CSV
로 내보내는 방법은 다음과 같아:
import csv
with open('books.csv', mode='w', newline='', encoding='utf-8') as file:
writer = csv.DictWriter(file, fieldnames=["title", "author", "price"])
writer.writeheader()
writer.writerows(books)
print("데이터가 books.csv에 저장되었습니다.")
참고: 파일을 w
모드로 열 때 항상 newline=''
를 지정하자. 특히 Windows에서는 빈 줄이 추가되는 걸 방지해줘.
CSV
에서 데이터 읽기
우리가 만든 데이터를 다시 불러오는 것도 배워보자. CSV
에서 데이터를 읽는 방법은 다음과 같아:
with open('books.csv', mode='r', encoding='utf-8') as file:
reader = csv.DictReader(file)
for row in reader:
print(row)
3. Excel 형식으로 저장하기
Python에서 Excel 작업을 위해 우리는 pandas
라이브러리를 사용할 거야. pandas
를 사용하면 우리의 데이터를 DataFrame으로 쉽게 변환해서 다양한 형식으로, 특히 Excel로 내보낼 수 있어.
pandas
설치하기
아직 pandas
를 설치하지 않았다면, pip을 사용해서 설치할 수 있어:
pip install pandas openpyxl
pandas
를 사용해 Excel로 내보내기
이제 우리의 책 데이터를 Excel로 저장해보자:
import pandas as pd
df = pd.DataFrame(books)
df.to_excel('books.xlsx', index=False, engine='openpyxl')
print("데이터가 books.xlsx에 저장되었습니다.")
Excel에서 데이터 읽기
만든 데이터를 다시 사용하는 기쁨도 중요하니까, Excel에서 데이터를 읽는 법도 배워보자:
df = pd.read_excel('books.xlsx')
print(df)
4. 에러와 에러 처리
프로그래밍의 다른 측면들과 마찬가지로 데이터 내보내기에서 에러가 발생할 수 있어. 가장 흔한 에러는 파일 경로가 잘못되었거나 필요한 라이브러리가 없을 때 발생하지. 예를 들어, openpyxl
을 설치하지 않으면 Excel 내보내기가 안 돼.
파일 존재 여부 확인
파일을 쓰거나 읽으려 하기 전에 파일의 존재 여부를 확인하는 게 좋아. 이를 위해 os
모듈을 사용할 수 있어:
import os
if os.path.exists('books.csv'):
print("파일 books.csv가 존재합니다.")
else:
print("파일 books.csv를 찾을 수 없습니다.")
믿기 힘들겠지만, 초보자에게 가장 흔한 실수는 기존 데이터를 실수로 덮어쓰는 거야. 파일 기록 자동화는 진정한 예술이야.
또한 try-except
를 사용해 에러 처리를 포함시키는 것도 잊지 말자. 그러면 스크립트가 문제가 생기더라도 멈추지 않아.
GO TO FULL VERSION