大量の文字列の正則はどの家が速いです
6702 ワード
pdを使用する.Series.strの高速化
本文はpdを比較した.Series.applyとpd.Series.strの大量の文字列の正則上の効率は、実験は以下の通りである.
pd.Series.strは1倍以上速くなりました
完了
本文はpdを比較した.Series.applyとpd.Series.strの大量の文字列の正則上の効率は、実験は以下の通りである.
import numpy as np
import string
# 1-100
def random_str():
return ''.join(np.random.choice(list(string.ascii_letters) + list(string.digits), size=np.random.randint(1, 100), replace=True))
print(random_str())
ao3iemnPTYirQW5HYutAj
#
str_ls = [random_str() for i in range(int(1e7))]
len(str_ls)
10000000
# DataFrame
import pandas as pd
df = pd.DataFrame(str_ls, columns=['string'])
#
import re
str_regex = re.compile('(IOU)')
#
import time
start = time.time()
df['apply_res'] = df['string'].apply(lambda x: re.match(str_regex, x))
end = time.time()
print('apply use time:')
print(end - start)
start = time.time()
df['pandas_res'] = df['string'].str.match(str_regex)
end = time.time()
print('pandas str regex use time:')
print(end - start)
apply use time:
10.389425277709961
pandas str regex use time:
4.18695330619812
pd.Series.strは1倍以上速くなりました
完了