高橋かずひとのプログラミング、その他、備忘録。

日々調べてたことや、作ってみたものをメモしているブログ。 お決まりの断り文句ですが、このブログに書かれている内容は個人の見解であり、所属する組織の公式見解ではありません。チラ裏。

「Kindleの蔵書リストをGoogle Colaboratoryでデータ分析してみた」+ Amazon Product Advertising API(商品情報API)

からあげさんの「Kindleの蔵書リストをGoogle Colaboratoryでデータ分析してみた」です。


前回は7月22日にやっていますね。

 今回は年末でキリが良いのと、追加で「Amazon Product Advertising API(商品情報API)」を利用してみました。

スクレイピングも検討していたのですが、Amazonの規約的にアウトぽいので、正攻法のAPIで行きます(Amazon出品者かアソシエイト登録者か開発者登録者じゃないと使えませんが)

 

「ログインしなければスクレイピングAmazonの規約的に問題無い」とか、「大量アクセスしなければスクレイピングもOK」みたいな説明をしているブログも目にしたのですが、個人的にはNGな気がするので、作りかけていたスクレイピングのコードは非公開です。

 

Amazon Product Advertising API(商品情報API)追加版ノートブック

からあげさんの公開ノートブックをベースに、いくつか処理を追加しています。

 

Amazonの商品情報APIを使用する際には、以下を設定してください。

KEY    = "<ACCESS KEY>"
SECRET = "<SECRET ACCESS KEY>"
TAG    = "<TAG>"

 

蔵書数

6414になりました。

7月22日から473冊増加です。

 年毎の購入数

 2015年に及ばないものの2020年もボチボチ購入していますね。

f:id:Kazuhito00:20201229214658p:plain

月毎の購入数

今までの積み上げだと、2012年からのデータのため、ちょっと分かりにくいですね。

2020年の単年で確認すれば良いかしら🙄

f:id:Kazuhito00:20201229214820p:plain

と言うわけで2020年単年での購入実績↓

f:id:Kazuhito00:20201230182915p:plain

10月めっちゃ買ってますね、、、

内容確認してみたら、バキシリーズ買いあさってました🙄

日毎の購入数

 相変わらず23日の購入数が飛び抜けています。謎。

f:id:Kazuhito00:20201229214933p:plain

ちなみに、2020年単年での購入実績↓

f:id:Kazuhito00:20201230183046p:plain

2020年で見ても23日めっちゃ多いですね、、、(22日と4日も何故か多い)

謎。

まったく思い当たるふしが無いです。

23日って何かありましたっけ、、、?

曜日毎の購入数(0が月曜日、6が日曜日) 

前回と同じく金曜日が若干多いですね🙄

f:id:Kazuhito00:20201229215054p:plain

こちらも、2020年単年での購入実績を見てみます↓

f:id:Kazuhito00:20201230183242p:plain

金曜が多くて月曜が少ないですね。

月曜はジャンプ読んでる気がするので、なんとなく納得。

金曜は、、、なんでしょうね、、、

次の日休みだと買ってしまうとか、、、?

タイトル文字数の分析

f:id:Kazuhito00:20201229215155p:plain

平均:16.818210
標準偏差:12.240585
最小:1
最大:90

文字数1のタイトル

前回から変わらず「累」です。

文字数90のタイトル

こちらも前回から変わらず
「売る!アイデアの作り方のすべて――たった6パターン39通りの考え方で、成功するビジネスモデルが見えてくる!: HIT商品のアイデアの全てを、整理・パターン化して完全網羅!【保存版】」です。

ただ、もうkindleで売っていない模様。発売停止?

筆者の分析

 バキとNARUTOを改めて買い揃えたので、一気に2位3位に浮上しています。

 Amazon Product Advertising API(商品情報API)で情報取得

Kindleの蔵書リストにASIN(Amazon Standard Identification Number)があったので、ASINを元に価格とジャンルを取得しました。

API呼び出し毎にASINが10個まで指定できるので、10個ずつAPIをforでぶん回しています。

Amazon側には負荷をかけないようにAPI呼び出し毎に、1秒スリープをしているので、ボチボチ時間かかります。

自分の環境では6414件で12分20秒かかりました。

 

追記:

10件のうち1件でも何らかのエラー(AmazonDB内にデータ無いとか)が起きると残りの9件も道連れでデータが取れないため、総件数が少ない場合は1件ずつが良いかもしれません。

あと、当たり前と言えば、当たり前ですが、短時間にやりすぎるとエラー返されます。

取得できないデータ

何故かAPIで情報取得できないデータが結構な数ありました。

 

何個かピックアップして眺めてみると、、、

「アクタージュ act-age」、etc

 →あー、、、発売停止、、、

「ザ・シェフ」、etc

 →kindle unlimitedに登録し直しされて、ASINが変わった?

「日産 GT-R NISMO[GT-R NISMO] Kindleカタログ」、etc

 →公開終了? 

 

おそらく上記の3パターンくらい🙄

多分unlimited化とかでASINが変わってるのが多数ですかね。

 価格

 ひとまず、価格をdescribe()で要約統計量眺めてみます。

データ取得できなかったやつは、ひとまず除外。

  • 平均:597.883366
  • 標準偏差:457.549120
  • 最小値:0.000000
  • 25%:440.000000
  • 50%:564.000000
  • 75%:660.000000
  • 最大値:10890.000000

最大値10890?!

なんじゃそりゃ、と思いつつデータ見てみたら、

「【全15巻合本版】角川インターネット講座」と言う合本版でした。合本ならしょうがない。

価格Top10

高額商品が気になったので、Top10を眺めてみます。

1位:【全15巻合本版】角川インターネット講座 10890円

15巻合本しているからお得。みたいな感じに買ったのだと思われます。

2016年購入のため、もはや記憶のかなた。

 
2位:Code Complete 第2版 下 完全なプログラミングを目指して 6375円

安定のCode Completeですね。皆が認める良書。

なんで上巻が入ってないのか。と思っていたら、

今期間限定で50%Offのようです。

最近はちょいちょい50%Offしているの見かける気もしますが。


3位:アジャイルソフトウェア要求 5148円

これも結構読んだことある人多いと思いますが、、、

こんなに高かったっけ?


4位:万能鑑定士Q:全事件簿 4574円

万能鑑定士Qの合本版ですね。


5位:GOSICK 全9冊合本版 4455円

こちらも合本版。

一時期、合本版の小説を沢山読んでいた時期がありました。たしか。


6位:Pythonによる医療データ分析入門 pandas+擬似レセプト編 4159円

医療データ分析をやりそうになったことがあって買った本。

結局、医療データ分析はやらなかったのですが、この本自体は普段触れない知識が色々あって良かった覚えがあります。


7位:TensorFlow機械学習クックブック Pythonベースの活用レシピ60+ impres... 4158円

TensorFlowを良く触る人なら、とりあえず買っているんじゃないかと思っている本。


8位:ゲームメカニクス大全 ボードゲームに学ぶ「おもしろさ」の仕掛け 3940円

裏でインディーゲーム制作のお手伝いもしているので、そっち方面のお勉強系書籍。

ゲーム制作しなくても面白い本です。


9位:Python機械学習ライブラリ scikit-learn活用レシピ80+ impress t... 3861円

この手のやつ、買っただけで満足しているシリーズな気がします、、、

買うと安心する。

でも、実用するときは困りごとはググる。みたいな🙄


10位:美味しいマイナー魚介図鑑 3856円

唐突に魚介図鑑。

マイナー珍魚度、味の良さ、値段で評価されています🐟

 価格合計 ※正確には現在価格の合計(発売停止等のデータ取得できないもの以外)

3,367,877円

見出しにある通り、現在の価格であるのと、データ取得できていないものは加算されていないので、これよりお金使っているとは思います。

まあ、ぼちぼち使ってますね、、、🙄

ちなみに、2020年は、544,532円でした。

僕の雑魚年収を考えると、かなりの割合使ってますね、、、🙄

 価格ヒストグラム

10000円越えがいるからダメかと思っていましたが、、、

正直全然わからないですね、、、

f:id:Kazuhito00:20201230185732p:plain

範囲を0~2000円に絞ってみます↓

f:id:Kazuhito00:20201230185910p:plain

マンガが主なので、こんな感じですかねー。特に違和感無し。

ジャンル

ひとまず、value_counts()で数えてみます。

 

少年マンガ:1531
青年マンガ:1172
マンガ:791
取得失敗(発売中止等):781
タレント写真集:433
...
金融・ファイナンス:1
文芸・総合:1
マスメディア:1
文学・評論:1
ノンフィクション・伝記:1
Name: genre, Length: 87, dtype: int64

 

めっちゃ取得失敗したやつおる、、、🙄

僕はジャンル絞らず読むことをモットーにしているのですが、87もジャンル名あるとイマイチ分析しにくそうですね、、、

とりあえず、グラフにしてみます↓

f:id:Kazuhito00:20201230190333p:plain

文字ちっちゃ、、、

少年マンガ」と「マンガ」と「Manga」が別々にあったり、「Kindle本」と言うのがあったりして、イマイチ綺麗なデータじゃないですねー。。。

本格的に分析しようと思ったら、もうちょっとちゃんとした前処理要る🙄

要改善。

ジャンルTop10

取得失敗した件数が781件(約12%)あるのが痛いですね、、、

Unlimited化したやつとかは書籍名とかで紐付け直さないとノイズが多い気がします。

f:id:Kazuhito00:20201230190759p:plain

マンガが多いのは想定通り。

写真集って何だったかしら、、、

多分やりかけて挫折した女優分類的なやつの学習データかしら🙄

10円くらいで写真集がセールしているの見て買い漁ったは良いが、途中で飽きたやつ、、、

 プログラミング系の書籍が結構な数「工学」に分類されているため上位に来ていますね。

ファンタジーとかミステリーは中身覗いてみましたが、ほぼマンガでしたね🙄

 


 

やはり価格とかジャンルがあると更に面白いことが出来そうですね。

ただ、少々ノイジーな感じがするので、もう少しクレンジングとか前処理を考えたいところです🦔