2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

特許データのクロス集計について

Posted at

はじめに

前回は仮のデータでクロス集計をしてみましたが、今回は実際の特許データを使ってクロス集計をしてみたいと思います。

データフレームの作成

以前テキストマイニングを行いました特許データを流用してデータフレームを作成しました。

import pandas as pd
# googleドライブの利用
from google.colab import drive
drive.mount('/content/drive')
# データの前処理
# データの読み込み(google ドライブから)
df_drone_data_1 = pd.read_csv("/content/drive/MyDrive/pat_data_drone.20181231.csv", encoding = "shift-jis")
df_drone_data_2 = pd.read_csv("/content/drive/MyDrive/pat_data_drone.20190101.csv", encoding = "shift-jis")
# データフレームの結合(縦方向)
df_drone_data = pd.concat([df_drone_data_1, df_drone_data_2], ignore_index = True)
#必要な列のみ抽出
df_drone_data = df_drone_data[['出願人/権利者', 'FI']]
#不要語の削除(出願人/権利者)
df_drone_data['出願人/権利者'] = df_drone_data['出願人/権利者'].str.replace('', '')
df_drone_data['出願人/権利者'] = df_drone_data['出願人/権利者'].str.replace('', '')
# 欠落データを削除
df_drone_data = df_drone_data.dropna()
# データフレームの確認
print(df_drone_data)

データフレームは以下のようになりました。行数は960行となりました。
FIのセルには多数のFIが存在することがわかります。下記出力からはわかりませんが、出願人/権利者にも同様に複数の出願人/権利者が存在すると思われます。

出力
           出願人/権利者                                                 FI
0          ソニー株式会社  H04N5/247,G03B15/00@U,G03B37/00@C,H04N5/222,10...
1         日本電気株式会社                G06Q50/10,G06Q30/06,350,G06Q30/0645
2       ソフトバンク株式会社  H04Q9/00,301@B,B64C39/02,B64C13/20@Z,B64C13/18...
3    一般財団法人電力中央研究所            B61B7/00@A,B64D27/24,B64C39/02,H02G1/02
4           楽天株式会社                    B64C39/02,B64C27/08,B64D45/00@Z
..             ...                                                ...
955     株式会社NTTドコモ  B64F1/36,B64D45/00@A,B64D45/00@Z,B64D47/00,B64...
956     株式会社NTTドコモ  G06Q10/08,300,B65G61/00,540,B64C39/02,B64F1/36...
957       カン、ムン シク  G06Q50/04,G06Q50/16,G06Q50/06,G06F17/50,612@A,...
958      本郷飛行機株式会社                 H04B7/15,H04Q9/00,301@B,H04N7/18@D
959      本郷飛行機株式会社  G05D1/10,B64C39/02,B64C13/18@Z,B64D45/04@A,G08...

[960 rows x 2 columns]

エクスプロード処理

このデータフレームに対してエクスプロード処理をします。

# 'FI' を分割
df_drone_data['FI'] = df_drone_data['FI'].str.split(',')
# '出願人/権利者'を分割
df_drone_data['出願人/権利者'] = df_drone_data['出願人/権利者'].str.split(',')
# エクスプロード
df_drone_data = df_drone_data.explode('FI').explode('出願人/権利者')
# インデックスのリセット
df_drone_data = df_drone_data.reset_index(drop=True)
# エクスプロード処理の確認
print(df_drone_data)

エクスプロード処理により、960行のデータが5573行と約6倍のデータとなりました。
FIのセルには1つのFIが存在し、出願人/権利者のセルには1つの出願人/権利者が存在しますので、うまくエクスプロード処理がされたと思います。

出力
        出願人/権利者             FI
0       ソニー株式会社      H04N5/247
1       ソニー株式会社    G03B15/00@U
2       ソニー株式会社    G03B37/00@C
3       ソニー株式会社  H04N5/222:100
4       ソニー株式会社  H04N5/232:030
...         ...            ...
5568  本郷飛行機株式会社       G05D1/10
5569  本郷飛行機株式会社      B64C39/02
5570  本郷飛行機株式会社    B64C13/18@Z
5571  本郷飛行機株式会社    B64D45/04@A
5572  本郷飛行機株式会社     G08G5/04@A

[5573 rows x 2 columns]

クロス集計

それでは試しにクロス集計してみます。

# クロス集計
result1 = pd.crosstab(df_drone_data['出願人/権利者'],df_drone_data['FI'])
print(result1)

553行 x 1609 列の巨大クロス集計表となりました。
これでは使い物になりませんので、次にtop10に限定したクロス集計表にしたいと思います。

出力
FI                        A01B39/18@Z  A01B69/00:303@L  A01B69/00@B  \
出願人/権利者                                                               
つくばテクノロジー株式会社                       0                0            0   
アイシン高丘株式会社                          0                0            0   
アイホン株式会社                            0                0            0   
アウトストア・テクノロジー・エーエス                  0                0            0   
アオイコンサルタント株式会社                      0                0            0   
...                               ...              ...          ...   
NECソリューションイノベータ株式会社                 0                0            0   
NEXT Logistics Japan株式会社            0                0            0   
SSH株式会社                             0                0            0   
TEAD株式会社                            0                0            0   
Zero To Infinity株式会社                0                0            0   

FI                        A01B79/00  A01C15/00@B  A01C15/00@C  A01C15/00@D  \
出願人/権利者                                                                      
つくばテクノロジー株式会社                     0            0            0            0   
アイシン高丘株式会社                        0            0            0            0   
アイホン株式会社                          0            0            0            0   
アウトストア・テクノロジー・エーエス                0            0            0            0   
アオイコンサルタント株式会社                    0            0            0            0   
...                             ...          ...          ...          ...   
NECソリューションイノベータ株式会社               0            0            0            0   
NEXT Logistics Japan株式会社          0            0            0            0   
SSH株式会社                           0            0            0            0   
TEAD株式会社                          0            0            0            0   
Zero To Infinity株式会社              0            0            0            0   

FI                        A01C15/00@F  A01C15/14  A01C23/00@C  ...  \
出願人/権利者                                                        ...   
つくばテクノロジー株式会社                       0          0            0  ...   
アイシン高丘株式会社                          0          0            0  ...   
アイホン株式会社                            0          0            0  ...   
アウトストア・テクノロジー・エーエス                  0          0            0  ...   
アオイコンサルタント株式会社                      0          0            0  ...   
...                               ...        ...          ...  ...   
NECソリューションイノベータ株式会社                 0          0            0  ...   
NEXT Logistics Japan株式会社            0          0            0  ...   
SSH株式会社                             0          0            0  ...   
TEAD株式会社                            0          0            0  ...   
Zero To Infinity株式会社                0          0            0  ...   

FI                        H05B37/02@C  H05B45/32  H05B47/155  H05B47/16  \
出願人/権利者                                                                   
つくばテクノロジー株式会社                       0          0           0          0   
アイシン高丘株式会社                          0          0           0          0   
アイホン株式会社                            0          0           0          0   
アウトストア・テクノロジー・エーエス                  0          0           0          0   
アオイコンサルタント株式会社                      0          0           0          0   
...                               ...        ...         ...        ...   
NECソリューションイノベータ株式会社                 0          0           0          0   
NEXT Logistics Japan株式会社            0          0           0          0   
SSH株式会社                             0          0           0          0   
TEAD株式会社                            0          0           0          0   
Zero To Infinity株式会社                0          0           0          0   

FI                        H05B47/19  H05K5/02@L  H05K5/03@A  H05K7/00@F  \
出願人/権利者                                                                   
つくばテクノロジー株式会社                     0           0           0           0   
アイシン高丘株式会社                        0           0           0           0   
アイホン株式会社                          0           0           0           0   
アウトストア・テクノロジー・エーエス                0           0           0           0   
アオイコンサルタント株式会社                    0           0           0           0   
...                             ...         ...         ...         ...   
NECソリューションイノベータ株式会社               0           0           0           0   
NEXT Logistics Japan株式会社          0           0           0           0   
SSH株式会社                           0           0           0           0   
TEAD株式会社                          0           0           0           0   
Zero To Infinity株式会社              0           0           0           0   

FI                        H05K7/20@B  H05K7/20@G  
出願人/権利者                                           
つくばテクノロジー株式会社                      0           0  
アイシン高丘株式会社                         0           0  
アイホン株式会社                           0           0  
アウトストア・テクノロジー・エーエス                 0           0  
アオイコンサルタント株式会社                     0           0  
...                              ...         ...  
NECソリューションイノベータ株式会社                0           0  
NEXT Logistics Japan株式会社           0           0  
SSH株式会社                            0           0  
TEAD株式会社                           0           0  
Zero To Infinity株式会社               0           0  

[553 rows x 1609 columns]

top10に限定したクロス集計表の作成

出願人/権利者とFIのtop10に限定したクロス集計表を作成します。

# FIのカウント
fi_counts = df_drone_data['FI'].value_counts()
# FIをtop10で並べ替え
top_fi = fi_counts.sort_values(ascending=False).index[:10].tolist()
# 出願人/権利者のカウント
person_counts = df_drone_data['出願人/権利者'].value_counts()
# 出願人/権利者をtop10で並べ替え
top_person = person_counts.sort_values(ascending=False).index[:10].tolist()
# top10の FIと出願人でクロス集計
result2 = pd.crosstab(df_drone_data[df_drone_data['出願人/権利者'].isin(top_person)]['出願人/権利者'], df_drone_data[df_drone_data['FI'].isin(top_fi)]['FI'])
print(result2)
# CSV出力
result2.to_csv('result2.csv', index=True, encoding='utf-8')

完成したクロス集計表は以下となります。なんとなくうまくいった気がします。
厳密な検証をしておりませんので、問題があるようでしたらコメントをください。

出願人/権利者                B64C13/18@Z B64C13/20@Z B64C27/08 B64C39/02 B64D27/24 B64D47/08 B64F1/12 B64F1/36 G05D1/10 G08G5/00@A
キヤノン株式会社 0 2 2 4 0 2 0 0 0 0
ソフトバンク株式会社 1 3 1 7 0 3 0 2 0 0
トヨタ自動車株式会社 0 0 3 6 1 0 1 2 0 3
パロット ドローンズ 0 3 6 10 0 3 0 0 0 0
株式会社エアロネクスト 0 0 14 16 3 3 2 4 0 1
株式会社ナイルワークス 22 11 53 61 18 8 3 26 14 10
株式会社荏原製作所 0 0 9 11 7 0 0 0 0 0
株式会社DRONE iPLAB 0 0 14 15 3 3 0 3 0 1
株式会社NTTドコモ 2 6 0 23 1 2 0 11 9 10
西武建設株式会社 2 0 12 9 3 2 1 2 0 0

感想

普通に作成するとクロス集計表は巨大となってしまいますので、予め分析する企業やFIを決めておき、それらに限定したクロス集計表を作成した方がよいと感じました。

また、そもそもクロス集計表を使って、どういう分析ができるのかという問題もありますが、とりあえず作り方をマスターしておけば、いつか役に立つかもしれません。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?