web-dev-qa-db-ja.com

データフレームからのデータのマルチスレッドpandas

バスケットにさまざまなショッピングアイテムを持っている顧客のリスト間の関連性を計算するためにマルチスレッドを使用するのに苦労しています。つまり、pandasデータフレームは1,000人の顧客で構成されています。つまり、関連性を100万回計算する必要があり、処理に時間がかかりすぎます。

データフレームの例は次のようになります。

  ID     Item       
    1    Banana    
    1    Apple     
    2    Orange    
    2    Banana    
    2    Tomato    
    3    Apple     
    3    Tomato    
    3    Orange    

コードの簡略化されたバージョンは次のとおりです。

import pandas as pd

def relatedness (customer1, customer2):
    # do some calculations to measure the relation between the customers

data= pd.read_csv(data_file)
customers_list= list (set(data['ID']))

relatedness_matrix = pd.DataFrame(index=[customers_list], columns=[customers_list])
for i in customers_list:
    for j in customer_list:
        relatedness_matrix.loc[i,j] = relatedness (i,j)

前もって感謝します!

6
goodX

pandas DataFrameを使用して重い計算を行うことについて同じ問題を探していて、見つかりました

[〜#〜] dask [〜#〜]http://dask.pydata.org/en/latest/

(これからSO https://datascience.stackexchange.com/questions/172/is-there-a-straightforward-way-to-run-pandas-dataframe-isin -並列

お役に立てれば

9
GBrian

Modinをチェックしてください:「Modinは既存のpandasコードとのシームレスな統合と互換性を提供します。DataFrameコンストラクターを使用しても同じです。」 https://modin.readthedocs.io/en/最新/

0