LoginSignup
0
2

More than 1 year has passed since last update.

なろう小説APIを試しに使ってみた

Posted at

1.はじめに

Pythonを初めて使うに当たって基本的なライブラリを試した時のメモになります。

目的として「作品内の会話率」と「人気度」の関係について調べてみるという体で進めていこうと思います。


※個人的になろう小説の作品を最後まで完走しているのは流し読みできるぐらい読みやすいものを選んでいる傾向があり、会話がある程度多いほうが読みすいかなという個人の問題で気になったので勉強がてらやってみようと思いました。(初学者なのでソースコードの不備はご了承ください。)


  • 試したこと
    • 「なろう小説API」を叩いてデータを取得
    • 取得データを整形
    • 取得データをグラフに図示
  • 開発環境
    • Windows10 Home
    • Python 3.9.1
    • Visual Studio Code




2.「なろう小説API」を叩いて情報を取得


  • 目標
    • 「作品名」「初投稿日」「ジャンル」「総合評価ポイント」「会話率」を取得


import requests
import pandas as pd
from matplotlib import pyplot as plot
import datetime

url = "http://api.syosetu.com/novelapi/api/"
params = {'of': 't-gp-gf-g-ka', 'order': 'monthlypoint','out':'json','lim':100,'st':0}
res = requests.get(url,params=params)
resData = res.json()


リクエスト送信時のクエリパラメータは以下参照

なろうデベロッパー


title genre general_firstup monthly_point kaiwaritu
小国の侯爵令嬢は敵国にて覚醒する 101 2021-11-16 06:00:00 119112 54
現代陰陽師は転生リードで無双する 202 2021-12-22 06:00:00 78194 25
ポジティブ令嬢フローラの契約結婚 ~愛することはないと言われましたが食事が美味しいので幸せです~ 101 2021-12-17 12:25:26 62294 41
嫌われ皇子のやりなおし~あえて嫌われている闇魔法を極めたら、いつの間にか最強になっていた~ 201 2021-12-24 19:07:51 90444 39
追放、5日後。 ~悪名は利用してこそ価値がある~ 101 2022-01-15 13:40:35 50676 47
・・・ ・・・ ・・・ ・・・ ・・・

ここまでは、特に問題なくできました。

(ほぼ参考サイトのコピペなので出来ないわけがないのですが...)


3.取得データを整形


  • 目標
    • 取得データから以下の情報を計算してみる
    • 初投稿日からの経過日数
    • 1日当たりのポイトン獲得数を計算 ⇒ 総合評価ポイント/経過日数


総獲得ポイントの場合、初投稿日から日数が経っているほど多くなっているため公平を期すために1日当たりの平均ポイント獲得数を使用しようと思います。

本当は、日ごとの獲得ポイントから日数獲得ポイントが予測できることろまで行けば面白い結果を得られる気がしますが、今回は平均でご了承ください。(今後の課題とします!)



data.extend(resData[1:])
df = pd.DataFrame(data)

# 現在時刻を取得
nowtime = datetime.datetime.now()

df['general_firstup'] = pd.to_datetime(df['general_firstup'])
df['days'] = df['general_firstup'].apply(lambda x:float((nowtime - x).days))
df['pt_day'] = df['global_point'] / df['days']


title kaiwaritu days pt_day
小国の侯爵令嬢は敵国にて覚醒する 54 87.0 1369.103448
現代陰陽師は転生リードで無双する 25 51.0 1533.215686
ポジティブ令嬢フローラの契約結婚 ~愛することはないと言われましたが食事が美味しいので幸せです~ 41 56.0 1112.392857
嫌われ皇子のやりなおし~あえて嫌われている闇魔法を極めたら、いつの間にか最強になっていた~ 39 49.0 1845.795918
追放、5日後。 ~悪名は利用してこそ価値がある~ 47 27.0 1876.888889
・・・ ・・・ ・・・ ・・・


4.取得データをグラフに図示


  • 目標
    • 取得したデータをもとに散布図を作図
    • 「会話率」と「1日当たりのポイント獲得数」の相関係数を算出


plot.scatter(df['kaiwaritu'], df['pt_day'], s = 10)
plot.xlabel("kaiwaritu")
plot.ylabel("pt/day")
plot.show()
print(np.corrcoef(x_kaiwaritu, y_ptday))


■出力結果
Figure_1.png

[[ 1.         -0.03054747] 
 [-0.03054747  1.        ]]


散布図からも見てわかるように相関係数もほぼ0に近似しているため、両者の相関はほぼないということとなりました。
ぱっと見だけで判断すると、会話率20~60%の範囲内1日当たりの獲得ポイント数が多い作品があるので、人気になっている理由などを引き続き検証できればと思います。(分析手法に関しても勉強不足と痛感・・・出直してきます)


参考

0
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
0
2