Pythonはデータマッチングの問題を処理する
6219 ワード
参考ブログ:Pythonはデータマッチングをして最近1つのデータマッチングの小さい任務をして、実現の過程を記録して後で使う時簡単に見ることができるようにして、データマッチングはデータベースに対してjoin操作をして、いくつかのデータベースをinner joinの基本的な操作の学習をして上のブログのリンクを参考にすることができて、Pandasという第三者のライブラリに対してとても良い紹介があります.もっと詳しい資料はPandas中国語のドキュメントの下でプロジェクトの実現過程を記録することができます
タスクの要件:
全部で3つのデータを処理します.3つのデータを接続します.papers(dta形式で格納)、mag(txt形式でファイルに格納)、grid(dta形式で格納)papersはpaperのデータにpaperの一連の情報が含まれ、magにはpaperと対応orgの情報があり、gridはorgの情報である.マッチングを行う部分はpapersのtitleとmagのorgであり,最後にgridのnameとマッチングし,最後に得られるpapersがgridに接続された情報である.
実装プロセス:
最初のステップは、データを読み込むことです.
データの読み込みと処理が完了したらマッチングする
これでマッチング完了データ処理にfuzzywuzzyというパケットを使用してファジイマッチングを記録しますfuzzywuzzyの使用ファジイマッチングを使用するには2つのパケットをインポートします
いくつかの比較方法:
ファジイ照合:
タスクの要件:
全部で3つのデータを処理します.3つのデータを接続します.papers(dta形式で格納)、mag(txt形式でファイルに格納)、grid(dta形式で格納)papersはpaperのデータにpaperの一連の情報が含まれ、magにはpaperと対応orgの情報があり、gridはorgの情報である.マッチングを行う部分はpapersのtitleとmagのorgであり,最後にgridのnameとマッチングし,最後に得られるpapersがgridに接続された情報である.
実装プロセス:
最初のステップは、データを読み込むことです.
import pandas as pd
import json # json txt
# dta,csv txt
df = pd.read_csv("xx") # csv
df = pd.read_stata("xx") # dta
# DataFrame
df = pd.DataFrame(columns = [], index = [])
# txt
# , readlines
for line in open("xx", "r", encoding="utf-8"):
data = json.loads(line) #
...
...
# DataFrame
df = pd.concat(l) #l List
#
df = df.dropna() #
df = df.dropna(subset = []) # subset
データの読み込みと処理が完了したらマッチングする
# df_left df_right inner join,on
df = pd.merge(df_left, df_right, on='xx', how='inner')
これでマッチング完了データ処理にfuzzywuzzyというパケットを使用してファジイマッチングを記録しますfuzzywuzzyの使用ファジイマッチングを使用するには2つのパケットをインポートします
from fuzzywuzzy import fuzz
from fuzzywuzzy import process
いくつかの比較方法:
fuzz.token_sort_ratio(x, y) #
fuzz.token_set_ratio(x, y) #
fuzz.token_partial_ratio(x, y) #
ファジイ照合:
#xx
possible = process.extract("xx", choice, limit=10, scorer=fuzz.token_sort_ratio)
# xx choice , 10 ,scorer