6

私は pandas データフレームを使用しており、会社ごとに顧客がいるデータがあります。ただし、会社のタイトルは多少異なりますが、最終的にはデータに影響します。例:

Company    Customers
AAAB       1,000
AAAB Inc.  900
The AAAB Inc.  20
AAAB the INC   10

いくつかの異なる会社のデータベースから、標準外の名前を持つ会社の合計顧客を取得したいと考えています。どこから始めればいいですか?

4

3 に答える 3

8

これを行うことができるfuzzywuzzy ライブラリに関するこのブログを読んだことを覚えています(別の質問を調べています)。

pip install fuzzywuzzy

その partial_ratio 関数を使用して、文字列を「あいまい一致」させることができます。

In [11]: from fuzzywuzzy.fuzz import partial_ratio

In [12]: partial_ratio('AAAB', 'the AAAB inc.')
Out[12]: 100

相性がいいと自信を持っているようです!

In [13]: partial_ratio('AAAB', 'AAPL')
Out[13]: 50

In [14]: partial_ratio('AAAB', 'Google')
Out[14]: 0

実際の会社リストで最も一致するものを取得できます (それがあると仮定します):

In [15]: co_list = ['AAAB', 'AAPL', 'GOOG']

In [16]: df.Company.apply(lambda mistyped_co: max(co_list, 
                                                  key=lambda co: partial_ratio(mistyped_co, co)))
Out[16]: 
0    AAAB
1    AAAB
2    AAAB
3    AAAB
Name: Company, dtype: object

大規模なデータセットでこれをより効率的に行うために、scikit Learnまたはnumpyライブラリに何かがあると強く疑っています...しかし、これで仕事が完了するはずです。

会社のリストがない場合は、おそらくもっと賢いことをしなければならないでしょう...

于 2013-10-17T22:14:31.240 に答える