psyhon의 기본 도구 "perflot""benchit"사용 방법
psyhon의 기본 도구 "perflot" "benchit" 사용 방법
python의 기준 도구perfplot와 benchit의 사용 방법에 대한 개략적인 설명입니다.
두 프로그램 라이브러리는 주로'pd.DataFrame
와 np.ndarray
성형된 여러 함수의 집행 속도 비교'를 위해 제작되었다.이 도구를 사용하면 가로축 성형 대상pd.DataFrame
과 np.ndarray
의 길이, 세로축 함수의 집행 속도를 간단하게 만들 수 있다.
물론 수신pd.DataFrame
과np.ndarray
이외의 함수에도 사용할 수 있다.
예제
에서 오다pandas 팁: 여러 문자열 중 임의의 (OR + 부분 일치) 검색하고자 하는 - 지는 일기 포함.
예를 들어 ↓의 책상에서 도쿄도나 지바현을 포함하는 값만 필터할 때pandas는 어떻게 썼는가.
name
0
동경 도갈 장식구
1
가나가와 현 가와사키 시
2
고사리
3
장시 성import pandas as pd
df = pd.DataFrame({'name': ['東京都葛飾区', '神奈川県川崎市', '埼玉県蕨市', '千葉県蘇我市']})
function(df)
name
0
동경 도갈 장식구
3
장시 성
함수.
여러 가지 방법을 생각해 낼 수 있다.def by_contains(df):
idx = df['name'].str.contains(r'東京都|千葉県')
return df[idx]
def by_startswith(df):
idx = df['name'].str.startswith('東京都') | df['name'].str.startswith('千葉県')
return df[idx]
def by_str_startswith(df):
idx = [s.startswith('東京都') or s.startswith('千葉県')
for s in df['name'].tolist()]
return df[idx]
def by_np_isin(df):
idx = np.isin(df['name'].to_numpy('<U3'), ['東京都', '千葉県'])
return df[idx]
def by_np_or(df):
arr = df['name'].to_numpy('<U3')
idx = (arr == '東京都') | (arr == '千葉県')
return df[idx]
그럼 이 함수 중 어느 것이 가장 빠릅니까?
1. perflot의 사용 방법
GitHub - nschloe/perfplot: Performance plots for Python code pip install perfplot
에 설치합니다.
시간 측정 방법
시간 측정에 perfplot.bench()
함수를 사용합니다.객체가 측정 결과로 반환PerfplotData
됩니다.
다음은 필수 매개변수입니다.setup
매개 변수:'정수를 수신하고 측정하고자 하는 함수에 전송할 입력 데이터'를 생성하는 함수'를 전달합니다.데이터 프레임의 경우 보통 샘플df
을 제작한 후 다음과 같은 정보를 전달한다.
import pandas as pd
df = pd.DataFrame({'name': ['東京都葛飾区', '神奈川県川崎市', '埼玉県蕨市', '千葉県蘇我市']})
function(df)
def by_contains(df):
idx = df['name'].str.contains(r'東京都|千葉県')
return df[idx]
def by_startswith(df):
idx = df['name'].str.startswith('東京都') | df['name'].str.startswith('千葉県')
return df[idx]
def by_str_startswith(df):
idx = [s.startswith('東京都') or s.startswith('千葉県')
for s in df['name'].tolist()]
return df[idx]
def by_np_isin(df):
idx = np.isin(df['name'].to_numpy('<U3'), ['東京都', '千葉県'])
return df[idx]
def by_np_or(df):
arr = df['name'].to_numpy('<U3')
idx = (arr == '東京都') | (arr == '千葉県')
return df[idx]
lambda n: df.sample(n, replace=True, random_state=0).reset_index(drop=True)
lambda n: pd.concat([df]*n, ignore_index=True, axis=0)
n_range
매개 변수: 함수setup
에 전달되는 수량의 목록.n
이런 거 있으면 돼요.10 ** np.arange(5)
매개 변수: 측정할 함수의 목록을 전달합니다.kernels
매개 변수: 반환equality_check
/True
의 함수를 지정하여 각 함수가 같은 결과를 반환하는지 확인하고 서로 다른 결과를 반환하는 상황에서 오류가 발생했습니다.다음 중 어느 것이든 좋습니다.False
None
반환 함수의 결과가 같은지 비교하는 경우: pd.DataFrame
lambda df1, df2: df1.equals(df2)
반환 함수의 결과가 같은지 비교하는 경우: np.ndarray
(기본값)매개 변수: 도표에 표시된 함수 이름의 목록입니다.
np.allclose
에 건네준 명세서의 길이와 같다.지정하지 않으면 함수 이름이 바로 사용됩니다.labels
매개 변수: 가로축kernels
의 라벨 이름.드로잉 내보내기 방법
xlabel
실행 시간을 비교하여 얻은 접선도를 표시합니다.또한
n
방법을 사용하여 드로잉을 이미지로 저장합니다.실행 예
import numpy as np
import perfplot
ppdata = perfplot.bench(
setup=lambda n: df.sample(n, replace=True, random_state=0).reset_index(drop=True),
n_range=10 ** np.arange(7),
kernels=[
by_contains,
by_startswith,
by_str_startswith,
by_np_isin,
by_np_or
],
equality_check=lambda df1, df2: df1.equals(df2),
xlabel='len(df)'
)
ppdata.save('perfplot.png', time_unit='s')
PerfplotData.show()
방법의 PerfplotData.save()
매개 변수에 PerfplotData.save()
매개 변수의 목록에 대응하는 정수 인덱스를 제공하면 세로축은 상대 속도가 된다.ppdata.save('perfplot2.png', time_unit='s', relative_to=2)
2. Benchit의 사용 방법
GitHub - droyed/benchit: Benchmarking tools for Python
relative_to
에 설치합니다.시간 측정 방법
시간 측정에
kernels
함수를 사용합니다.객체가 측정 결과로 반환pip install benchit
됩니다.다음은 필수 매개변수입니다.
benchit.timings()
매개 변수: 측정할 함수의 목록을 전달합니다.perflot의 BenchmarkObj
매개 변수와 같습니다.funcs
매개 변수: 측정하고자 하는 함수에 대한 입력 데이터 목록입니다.perflot의 kernels
와 inputs
파라미터에 해당한다.드로잉 내보내기 방법
setup
방법n_range
으로 대상을 되돌려주기 때문에 수신된 BenchmarkObj.plot()
대상의 matplotlib.figure.Figure
방법과 Figure
방법으로 그림을 출력하고 저장할 수 있다.실행 예
import numpy as np
import benchit
funcs = [
by_contains,
by_startswith,
by_str_startswith,
by_np_isin,
by_np_or
]
inputs = [df.sample(n, replace=True, random_state=0).reset_index(drop=True)
for n in 10 ** np.arange(7)]
bmobj = benchit.timings(funcs, inputs)
bmobj.plot(figsize=(10, 6), logx=True).savefig('benchit.png')
Reference
이 문제에 관하여(psyhon의 기본 도구 "perflot""benchit"사용 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nkay/items/c6dcfd0b210a525d87fe텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)