【python】キーワードプランナーのデータから重複を削除して、CSVで出力

AdWordsのキーワードプランナーからダウンロードしたデータは、スペース前後の入れ替えの違いだけなどが多く含まれているデータになっている。

キーワード調査をする際に1つずつ目視していくのは大変なので、ある程度のノイズデータを一括で除去したい。

準備

#pandasのインポート
import pandas as pd
from pandas import Series , DataFrame

#キーワードを整形するための関数
def shape_kw(keyword):
    split_kw = keyword.split(' ')
    
    #スペースなしのキーワード作成
    join_kw = ''.join(split_kw)

    #並び替えをして、スペースなしのキーワード作成
    sorted_kw = sorted(split_kw)
    shape_kw = ''.join(sorted_kw)
    
    #配列にして値を返す
    return [shape_kw, join_kw]

キーワードデータを整形して、重複行を削除

#CSVの読み込み。落としてきたままのCSVだとエラーになるので、一回保存し直す必要がある?
dframe = pd.read_csv('keyword.csv',encoding="cp932")

#検索ボリュームで降順に並び替え
sorted_dframe = dframe.sort_values(by='Avg. Monthly Searches (exact match only)', ascending=False)

#整形したキーワードを代入
shaped_kws = list(map(lambda keyword:shape_kw(keyword),sorted_dframe['Keyword']))

#整形したキーワードをDataFrameに変換
dframe2 = DataFrame(shaped_kws, columns=['shaped_kw', 'join_kw'])

#整形したキーワードを、元のDataFrameに追加
sorted_dframe['shaped_kw'] = dframe2['shaped_kw']
sorted_dframe['join_kw'] = dframe2['join_kw']

#重複データのある行を削除
droped = sorted_dframe.drop_duplicates(['shaped_kw'])
droped = droped.drop_duplicates(['join_kw'])

CSVで出力

#アウトプットのために列名を変換
renamed_dframe = droped.rename(columns = {'Avg. Monthly Searches (exact match only)':'検索vol.', 'Keyword':'キーワード'})

#アウトプットされる形式
    キーワード   	検索vol.
0	ハローワーク  	1220000
2	バイト     	246000
1	転職      	246000
3	ハローワーク 求人	201000
4	求人      	135000


#検索vol.が空欄のデータを補完
filled_dframe = renamed_dframe['検索vol.'].fillna(0)

#キーワードと検索volのみをCSVで出力
filled_dframe[['キーワード','検索vol.']].to_csv('results_shaping_kw.csv')

まとめ

Excelだとスペース前後違いなどの整形はするのが手間だったが、Pythonなら簡単にできた!
もうちょっと仕組みを考えれば、キーワードのジャンル分けも一度にできそう。

※追記:検索vol.が空欄の場合に、値を0にする処理を追加