CH1. 데이터 전처리 완벽 가이드(1) | Notion
0. 데이터 분석? 데이터 전처리?
www.notion.so
CSV 파일 읽기 (pd.read_csv)와 쓰기 (DataFrame.to_csv)
- CSV 읽기: CSV는 가장 많이 사용되는 데이터 교환 형식입니다. 판다스의 pd.read_csv('파일경로') 함수를 사용하면 파일 경로 또는 URL로부터 CSV 파일을 읽어 DataFrame을 얻을 수 있습니다.
- 예를 들어, Kaggle의 샘플 슈퍼스토어 데이터가 superstore_orders.csv로 제공된다면 다음처럼 읽습니다:
import pandas as pd
orders = pd.read_csv('superstore_orders.csv')
print(orders.head(5))
```
Row ID Order ID Order Date Ship Date Ship Mode Customer ID ....
0 1 CA-2017-152156 08/11/2017 11/11/2017 Second Class CG-12520
1 2 CA-2017-152156 08/11/2017 11/11/2017 Second Class CG-12520
2 3 CA-2017-138688 12/06/2017 16/06/2017 Second Class DV-13045
3 4 US-2016-108966 11/10/2016 18/10/2016 Standard Class SO-20335
4 5 US-2016-108966 11/10/2016 18/10/2016 Standard Class SO-20335
```
- read_csv의 주요 옵션
- 구분자가 콤마가 아닌 경우 sep 인자를 지정할 수 있고, 헤더가 없는 파일은 header=None으로 읽은 뒤 컬럼 이름을 지정하면 됩니다.
- 한글이 포함된 CSV의 경우 인코딩 문제로 읽지 못할 때 pd.read_csv('file.csv', encoding='utf-8') 혹은 필요한 인코딩(e.g. 'cp949')을 지정하면 됩니다.
- 또한 parse_dates=['Order Date']처럼 날짜 컬럼을 바로 날짜 타입으로 읽도록 지정할 수도 있습니다.
- CSV 쓰기: 편집 또는 분석한 데이터프레임을 CSV로 저장할 때는 DataFrame.to_csv('파일경로', index=False) 메서드를 사용합니다. index=False 를 지정하면 행 인덱스는 저장하지 않고 오직 데이터만 저장합니다 (일반적으로 행 번호는 의미 없는 경우가 많으므로).
orders.to_csv('processed_orders.csv', index=False)
# ➡️ processed_orders.csv 파일이 생성되고, 엑셀 등에서 열어볼 수 있는 csv 형식으로 저장됨
Excel 파일 읽기 (pd.read_excel)와 쓰기(DataFrame.to_excel)
- Excel 읽기: 판다스는 pd.read_excel('파일경로', sheet_name=0)으로 엑셀 파일도 읽을 수 있습니다.
- sheet_name 파라미터로 시트 이름이나 번호를 지정하여 특정 시트만 불러올 수 있습니다 (기본 0은 첫 번째 시트).
- 예를 들어 슈퍼스토어 데이터셋이 Excel 워크북(Superstore.xlsx)으로 제공되는 경우:
orders = pd.read_excel('Superstore.xlsx', sheet_name='Orders')
print(orders.shape) # 엑셀 시트이름 까지 입력!
# 엑셀을 불러올 때 판다스 내부적으로 openyxl 모듈을 사용하므로,
# [pip install openyxl]을 입력해서 설치해야 함.
(9994, 21) # 읽은 데이터프레임의 (행, 열)의 크기
- Excel 쓰기 : DataFrame.to_excel('파일경로', index=False)로 데이터프레임을 엑셀 파일로 저장할 수 있습니다. 엑셀은 여러 시트를 가질 수 있는데, 판다스는 기본적으로 첫 번째 시트에 저장합니다.
- 여러 시트를 저장하려면 ExcelWriter 객체?????를 사용하여 df.to_excel(writer, sheet_name='Sheet1') 식으로 여러 데이터프레임을 다른 시트에 쓸 수 있습니다. 간단한 예:
orders.head(100).to_excel('orders_sample.xlsx', index=False)
# 이 코드는 "주문 데이터 상위 100개 행을 엑셀 파일로 저장"
실습예제
작은 데이터프레임을 직접 만들어 Excel로 저장하고 다 시 불러오기
import pandas as pd
# 샘플 데이터프레임 생성
df_sample = pd.DataFrame({"X": [1, 2], "Y": [3, 4]})
# Excel로 저장
df_sample.to_excel("sample.xlsx", index=False)
# Excel로부터 읽기
df_new = pd.read_excel("sample.xlsx")
print(df_new)
--------------
X Y
0 1 3
1 2 4
JSON 파일 읽기 (pd.read_json)와 쓰기 (DataFrame.to_json)
- JSON 읽기 : JSON은 웹에서 데이터를 주고받을 때 많이 쓰이는 구조화된 문자열 형식입니다. 판다스에서는 pd.read_json('파일경로')로 JSON 파일이나 문자열을 읽어서 데이터프레임으로 만들 수 있습니다. 단, JSON 구조가 표 형태로 바로 떨어지는 경우에 한합니다.
- 예를 들어 다음과 같은 people.json 파일이 있다고 가정하겠습니다:
[
{"name": "Alice", "age": 25, "city": "NY"},
{"name": "Bob", "age": 30, "city": "LA"}
]
➡️ 이름, 나이, 도시 정보가 담긴 JSON 배열
people = pd.read_json('people.json')
print(people)
------------------------------------
name age city
0 Alice 25 NY
1 Bob 30 LA
: ➡️ JSON 객체의 key값 = 컬럼명
- JSON 쓰기
- DataFrame.to_json('파일경로', orient='records') 형태로 데이터를 JSON 파일로 저장할 수 있습니다.
- orient='records' 옵션을 주면 위 예시와 같이 리스트 내부에 각 행이 객체(record)로 표현된 JSON 형태로 저장됩니다 (orient='columns'로 저장하면 조금 다른 포맷이 되므로 일반적으로 'records'가 편합니다).
'데이터 전처리 & 시각화' 카테고리의 다른 글
| [데이터 전처리] 데이터 인덱싱과 슬라이싱 (1) | 2025.08.28 |
|---|---|
| [데이터 전처리] Pandas 소개 및 설치 | Series와 DataFrame 기본 구조 (1) | 2025.08.28 |
| [데이터 전처리] 데이터 전처리는 왜 중요할까? (2) | 2025.08.28 |