任天堂の特許分析 ~J-Plat Pat CSV出力3000件からFIマップ~

J-Plat PatのCSV出力の件数制限が、500件から3,000件に大幅拡大された(2023.3.26機能改善)のを記念(?)して、任天堂の全特許2,915件を対象に、筆頭FIごとの出願件数の年次推移を示すグラフを作ってみた。

① J-Plat Patで出願人検索

ヒット件数は、2,915件だったので、全件を一度にCSV出力できる!

② EXCEL ブックとして保存

③ 「出願年」の列(column)を追加

C列の[出願日]から[出願年]を求めて、N列に出力する。
N2セルに、C2を参照するYEAR関数を入力して、C2の年だけを出力させる。

④ 「筆頭FI」の列を追加

G列の[FI]から筆頭だけを取りだして、O列に出力する。
[FI]は複数のFIがあるとコンマ“,”で区切られていることに着目。先頭から探して最初に見つかるコンマ“,”よりも左側だけを抜き出して、O列に出力すれば良い。

[FI]欄には、1個のFIしかなくて、コンマ“,”が含まれていない場合もあるので、注意が必要。コンマ“,”が何文字目かを探す関数では、見つからないとエラーになる。エラーになったら筆頭FIしかないのだから、そのままO列に出力すれば良い。

FIを最も細かい階層まで取り出すと、細かすぎてグラフには向かないので、メイングループ(スラッシュ“/”の前)までに留めることにする。先頭から探して最初に見つかるコンマ“/”よりも左側だけを抜き出して、O列に出力すれば良い。

[FIND関数]を使ってFI(G2)の中での[/]が何文字目かを求め、[LEFT関数]を使って求めた[何文字目」よりも左側を抜き出して、筆頭(O2)に出力する。

⑤ 「出願件数」のP列を追加

すべての行に1を入力

出願年のN2セル、筆頭FIのO2セルと1を入力した出願件数のP2セルを選んで、最も下の行までコピーする。

⑥ ピボットテーブルの作成

出願年のN列、筆頭FIのO列、出願件数のP列を選んで、[挿入]タブの[ピボットテーブル]をクリックして、新規シートのピボットテーブルを作成する

作成したピボットテーブルで、[ピボットテーブルのフィールド]を操作
「出願年」を「列」にドラッグ
「筆頭FI」を「行」にドラッグ
「出願件数」を「Σ値」にドラッグ
すると、ピボットテーブルが生成される。

合計件数の多いFIから順に表示されるように並べ替え

ピボットテーブルの集計結果は、J-Plat Patの[分類コードランキング]と似た処理になっていて、合計だけでなく年次推移がわかる点で優れている。

なお、A63F13, A63F9はゲーム、G06F3は計算機のユーザーインターフェース。

⑦ 年次推移グラフの作成

5位までの筆頭FIについて、出願件数の年次推移を示す折れ線グラフを描いてみる。

ピボットテーブルから5位までの筆頭FIの値をコピーして別の(グラフ用の)シートに貼り付け、空白に0を埋めて、散布図で折れ線グラフを描いた。

注:空白のセルに0を埋めるやり方は、Google先生に聞いてみると教えてくれる。

⑧ 筆頭FIを、メイングループではなく、クラスで分析してみた

④~⑥の「筆頭FI」を「筆頭FI(main group)」に変更し、「筆頭FI(class)」(O列)を挿入。

FIは、X00Y nn/mmmmの形で、Xはセクション、X00はクラス、X00Yはサブクラスと呼ばれ、さらに下位のX00Y nnはメイングループと呼ばれている。

文字列処理は簡単。先頭から3文字を抜き出せばよい。

⑨ ピボットテーブルを更新

⑩ 筆頭FI(CLASS)の年次推移の折れ線グラフ

まとめ

J-Plat patのCSV出力の件数制限が、500件/1回から3,000件/1回に緩和されたので、任天堂のすべての特許でも1度にダウンロードして分析できるようになった。3,000件を超えても、何回かに分けてダウンロードすればよいため、1回の件数制限が緩和されたのはありがたい。

ダウンロードして自身で試行錯誤してみると、自由度が広がる。筆頭FIといっても、クラス単位で動向を見るか(⑩)、メイングループ単位で動向を見るか(⑦)で、何か違いが見えてくるかもしれない。

今回、筆頭FIをクラスとメイングループの2通りで分析したが、顕著な違いは見えなかった。ただし、どちらにも共通する流れとして、
2007年、2008年のリーマンショックでは、A63(ゲーム)系の出願は減ったが、計算機のインターフェース(G06)系は現状維持か増加傾向が継続した。2011年の東日本大震災では、A63(ゲーム)系の出願は急増後急減したが、計算機のインターフェース(G06)系の出願は安定している。

第2版発売

2022年9月17日に第2版が発売されました。ようやく、J-Plat Pat 2018年の機能拡張に追いつきました。

最新のJ-Plat Patでは検索機能がかなり強化されており、胸を張って「論理式入力」をお勧めすることができます。

一見、ハードルが高く見えるのですが、ちょっとした工夫で簡単にハードルを乗り越えることができ、強化された機能を十分に活用できるようになります。

是非とも、ご活用ください。

第1章 特許情報を活用して一大発明を創生しよう!
第2章 基礎知識 J-Plat Patの使い方と特許制度・特許分類
第3章 短時間で「それらしい特許」を見つけるために!
第4章 特許文献情報を統計として活用するために!
第5章 検索事例I  短時間で「それらしい特許」を見つける検索
第6章 検索事例II 特許文献情報を統計として活用するための検索/分析

「秀和システム新刊案内」へはこちら

J-Plat PatとExcelで描くバブルチャート

J-Plat Patで500件/回のCSV出力ができるようになったので、Excelでバブルチャートを描いてみた

任天堂の特許2858件(下図)を6~7回かけてCSVダウンロードして、Excelで集計、バブルチャートを描いてみる。

目指すグラフをイメージしてみると、上の「FI別」を縦軸、「公開年」を横軸、特許件数をバブルサイズにした,バブルチャート(下図)

① CSVダウロードしたデータを結合して、Execlシートを作成

② 公開年と分析対象のFIの有無(フラグ)を示す列を作成

公開年は、公開日のD列を参照するYEAR関数

分析対象のFIのフラグは、関数 =IF(ISERROR(FIND(O$1,$G2)),0,1)
FIND関数=対象のG列(FI)に検索文字列のO列(検索するA63)にみつかればその位置、みつからなければエラーになる
IF(ISERROR(FIND・・・),0,1)は、FIND関数がエラーなら 0、なければ 1
分析対象のFIの有無を示すフラグになる。
注:この例(FI全体を対象)に代えて、筆頭FIを対象にするのも一案

③ 入力した関数を最下行までコピーして、FI分析を完了

④ 公開年ごとにFIの件数を集計(ピボットテーブル)

⑤ 5年ごとに集計

ピボットテーブルをコピーして(10行~)、SUM関数を使って、5年ごとに件数を集計する(1~8行)
(横軸を公開年のままにするか、何年かごとに集計するかは、適宜調整)

⑥ 集計した表に「条件付き書式」を設定すると、バブルチャート風(?)の簡易的な見える化ができる

⑦ Excelでバブルチャートを描く

Excelのバブルチャートは、X, Y, Zの元データが必要。X, Yは数値で座標を示し、Zはバブルの大きさを表す。すべて数値で示す必要がある。

上のまとめ表を、
X=公開年(範囲に代えて代表年)
Y=FIを表示する位置(座標)。A63を最上、H05を最下にしたいのでそれに応じた数値を入力。
Z=集計した件数=バブルの大きさになる
の形に並べ直す。

並べ直したデータを元にして、バブルチャートを描く。

⑧ バブルチャートの書式を整える

「データ系列の書式」でバブルサイズを調整(ex.バブルが重ならないように)
「データラベルの書式」で「バブルサイズ」を表示

縦軸、横軸は、座標(数値)にしたので、元のFIを上書きする。
(たとえば、画像を作って重ねる)

できあがり!!

お化粧はあまり上手ではありませんが、何とか完成。

[Python] 基礎-7 EXCELファイルの読み書き

1.一般的な流れ

“openpyxl”モジュールをインポート:import openpyxl
Workbookを開く:openpyxl.load_workbook(“ファイル名”)
シートオブジェクトを生成:sheet_obj = workbook.get_sheet_by_name(“シート名”)

2.セルの値の読み書き(cell(row=行番号, column=列番号).value)

〔 値の取り込み 〕
変数 = sheet_obj.cell(row=行番号, column=列番号).value

〔 値の書き込み 〕
sheet_obj.cell(row=行番号, column=列番号).value = 値

3.行/列 単位の扱い( iter_rows() / iter_cols() )

(iteration processにより)1行ごと(1列ごと)に、リストを生成する。

〔 使い方の例 〕

for row in sheet_obj.iter_rows():
for col in range(len(row)):
print(row[col])

4.フォントの指定

〔 流れ 〕
① Font関数をopenpyxlモジュールのstyleからインポート
  from openpyxl.styles import Font
② フォントの指定
  font = Font(name=’フォント名’, size=ポイント数, ・・・)
③ 指定したフォントをセルに指定
  sheet_obj.cell(row=line,column=col+1).font = font

パラメータ説明
nameフォント名/例:’游ゴシック’, ‘Arial’
sizeポイント数/例:「size=10」等整数値で指定
color色を16進6桁の文字列で指定
例:’FF0000’(赤), ’00FF00’(緑), ‘0000FF’(青)
underline下線を文字列で指定/例:’single’
bold太字/例:True, False
italic斜字/例:True, False

5.位置揃え

〔 流れ 〕
① Alignment関数をopenpyxlモジュールのstyleからインポート
  from openpyxl.styles import Alignment
② セルごとにAlignmentを指定
  sheet_obj.cell(row=line,column=col+1).alignment
  = Alignment(horizontal=’left’,
   vertical=’top’,
   wrapText=None)

〔 Alignment関数の引数とパラメータ 〕

    引数パラメータ説明
horizontal‘left’
‘center’
‘right’
左揃え
中央揃え
右揃え
vertical‘top’
‘center’
‘bottom’
上揃え
中央揃え
下揃え
textWrapTrue
None
セル内折り返しあり
指定せず

6.セルの表示形式

〔 流れ 〕
① numbersをopenpyxlモジュールのstyleからインポート
  from openpyxl.styles import numbers
② セルのフォーマットを指定
  sheet_obj.cell(row=line,column=col+1).number_format = 表示形式

    表示形式 説明
‘0.000’小数点以下3桁
#,##0′3桁ごとにカンマ区切り&小数点以下は非表示
‘yyyy/mm/dd’短い日付(西暦4桁/月/日)

7.セルの幅と高さ

〔 セル幅の指定 〕
sheet_obj.column_dimensions[’A’].width= セル幅

〔 セル高の指定 〕
sheet_obj.row_dimensions[1].height = セル高さ

特許マップDIYサポートキャンペーン 第3回

外出自粛/在宅勤務 応援企画

特許マップDo It Yourself
サポートキャンペーン 第3回

(緊急事態宣言期間中無料)

緊急事態宣言が、昨年4月、今年1月に続き三度発出されてしまいました。特許マップDIYサポートの無料サービスキャンペーンも、このたびもう一度行うことにしました。この災禍を福に転じたいと願っております。

かねがね、特許マップを自分で作ってみたいと思っていた方、チャレンジしてみませんか?
新型コロナウィルスの脅威はありますが、まとまった時間がとれる機会は増えているのではないでしょうか? 

    • ・検索式作成 相談、代行
    • ・ヒット文献集合csvダウンロード
    • ・Excel(関数/ピボット/マクロ)操作 

特許マップを作るには、まず目的に合った特許文献集合を作る必要があります。是非、この機会にご相談ください。弁理士の職業的守秘義務の範囲です。業務上のテーマについてもご相談いただけます。

商用の検索データベースを利用できない方には、作成した文献集合をcsvダウンロードして無償提供します。

Excel(関数/ピボット/マクロ)については、セミナーのプレゼン資料(Seminar-PatentSearch-and-Map_20190703)か拙著を参考に進めてください。こみ入った内容のご質問にはSkype, ZoomなどのWeb会議システムで対応いたします。Excelシート画面を共有しながらQ&Aできますので。

メール(mail to: kojima#aq-patent.com 注:「#」を「@」に代えてください)でお申し込みください。