FireDucks: 가속화된 완전 호환 판다스 라이브러리

판다스(Pandas)는 Python을 사용하는 많은 데이터 전문가들이 사용하는 데이터 조작 라이브러리입니다. 이는 많은 전문가들이 데이터 과학 경력을 시작할 때부터 배워온 표준입니다.
판다스는 사용하기 쉽지만 때로는 속도가 느릴 수 있습니다. 데이터셋이 커지고 분석이 복잡해질수록 판다스의 실행 속도는 더 느려집니다. 판다스의 대안으로 많은 프레임워크가 개발되었지만, 대부분은 판다스를 기반으로 구축하기보다 자체 시스템을 사용합니다.
이러한 이유로 FireDucks는 판다스를 대체하는 대신 가속화하기 위한 개선책으로 등장했습니다.
그렇다면 FireDucks는 어떻게 작동할까요? 함께 알아보겠습니다.
FireDucks 소개
FireDucks는 판다스를 완전히 대체하는 대신 가속기 역할을 하는 Python 라이브러리입니다. 판다스를 기반으로 하여 사용 중인 판다스 API의 실행 속도를 향상시키는 방식으로 작동합니다.
FireDucks가 판다스 실행을 가속화하는 방법은 두 가지입니다: 컴파일러 최적화와 멀티스레딩입니다.
최적화 컴파일러는 Python 프로그램을 실행 전에 중간 언어로 변환하는 방식으로 작동합니다. 이 변환을 통해 프로그램 출력을 변경하지 않고도 프로그램을 더 빠르게 실행할 수 있습니다. FireDucks에서 사용되는 중간 언어는, DataFrame에 맞게 특별히 설계되어 판다스 실행 시간을 향상시키는 데 효과적입니다.
FireDucks는 또한 백엔드에서 멀티스레딩을 사용하여 프로세스를 가속화합니다. 멀티스레딩을 통해 FireDucks는 GPU가 계산 속도를 향상시키는 방식과 유사하게 CPU의 여러 코어를 활용하여 속도를 높일 수 있습니다.
또한 FireDucks는 지연 실행 모델을 통해 프로세스를 실행합니다. 지연 실행 모델은 결과가 필요할 때만 실행되는 일괄 처리 방식입니다. 이를 통해 FireDucks의 주요 메서드는 DataFrame을 직접 처리하지 않고 컴파일러가 이전에 사용한 중간 언어를 활용합니다. 결과가 필요할 때, 이전에 생성된 모든 중간 언어가 동시에 실행됩니다.
이것이 FireDucks가 실행 속도를 향상시키는 간단한 소개입니다. 이제 실제 Python 코드로 시도해 보겠습니다.
코드 구현
시작하려면 pip를 사용하여 라이브러리를 설치합시다. 아래 코드를 통해 할 수 있습니다.
pip install fireducks
판다스 라이브러리에 FireDucks를 구현하는 방법은 두 가지가 있습니다: Hook 또는 명시적 import 방식입니다.
Hook을 사용하면 FireDucks를 import하지 않고도 활성화할 수 있습니다. 다음 코드를 사용하면 됩니다.
%load_ext fireducks.pandas
import pandas as pd
Hook을 사용하면 내부 API를 변경하지 않고도 판다스를 FireDucks로 쉽게 대체할 수 있습니다.
판다스를 변경하고 싶다면 라이브러리를 명시적으로 import해야 합니다. 다음 코드를 사용하면 됩니다.
import fireducks.pandas as pd
라이브러리가 설치되었으니 FireDucks와 판다스 라이브러리를 비교해 보겠습니다. FireDucks가 동일한 API를 사용하면서도 상당히 더 빠르다는 것을 확인할 수 있습니다.
예를 들어, 샘플 데이터를 생성하고 값을 정렬하는 두 라이브러리의 성능을 비교해 보겠습니다.
import time
import numpy as np
import pandas as pd
import fireducks.pandas as fpd
n = 1000000
np.random.seed(42)
data = {
"x": np.random.randint(0, 100, n),
"y": np.random.rand(n)
}
df_pandas = pd.DataFrame(data)
df_fireducks = fpd.DataFrame(data)
start_pd = time.time()
sortedpd = dfpandas.sort_values("x")
timepd = time.time() - startpd
start_fd = time.time()
sortedfd = dffireducks.sort_values("x")
timefd = time.time() - startfd
print("Pandas sort time: {:.4f} sec".format(time_pd))
print("FireDucks sort time: {:.4f} sec".format(time_fd))
결과는 다음과 같습니다.
Pandas sort time: 0.0009 sec
FireDucks sort time: 0.0004 sec
FireDucks가 판다스 라이브러리보다 얼마나 빠른지 확인할 수 있습니다. 차이가 크게 느껴지지 않을 수 있지만, 더 큰 데이터셋과 복잡한 실행에서는 속도 차이가 훨씬 더 두드러집니다.
이것이 FireDucks에 대해 알아야 할 모든 것입니다. 판다스가 너무 느리다고 느낄 때 사용해 보세요.
결론
FireDucks는 새로운 프레임워크로 전환하지 않고도 판다스 작업을 가속화하기 위해 설계된 Python 라이브러리입니다. 컴파일러 최적화와 멀티스레딩을 사용하여 FireDucks는 실행 성능을 크게 향상시킬 수 있습니다.
이 라이브러리는 이미 사용 중인 API를 변경할 필요가 없어 사용하기 쉽습니다. FireDucks는 특히 처리 시간이 너무 오래 걸릴 수 있는 대규모 데이터셋과 복잡한 실행에 유용합니다.
도움이 되었기를 바랍니다!