목차
팁 1: 벡터화 작업
어떻게 작동하나요?
팁 2: 반복
"for 루프"
「apply」
「목록 조합 + 반복자」
「목록 조합 + zip」
「목록 조합 + to_dict」
「캐싱」
"병렬화"
기술 주변기기 일체 포함 Pandas 코드의 효율성을 향상시키는 두 가지 유용한 팁

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

Jan 18, 2024 pm 08:12 PM
암호 딥러닝 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 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 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

블루 스크린 코드 0x0000001이 발생하는 경우 대처 방법 블루 스크린 코드 0x0000001이 발생하는 경우 대처 방법 Feb 23, 2024 am 08:09 AM

블루 스크린 코드 0x0000001로 수행할 작업 블루 스크린 오류는 컴퓨터 시스템이나 하드웨어에 문제가 있을 때 나타나는 경고 메커니즘입니다. 코드 0x0000001은 일반적으로 하드웨어 또는 드라이버 오류를 나타냅니다. 사용자가 컴퓨터를 사용하는 동안 갑자기 블루 스크린 오류가 발생하면 당황하고 당황할 수 있습니다. 다행히도 대부분의 블루 스크린 오류는 몇 가지 간단한 단계를 통해 문제를 해결하고 처리할 수 있습니다. 이 기사에서는 독자들에게 블루 스크린 오류 코드 0x0000001을 해결하는 몇 가지 방법을 소개합니다. 먼저, 블루 스크린 오류가 발생하면 다시 시작해 보세요.

일반적인 Pandas 설치 문제 해결: 설치 오류에 대한 해석 및 해결 방법 일반적인 Pandas 설치 문제 해결: 설치 오류에 대한 해석 및 해결 방법 Feb 19, 2024 am 09:19 AM

Pandas 설치 튜토리얼: 일반적인 설치 오류 및 해결 방법 분석, 구체적인 코드 예제가 필요합니다. 소개: Pandas는 데이터 정리, 데이터 처리 및 데이터 시각화에 널리 사용되는 강력한 데이터 분석 도구이므로 현장에서 높은 평가를 받고 있습니다. 데이터 과학의 . 그러나 환경 구성 및 종속성 문제로 인해 Pandas를 설치할 때 몇 가지 어려움과 오류가 발생할 수 있습니다. 이 기사에서는 Pandas 설치 튜토리얼을 제공하고 몇 가지 일반적인 설치 오류와 해결 방법을 분석합니다. 1. 팬더 설치

ORB-SLAM3를 넘어! SL-SLAM: 저조도, 심한 흔들림, 약한 텍스처 장면을 모두 처리합니다. ORB-SLAM3를 넘어! SL-SLAM: 저조도, 심한 흔들림, 약한 텍스처 장면을 모두 처리합니다. May 30, 2024 am 09:35 AM

이전에 작성했던 오늘은 딥 러닝 기술이 복잡한 환경에서 비전 기반 SLAM(동시 위치 파악 및 매핑)의 성능을 향상할 수 있는 방법에 대해 논의합니다. 심층 특징 추출과 깊이 일치 방법을 결합하여 저조도 조건, 동적 조명, 질감이 약한 영역 및 심한 지터와 같은 까다로운 시나리오에서 적응을 향상하도록 설계된 다목적 하이브리드 시각적 SLAM 시스템을 소개합니다. 우리 시스템은 확장 단안, 스테레오, 단안 관성 및 스테레오 관성 구성을 포함한 여러 모드를 지원합니다. 또한 시각적 SLAM을 딥러닝 방법과 결합하여 다른 연구에 영감을 주는 방법도 분석합니다. 공개 데이터 세트 및 자체 샘플링 데이터에 대한 광범위한 실험을 통해 위치 정확도 및 추적 견고성 측면에서 SL-SLAM의 우수성을 입증합니다.

코드 0xc000007b 오류 해결 코드 0xc000007b 오류 해결 Feb 18, 2024 pm 07:34 PM

종료 코드 0xc000007b 컴퓨터를 사용하는 동안 때때로 다양한 문제와 오류 코드가 발생할 수 있습니다. 그 중 종료코드가 가장 충격적이며, 특히 종료코드 0xc000007b가 가장 충격적이다. 이 코드는 애플리케이션이 제대로 시작되지 않아 사용자에게 불편을 초래함을 나타냅니다. 먼저 종료코드 0xc000007b의 의미를 알아보겠습니다. 이 코드는 32비트 응용 프로그램이 64비트 운영 체제에서 실행을 시도할 때 일반적으로 발생하는 Windows 운영 체제 오류 코드입니다. 그래야 한다는 뜻이다

모든 장치에서 GE 범용 원격 코드 프로그램 모든 장치에서 GE 범용 원격 코드 프로그램 Mar 02, 2024 pm 01:58 PM

장치를 원격으로 프로그래밍해야 하는 경우 이 문서가 도움이 될 것입니다. 우리는 모든 장치 프로그래밍을 위한 최고의 GE 범용 원격 코드를 공유할 것입니다. GE 리모콘이란 무엇입니까? GEUniversalRemote는 스마트 TV, LG, Vizio, Sony, Blu-ray, DVD, DVR, Roku, AppleTV, 스트리밍 미디어 플레이어 등과 같은 여러 장치를 제어하는 ​​데 사용할 수 있는 리모컨입니다. GEUniversal 리모컨은 다양한 기능과 기능을 갖춘 다양한 모델로 제공됩니다. GEUniversalRemote는 최대 4개의 장치를 제어할 수 있습니다. 모든 장치에서 프로그래밍할 수 있는 최고의 범용 원격 코드 GE 리모컨에는 다양한 장치에서 작동할 수 있는 코드 세트가 함께 제공됩니다. 당신은 할 수있다

블루 스크린 코드 0x000000d1은 무엇을 나타냅니까? 블루 스크린 코드 0x000000d1은 무엇을 나타냅니까? Feb 18, 2024 pm 01:35 PM

0x000000d1 블루 스크린 코드는 무엇을 의미합니까? 최근 몇 년 동안 컴퓨터의 대중화와 인터넷의 급속한 발전으로 인해 운영 체제의 안정성 및 보안 문제가 점점 더 부각되고 있습니다. 일반적인 문제는 블루 스크린 오류이며, 코드 0x000000d1이 그 중 하나입니다. 블루 스크린 오류 또는 "죽음의 블루 스크린"은 컴퓨터에 심각한 시스템 오류가 발생할 때 발생하는 상태입니다. 시스템이 오류로부터 복구할 수 없는 경우 Windows 운영 체제는 화면에 오류 코드와 함께 블루 스크린을 표시합니다. 이러한 오류 코드

하나의 기사로 이해하기: AI, 머신러닝, 딥러닝 간의 연결과 차이점 하나의 기사로 이해하기: AI, 머신러닝, 딥러닝 간의 연결과 차이점 Mar 02, 2024 am 11:19 AM

오늘날 급속한 기술 변화의 물결 속에서 인공지능(AI), 머신러닝(ML), 딥러닝(DL)은 정보기술의 새로운 물결을 이끄는 밝은 별과도 같습니다. 이 세 단어는 다양한 최첨단 토론과 실제 적용에 자주 등장하지만, 이 분야를 처음 접하는 많은 탐험가들에게는 그 구체적인 의미와 내부 연관성이 여전히 수수께끼에 싸여 있을 수 있습니다. 그럼 먼저 이 사진을 보시죠. 딥러닝, 머신러닝, 인공지능 사이에는 밀접한 상관관계와 진보적인 관계가 있음을 알 수 있습니다. 딥러닝은 머신러닝의 특정 분야이며, 머신러닝은

매우 강하다! 딥러닝 알고리즘 상위 10개! 매우 강하다! 딥러닝 알고리즘 상위 10개! Mar 15, 2024 pm 03:46 PM

2006년 딥러닝이라는 개념이 제안된 지 거의 20년이 지났습니다. 딥러닝은 인공지능 분야의 혁명으로 많은 영향력 있는 알고리즘을 탄생시켰습니다. 그렇다면 딥러닝을 위한 상위 10가지 알고리즘은 무엇이라고 생각하시나요? 다음은 제가 생각하는 딥 러닝을 위한 최고의 알고리즘입니다. 이들은 모두 혁신, 애플리케이션 가치 및 영향력 측면에서 중요한 위치를 차지하고 있습니다. 1. 심층 신경망(DNN) 배경: 다층 퍼셉트론이라고도 불리는 심층 신경망(DNN)은 가장 일반적인 딥 러닝 알고리즘으로 처음 발명되었을 때 최근까지 컴퓨팅 성능 병목 현상으로 인해 의문을 제기했습니다. 20년, 컴퓨팅 파워, 데이터의 폭발적인 증가로 돌파구가 찾아왔습니다. DNN은 여러 개의 숨겨진 레이어를 포함하는 신경망 모델입니다. 이 모델에서 각 레이어는 입력을 다음 레이어로 전달하고

See all articles