검색
검색
공개 노트 검색
회원가입로그인

aiopandas: 비동기 적용과 맵 함수로 Pandas의 새로운 시대 열기

aiopandas: 비동기 적용과 맵 함수로 Pandas의 새로운 시대 열기

개요

Pandas는 데이터 분석과 조작을 위한 강력하고 유연한 라이브러리로, 많은 데이터 과학자와 분석가들이 애용하고 있습니다. 그러나 Pandas의 본질적인 동기 처리 방식은 비동기 API 호출을 할 때 성능에 제약이 따릅니다. 이에 대한 해결책으로 'aiopandas'가 등장했습니다. aiopandas는 Pandas 함수에 비동기 지원을 추가하여 비동기 함수 처리를 간편하게 하고, 실시간 진행 상태 추적 기능까지 제공합니다.

주요 기능

aiopandas는 pandas의 기본 함수인 .apply(), .map(), .applymap(), .aggregate(), .transform()에 비동기 지원을 추가합니다. 이는 최대 병렬 처리를 통해 제어된 동시성으로 비동기 함수를 자동으로 실행할 수 있게 해줍니다. 또한 tqdm 라이브러리를 사용하여 실시간으로 진행 상태를 시각화할 수 있습니다.

import aiopandas as pd  # Pandas에 비동기 메소드를 추가
import asyncio
from tqdm import tqdm

# 샘플 DataFrame 생성
sample_data = {'x': range(10)}
df = pd.DataFrame(sample_data)

# 비동기 함수 정의 (예: API 호출, I/O 작업 등 시뮬레이션)
async def async_function(x):
    await asyncio.sleep(0.1 * x)  # 비동기 처리 시뮬레이션
    return x * 2  # 예제 변환

# 비동기 함수를 데이터프레임 컬럼에 적용
async def main():
    df['y'] = await df.x.amap(async_function, max_parallel=5, tqdm=tqdm)
    print(df)

# 메인 함수 실행
asyncio.run(main())

왜 aiopandas를 사용할까?

aiopandas는 비동기 API 호출, 웹 스크래핑, 데이터베이스 쿼리 등의 작업에 이상적입니다. 특히 비동기 I/O 작업과 결합된 Pandas 워크플로우에 대해 큰 속도 향상을 제공합니다. 사용법 또한 간단하여 기존의 .map()이나 .apply()를 각각 .amap().aapply()로 바꾸기만 하면 됩니다.

설치 방법

아래 명령어를 사용하여 aiopandas를 설치할 수 있습니다.

git clone https://github.com/telekinesis-inc/aiopandas.git
cd aiopandas
pip install .

기여와 감사의 말

aiopandas 프로젝트는 커뮤니티의 풀 리퀘스트와 문제 제기를 환영합니다. 이 프로젝트는 tqdm.pandas() 메서드에서 영감을 받아 개발되었으며, tqdm 유지 관리자들에게 감사의 뜻을 전합니다.

참고

공유하기
카카오로 공유하기
페이스북 공유하기
트위터로 공유하기
url 복사하기
조회수 : 99
heart
T
페이지 기반 대답
AI Chat