パンダの文字列操作を高速化する

高速化するパンダの文字列操作

このチュートリアルでは、文字列の操作を高速化することに焦点を当てています。

私は飽きたので、文字列の操作方法とそれらがパンダのデータフレームのパフォーマンスにどのように影響するかをベンチマークしました。よく知られているように、パンダのデータフレームはある限界を超えると奇妙な振る舞いをします。主にメモリの圧力に依存しており、また複数の行からの要素を一度に操作する際にもオーバーヘッドが発生します。

さて、ここで実験内容です。

Fakerを使用してデータフレームを作成しました。ベースデータは10万行のフェイクデータです。

セットアップ

!pip install faker

import pandas as pd
import numpy as np
def gen_data(x):
  from faker import Faker
  fake = Faker()
  outdata = {}
  for i in range(0,x):
    outdata[i] = fake.profile()
  return pd.DataFrame(outdata).T
n = 100000
basedata = gen_data(n)

出力をGoogleドライブに保存しました。

from google.colab import drive
drive.mount('/content/drive')

2つの文字列を連結するさまざまな方法をテストするために非常にシンプルな関数を作成しました。

def process(a,b):
  return ''.join([a,b])
def process(a,b):
  return a+b
def process(a,b):
  return f"{a}{b}"
def process(a,b):
  return f"{a}{b}"*100

次に、空のデータフレームを作成し、%%timeitの出力を行としてデータフレームに追加する関数を作成しました。

# %%timeitの出力を行としてデータフレームに追加する
def add_to_df(n, m, x, outputdf):
  outputdf.loc[len(outputdf.index)] = [m, n, x]
# 出力フレーム
outputdf = pd.DataFrame(columns=['method', 'n', 'timing'])
outputdf

以下は、各関数を実行し、データをパンダのデータフレームにエクスポートするためのコードのサンプルです。

# データのサンプルを取得
n = 10000
suffix = 'fstring_100x'
data = basedata.copy().sample(n).reset_index()

%%timeit -r 7 -n 1 -o
data['newcol'] = ''
for row in range(len(data)):
  data.at[row ,'newcol'] = process(data.at[row, 'job'], data.at[row, 'company'])
# 451 ms ± 34 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
# <TimeitResult : 451 ms ± 34 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)>

m = "行を反復処理する"
add_to_df(n = n, m = m, x = vars(_), outputdf = outputdf)

実験

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

AIテクノロジー

アンソニー・グーネティレケ氏は、Amdocsのグループ社長であり、テクノロジー部門および戦略部門の責任者です- インタビューシリーズ

アンソニー・グーネティレーケは、Amdocsでグループ社長、テクノロジーと戦略担当です彼と企業戦略チームは、会社の戦略を策...

人工知能

Diginiのスマートセンスの社長、ガイ・イエヒアブによるインタビューシリーズ

ガイ・イハイアヴ氏は、ビジネスの成功に最も重要な資産を保護するためにインターネット・オブ・シングス(IoT)の力を活用す...

人工知能

「aiOlaのCEO兼共同創設者、アミール・ハラマティによるインタビューシリーズ」

アミール・ハラマティは、aiOlaのCEO兼共同創業者であり、スピーチを作業可能にし、どこでも完全な正確さで業界固有のプロセ...

データサイエンス

アステラソフトウェアのCOO、ジェイ・ミシュラ - インタビューシリーズ

ジェイ・ミシュラは、急速に成長しているエンタープライズ向けデータソリューションの提供企業であるAstera Softwareの最高執...

人工知能

「ゲイリー・ヒュースティス、パワーハウスフォレンジクスのオーナー兼ディレクター- インタビューシリーズ」

ゲイリー・ヒュースティス氏は、パワーハウスフォレンジックスのオーナー兼ディレクターであり、ライセンスを持つ私立探偵、...

人工知能

「マーク・A・レムリー教授による生成AIと法律について」

データサイエンス内で新しい分野が現れ、研究内容が理解しにくい場合は、専門家やパイオニアと話すことが最善です最近、私た...