J-PlatPatからcsvデータを入手できたら、このデータに基づいて集計処理、グラフ作成をしていきます。
ここではpythonを使って出願人ランキングマップを作成する手順について説明します。出願人ランキングマップは、母集団における出願人毎の数のランキングを示すものです。
以下、プログラムの作成方法を順を追って説明します。出願人ランキングマップをすぐに作成されたい場合、以下の本pythonプログラムコード全体をご参照下さい。
※csvデータの取得方法についてはこちら→知らなきゃ損!無料のパテントマップ作成方法1(データ準備編)
※pythonを動作させるための環境構築はこちら→すぐにできる、パテントマップ作成のためのPC環境のセットアップ
必要ライブラリの読み込みとフォントの設定
なにはともあれ、まずは必要なモジュールを読み込みます。ここではpandas、matplotlib、seabornを使いますのでこれらをimportします。また出力する出願人名に日本語を含みますので、フォントの指定が必要です。ここではwindowsの標準フォント、MSゴシックを指定しています。以下がサンプルコードです。
import pandas as pd import matplotlib.pyplot as plt import seaborn as sns ###################### FONT Setting # windows: MS Gothic # osX: Hiragino Sans plt.rcParams['font.family'] = 'MS Gothic' #plt.rcParams['font.family'] = 'Hiragino Sans'
もしMac OSをお使いの場合は、フォント設定は、例えばHiragino Sansにすることをおすすめします。以下のように、Font Setting部分のコメントアウト(Pythonでは#以降の文字はコメントとされます。)を切り替えて下さい。
import pandas as pd import matplotlib.pyplot as plt import seaborn as sns ###################### FONT Setting # windows: MS Gothic # osX: Hiragino Sans #plt.rcParams['font.family'] = 'MS Gothic' plt.rcParams['font.family'] = 'Hiragino Sans'
csvファイルの読み込みとデータの加工
csvファイルの読み込みはpandasのread_csvを用います。ここでJ-PlatPatから入手したcsvを入力します。(ちなみに、知らなきゃ損!無料で特許マクロ分析を行う方法(準備編)で説明した2つのcsvデータ生成方法のいずれであっても、本ページ記載のpythonプログラムにより処理可能です。)
出願人の情報のうち、グラフ表示で見やすくなるように、不要な部分(スペース、株式会社、他)を全てstr.replaceを用いて置換しています。
####### csvファイルの読み込み patlist = pd.read_csv('Book1.csv') ####### 読み込みデータの加工 patlist['出願人'] = patlist['出願人/権利者'] patlist['筆頭FI'] = patlist['FI'] patlist['出願人'] = patlist['出願人'].str.replace(' ','') patlist['出願人'] = patlist['出願人'].str.replace(' ','') patlist['出願人'] = patlist['出願人'].str.replace('株式会社','') patlist['出願人'] = patlist['出願人'].str.replace('有限会社','') patlist['出願人'] = patlist['出願人'].str.replace('国立大学法人','') patlist['出願人'] = patlist['出願人'].str.replace('▲','') patlist['出願人'] = patlist['出願人'].str.replace('▼','') patlist['出願人'] = patlist['出願人'].str.replace('テベル・アドバンスト・テクノロジーズ・リミテッド','テベル・アドバンスト') patlist['出願人'] = patlist['出願人'].str.replace('トップフライトテクノロジーズ,インコーポレイテッド','トップフライトテクノロジーズ')
上記の出願人の置換処理は、他にも長い社名等、置換したいものは同一の書き方で行を追加すれば自動で全置換できます。例えば「フェイスブック,インク」をFacebookに置換したい場合は以下のようにして、上記の置換処理に並べて記載すればよいです。名寄せ処理をしたい場合も同じ要領で実現できます。
patlist['出願人'] = patlist['出願人'].str.replace('フェイスブック,インク.','Facebook')
ランキングマップの作成
データの加工後、グラフ(ランキングマップ)の作成処理をします。ここではseabornのcountplotを使って、出願人を集計しています。グラフは”Ranking_map.png”という名前で保存されます。なおここでは上位10社を表示するようにしています。もし上位20社にしたい場合にはコメントアウトを切り替えて下さい。もっと増やしたい場合は、数値を書き換えて下さい。
############################################ランキングマップ作成 ####################### Parameter Setting #max_applicant_num = 20 # 上位20社を表示 max_applicant_num = 10 # 上位10社を表示 ####################### fig = plt.figure(dpi=100, figsize=(10.0,6.0)) ax1 = fig.add_subplot() ax1.set_position([0.25,0.15,0.70,0.80]) p = sns.countplot(y="出願人", data=patlist, order=patlist['出願人'].value_counts().iloc[:max_applicant_num].index, color='deepskyblue') p.set_xlabel("The number of application", fontsize = 10) p.set_ylabel("Applicants", fontsize = 10) plt.gcf().set_size_inches(15, 8) plt.savefig("Ranking_map.png") plt.show()
出力されるランキングマップは以下の通りです。p.set_xlabel、p.set_ylabelの記載を変えることで、軸のラベルを変更可能です。出願人名が長い場合には、上記の置換処理をするか、あるいは図のサイズを変更するなど、適宜調整してみてください。
本pythonプログラムコードの全体
以下が本pythonプログラムコードの全体です。こちらをコピー&ペーストして利用すれば、J-PlatPatから入手したcsvファイルから出願人ランキングマップを作ることができます。ご自由にご利用下さい。もしお役に立った場合はコメント頂けると幸いです。
import pandas as pd import matplotlib.pyplot as plt import seaborn as sns ###################### FONT Setting # windows: MS Gothic # osX: Hiragino Sans plt.rcParams['font.family'] = 'MS Gothic' #plt.rcParams['font.family'] = 'Hiragino Sans' ####### csvファイルの読み込み patlist = pd.read_csv('Book1.csv') ####### 読み込みデータの加工 patlist['出願人'] = patlist['出願人/権利者'] patlist['出願人'] = patlist['出願人'].str.replace(' ','') patlist['出願人'] = patlist['出願人'].str.replace(' ','') patlist['出願人'] = patlist['出願人'].str.replace('株式会社','') patlist['出願人'] = patlist['出願人'].str.replace('有限会社','') patlist['出願人'] = patlist['出願人'].str.replace('国立大学法人','') patlist['出願人'] = patlist['出願人'].str.replace('▲','') patlist['出願人'] = patlist['出願人'].str.replace('▼','') patlist['出願人'] = patlist['出願人'].str.replace('テベル・アドバンスト・テクノロジーズ・リミテッド','テベル・アドバンスト') patlist['出願人'] = patlist['出願人'].str.replace('トップフライトテクノロジーズ,インコーポレイテッド','トップフライトテクノロジーズ') ############################################ランキングマップ ####################### Parameter Setting #max_applicant_num = 20 # 上位20社を表示 max_applicant_num = 10 # 上位10社を表示 ####################### fig = plt.figure(dpi=100, figsize=(10.0,6.0)) ax1 = fig.add_subplot() ax1.set_position([0.25,0.15,0.70,0.80]) p = sns.countplot(y="出願人", data=patlist, order=patlist['出願人'].value_counts().iloc[:max_applicant_num].index, color='deepskyblue') p.set_xlabel("The number of application", fontsize = 10) p.set_ylabel("Applicants", fontsize = 10) plt.gcf().set_size_inches(15, 8) plt.savefig("Ranking_map.png") plt.show()
コメント