728x90
데이터 처리와 Pandas 연동
강의 목표:
- FastAPI와 Pandas를 연동하여 데이터를 처리하는 방법을 이해한다.
- 수집된 데이터를 Pandas로 처리하여 변환하는 /process_data 엔드포인트를 구현한다.
강의 세부 내용:
1. Pandas와 FastAPI 연동 개념
- Pandas: Python의 대표적인 데이터 분석 라이브러리로, 데이터 처리 및 변환에 최적화되어 있습니다. 테이블 형태의 데이터를 다루고, 데이터 정리, 변환, 필터링 등 다양한 기능을 제공합니다.
- FastAPI와 Pandas의 연동: 수집된 데이터를 FastAPI에서 받아 Pandas로 처리하여 통계나 데이터를 변환한 후 클라이언트에 반환하는 구조를 학습합니다.
2. Pandas 기본 기능 소개
- Pandas의 주요 객체:
- DataFrame: 테이블 형태의 2차원 데이터 구조.
- Series: 1차원 배열과 유사한 구조로, DataFrame의 각 열을 구성하는 요소.
- Pandas는 CSV, Excel, JSON 등 다양한 형식의 파일을 읽고 처리할 수 있으며, 이를 이용해 데이터를 가공하고 분석할 수 있습니다.
실습: Pandas로 데이터 처리하는 /process_data 엔드포인트 구현
1. Pandas 설치
- FastAPI와 함께 Pandas를 설치합니다.
pip install pandas
2. FastAPI와 Pandas 연동 예제
- 먼저 /process_data라는 엔드포인트를 구현하여 데이터를 받아 Pandas로 처리한 후 반환하는 작업을 수행합니다.
from fastapi import FastAPI from pydantic import BaseModel import pandas as pd app = FastAPI() # 데이터 입력 모델 정의 class DataInput(BaseModel): name: str age: int salary: float # POST 엔드포인트 정의 @app.post("/process_data/") async def process_data(data: list[DataInput]): # 입력된 데이터를 Pandas DataFrame으로 변환 data_dict = [item.dict() for item in data] df = pd.DataFrame(data_dict) # 데이터 처리: 예시로 나이를 기준으로 필터링 filtered_df = df[df['age'] > 30] # 처리된 데이터를 JSON 형태로 반환 return filtered_df.to_dict(orient="records")
3. 코드 설명:
- DataInput 모델: Pydantic의 BaseModel을 사용하여 데이터 구조를 정의합니다.
- name: str: 이름 필드.
- age: int: 나이 필드.
- salary: float: 급여 필드.
- /process_data 엔드포인트:
- 클라이언트로부터 여러 개의 데이터 항목을 리스트로 받아옵니다.
- 받은 데이터를 Pandas의 DataFrame으로 변환합니다.
- df[df['age'] > 30]: 나이가 30 이상인 사람들만 필터링하는 간단한 데이터 처리 예시.
- 필터링된 결과를 JSON 형태로 클라이언트에게 반환합니다.
4. 테스트: /process_data 엔드포인트에 POST 요청 보내기
- Postman 또는 curl을 사용해 /process_data 엔드포인트에 데이터를 전송하고 처리된 결과를 확인합니다.
Postman 사용 예시:
- Method: POST
- URL: http://127.0.0.1:8000/process_data/
- Body: JSON 형식으로 데이터를 전송.
[ {"name": "Alice", "age": 32, "salary": 50000}, {"name": "Bob", "age": 24, "salary": 45000}, {"name": "Charlie", "age": 36, "salary": 60000} ]
curl 사용 예시:
curl -X 'POST' \
'http://127.0.0.1:8000/process_data/' \
-H 'Content-Type: application/json' \
-d '[{"name": "Alice", "age": 32, "salary": 50000}, {"name": "Bob", "age": 24, "salary": 45000}, {"name": "Charlie", "age": 36, "salary": 60000}]'
- 응답
[
{"name": "Alice", "age": 32, "salary": 50000},
{"name": "Charlie", "age": 36, "salary": 60000}
]
5. Pandas의 다양한 처리 방법:
- 필터링: 나이나 급여와 같은 조건을 이용하여 데이터 필터링.
- 정렬: 데이터를 특정 필드를 기준으로 정렬
df.sort_values(by='age', ascending=False)
- 집계: 특정 필드를 기준으로 평균, 합계 등의 통계를 계산
df['salary'].mean() # 급여 평균
마무리 및 추가 학습
- 이번 강의에서는 Pandas를 사용하여 데이터를 처리하는 방법을 학습했습니다. 클라이언트로부터 수집된 데이터를 Pandas DataFrame으로 변환하고, 필터링 및 처리 후 결과를 반환하는 실습을 진행했습니다.
- 다음 강의에서는 데이터를 실제 데이터베이스에 저장하고 관리하는 방법을 다룹니다.
728x90
'FastAPI' 카테고리의 다른 글
FastAPI 강좌 5강: 비동기 처리와 성능 최적화 (1) | 2024.10.09 |
---|---|
FastAPI 강좌 4강: 데이터 분석 결과 API 구현 (0) | 2024.10.09 |
FastAPI 강좌 2강: 데이터 수집 API 구현 (0) | 2024.10.09 |
FastAPI 강좌 1강: FastAPI 기본 개념과 환경 설정 (0) | 2024.10.09 |
데이터 분석 개발자를 위한 FastAPI 강좌 (8강) (1) | 2024.10.09 |