찾다
기술 주변기기일체 포함Pandas 코드의 효율성을 향상시키는 두 가지 유용한 팁

테이블 형식 데이터와 함께 Pandas를 사용해 본 적이 있다면 데이터를 가져와서 정리하고 변환한 다음 모델에 대한 입력으로 사용하는 프로세스에 익숙할 것입니다. 그러나 코드를 확장하고 프로덕션에 적용해야 하는 경우 Pandas 파이프라인이 충돌하기 시작하고 느리게 실행될 가능성이 높습니다. 이 글에서는 Pandas 코드 실행 속도를 높이고 데이터 처리 효율성을 향상하며 일반적인 함정을 피하는 데 도움이 되는 2가지 팁을 공유하겠습니다.

Pandas 코드의 효율성을 향상시키는 두 가지 유용한 팁

팁 1: 벡터화 작업

Pandas에서 벡터화 작업은 행별로 반복할 필요 없이 전체 데이터 프레임의 열을 보다 간결한 방식으로 처리할 수 있는 효율적인 도구입니다.

어떻게 작동하나요?

방송은 벡터화된 조작의 핵심 요소로, 다양한 모양의 개체를 직관적으로 조작할 수 있게 해줍니다.

eg1: 요소가 3개인 배열 a에 스칼라 b를 곱하면 Source와 동일한 모양의 배열이 생성됩니다.

Pandas 코드의 효율성을 향상시키는 두 가지 유용한 팁

eg2: 덧셈 연산을 수행할 때 모양이 (4,1)인 배열 a와 모양 (3,)이 있는 배열 b를 추가하면 결과는 모양이 (4,3)인 배열이 됩니다.

Pandas 코드의 효율성을 향상시키는 두 가지 유용한 팁

이를 논의하는 기사가 많이 있었는데, 특히 대규모 행렬 곱셈이 일반적인 딥 러닝에서 그렇습니다. 이 기사에서는 두 가지 간단한 예를 설명합니다.

먼저, 주어진 정수가 열에 나타나는 횟수를 세고 싶다고 가정해 보겠습니다. 가능한 방법은 2가지입니다.

"""计算DataFrame X 中 "column_1" 列中等于目标值 target 的元素个数。参数:X: DataFrame,包含要计算的列 "column_1"。target: int,目标值。返回值:int,等于目标值 target 的元素个数。"""# 使用循环计数def count_loop(X, target: int) -> int:return sum(x == target for x in X["column_1"])# 使用矢量化操作计数def count_vectorized(X, target: int) -> int:return (X["column_1"] == target).sum()

이제 날짜 열이 있는 DataFrame이 있고 이를 지정된 일 수만큼 오프셋하려고 한다고 가정합니다. 벡터화된 연산을 사용한 계산은 다음과 같습니다.

def offset_loop(X, days: int) -> pd.DataFrame:d = pd.Timedelta(days=days)X["column_const"] = [x + d for x in X["column_10"]]return Xdef offset_vectorized(X, days: int) -> pd.DataFrame:X["column_const"] = X["column_10"] + pd.Timedelta(days=days)return X

팁 2: 반복

"for 루프"

반복하는 첫 번째이자 가장 직관적인 방법은 Python for 루프를 사용하는 것입니다.

def loop(df: pd.DataFrame, remove_col: str, words_to_remove_col: str) -> list[str]:res = []i_remove_col = df.columns.get_loc(remove_col)i_words_to_remove_col = df.columns.get_loc(words_to_remove_col)for i_row in range(df.shape[0]):res.append(remove_words(df.iat[i_row, i_remove_col], df.iat[i_row, i_words_to_remove_col]))return result

「apply」

def apply(df: pd.DataFrame, remove_col: str, words_to_remove_col: str) -> list[str]:return df.apply(func=lambda x: remove_words(x[remove_col], x[words_to_remove_col]), axis=1).tolist()

df.apply를 반복할 때마다 제공된 호출 가능 함수는 인덱스가 df.columns이고 값이 행인 시리즈를 가져옵니다. 이는 팬더가 모든 루프에서 시퀀스를 생성해야 함을 의미하며 이는 비용이 많이 듭니다. 비용을 줄이려면 다음과 같이 사용할 df의 하위 집합에 대해 Apply를 호출하는 것이 좋습니다.

def apply_only_used_cols(df: pd.DataFrame, remove_col: str, words_to_remove_col: str) -> list[str]:return df[[remove_col, words_to_remove_col]].apply(func=lambda x: remove_words(x[remove_col], x[words_to_remove_col]), axis=1)

「목록 조합 + 반복자」

목록과 결합된 반복자를 사용하여 반복하는 것이 확실히 더 좋습니다. itertuples는 행 데이터로 (명명된) 튜플을 생성합니다.

def itertuples_only_used_cols(df: pd.DataFrame, remove_col: str, words_to_remove_col: str) -> list[str]:return [remove_words(x[0], x[1])for x in df[[remove_col, words_to_remove_col]].itertuples(index=False, name=None)]

「목록 조합 + zip」

zip은 반복 가능한 객체를 허용하고 튜플을 생성합니다. 여기서 i 번째 튜플은 주어진 반복 가능한 객체의 모든 i 번째 요소를 순서대로 포함합니다.

def zip_only_used_cols(df: pd.DataFrame, remove_col: str, words_to_remove_col: str) -> list[str]:return [remove_words(x, y) for x, y in zip(df[remove_col], df[words_to_remove_col])]

「목록 조합 + to_dict」

def to_dict_only_used_columns(df: pd.DataFrame) -> list[str]:return [remove_words(row[remove_col], row[words_to_remove_col])for row in df[[remove_col, words_to_remove_col]].to_dict(orient="records")]

「캐싱」

우리가 논의한 반복 기술 외에도 캐싱과 병렬화라는 두 가지 다른 방법이 코드 성능을 향상시키는 데 도움이 될 수 있습니다. 캐싱은 동일한 매개변수를 사용하여 pandas 함수를 여러 번 호출하는 경우 특히 유용합니다. 예를 들어 중복 값이 ​​많은 데이터세트에 Remove_words를 적용한 경우 functools.lru_cache를 사용하면 함수 결과를 저장하고 매번 다시 계산하지 않아도 됩니다. lru_cache를 사용하려면 간단히 @lru_cache 데코레이터를 Remove_words 선언에 추가한 다음 선호하는 반복 방법을 사용하여 데이터세트에 함수를 적용하세요. 이렇게 하면 코드의 속도와 효율성이 크게 향상될 수 있습니다. 다음 코드를 예로 들어 보겠습니다.

@lru_cachedef remove_words(...):... # Same implementation as beforedef zip_only_used_cols_cached(df: pd.DataFrame, remove_col: str, words_to_remove_col: str) -> list[str]:return [remove_words(x, y) for x, y in zip(df[remove_col], df[words_to_remove_col])]

이 데코레이터를 추가하면 이전에 발생한 입력의 출력을 "기억"하는 함수가 생성되므로 모든 코드를 다시 실행할 필요가 없습니다.

"병렬화"

마지막 비장의 카드는 pandaralllel을 사용하여 여러 개의 독립적인 df 블록에 걸쳐 함수 호출을 병렬화하는 것입니다. 이 도구는 사용하기 쉽습니다. 도구를 가져와서 초기화한 다음 모든 .applys를 .parallel_applys로 변경하면 됩니다.

아아아아

위 내용은 Pandas 코드의 효율성을 향상시키는 두 가지 유용한 팁의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 51CTO.COM에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
H20 Chip Ban Jolts China AI 회사이지만 오랫동안 충격을 받기 위해 자랑했습니다.H20 Chip Ban Jolts China AI 회사이지만 오랫동안 충격을 받기 위해 자랑했습니다.Apr 25, 2025 am 11:12 AM

Advanced AI 하드웨어에 대한 최근 제한은 AI 지배에 대한 확대 된 지정 학적 경쟁을 강조하여 중국의 외국 반도체 기술에 대한 의존도를 드러냅니다. 2024 년에 중국은 3,800 억 달러 상당의 반도체를 수입했습니다.

OpenAi가 Chrome을 구매하면 AI는 브라우저 전쟁을 지배 할 수 있습니다.OpenAi가 Chrome을 구매하면 AI는 브라우저 전쟁을 지배 할 수 있습니다.Apr 25, 2025 am 11:11 AM

Google의 Chrome의 잠재적 인 강제 매각은 기술 산업 내에서 강력한 논쟁을 불러 일으켰습니다. OpenAi가 65%의 글로벌 시장 점유율을 자랑하는 주요 브라우저를 인수 할 가능성은 TH의 미래에 대한 중요한 의문을 제기합니다.

AI가 소매 미디어의 고통을 해결할 수있는 방법AI가 소매 미디어의 고통을 해결할 수있는 방법Apr 25, 2025 am 11:10 AM

전반적인 광고 성장을 능가 함에도 불구하고 소매 미디어의 성장은 느려지고 있습니다. 이 성숙 단계는 생태계 조각화, 비용 상승, 측정 문제 및 통합 복잡성을 포함한 과제를 제시합니다. 그러나 인공 지능

'AI는 우리이고 우리보다 더 많아요''AI는 우리이고 우리보다 더 많아요'Apr 25, 2025 am 11:09 AM

깜박 거리는 스크린 모음 속에서 정적으로 오래된 라디오가 딱딱합니다. 이 불안정한 전자 제품 더미, 쉽게 불안정하게, 몰입 형 전시회에서 6 개의 설치 중 하나 인 "The-Waste Land"의 핵심을 형성합니다.

Google Cloud는 다음 2025 년 인프라에 대해 더 진지하게 생각합니다.Google Cloud는 다음 2025 년 인프라에 대해 더 진지하게 생각합니다.Apr 25, 2025 am 11:08 AM

Google Cloud의 다음 2025 : 인프라, 연결 및 AI에 대한 초점 Google Cloud의 다음 2025 회의는 수많은 발전을 선보였으며 여기에서 자세히 설명하기에는 너무 많았습니다. 특정 공지 사항에 대한 심도있는 분석은 My의 기사를 참조하십시오.

Talking Baby ai Meme, Arcana의 550 만 달러 AI 영화 파이프 라인, IR의 비밀 후원자 공개Talking Baby ai Meme, Arcana의 550 만 달러 AI 영화 파이프 라인, IR의 비밀 후원자 공개Apr 25, 2025 am 11:07 AM

이번 주 AI 및 XR : AI 구동 창의성의 물결은 음악 세대에서 영화 제작에 이르기까지 미디어와 엔터테인먼트를 통해 휩쓸고 있습니다. 헤드 라인으로 뛰어 들자. AI 생성 콘텐츠의 영향력 증가 : 기술 컨설턴트 인 Shelly Palme

신뢰할 수있는 Q & A, Rag 및 Info Extraction을 위해 Teapotllm을 사용해보십시오신뢰할 수있는 Q & A, Rag 및 Info Extraction을 위해 Teapotllm을 사용해보십시오Apr 25, 2025 am 10:45 AM

Teapotllm : 가벼운 환각 방지 언어 모델 텍스트 생성 모델은 연구 및 응용 프로그램을위한 강력한 도구, 아키텍처, 교육 및 광범위한 데이터 세트를 활용하여 놀라운 기능을 달성합니다. Teapotai의 Open-S

Devin 2.0의 새로운 기능은 무엇입니까? 내부의 전체 고장Devin 2.0의 새로운 기능은 무엇입니까? 내부의 전체 고장Apr 25, 2025 am 10:43 AM

Devin 2.0 : AI를 통한 소프트웨어 개발 혁신 인지 AI의 Devin 2.0은 개발자의 작동 방식을 변화시키고 있습니다. 전임자 인 Devin 2.0의 상당한 업그레이드는 향상된 속도, 효율성 및 사용 편의성을 자랑합니다. 이 AI 기반 도구 Str

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경