見出し画像

「小説家になろう」のデータを分析してみる その2 データの分析の仕方

はじめましての人ははじめまして、そうでないひとはこんばんなろー📲
なろう系VTuberのリイエルです。

前回の記事では、小説家になろうのデータの取得の仕方を書きました。

なので、今回はその取得したデータの分析の仕方をお教えします。

私がおすすめするデータ分析の環境はR言語です。

TableauやPowerBIなどのBIツールを使ってもいいんですが、Tableauは有料ソフトウエアなので個人で導入するのは難しくなっています。(Adobe CCよりも高い年間10万円とられます。)
MicrosoftのExcelやPowerBIシリーズを組み合わせて使う場合も、移動平均などをちょっと工夫しないと出せなかったり、処理可能なデータ量に制限があったりと、一筋縄ではいかない問題があります。また、Google データポータル(Google データスタジオ)もPowerBIと似たような問題を抱えています。

データ収集のAPIが叩けるぐらいに知識がある方なら、おそらくプログラミングができる方かと思います。
R言語はデータ分析(統計データ処理)に特化したプログラミング言語です。

Pythonと並び書かれることが多い言語なのですが、Pythonとは違い、REPLやRStudioのような環境が揃っていること、tidyverseというライブラリが大変優秀というのが上げられます。

Rについてはいくつかわかりやすい解説があるので貼っておきます。インストール方法なども検索すれば出てくるかと思います。

本シリーズではR studioを利用し、以下のパッケージインストールコマンドがすでに実行されているものとします。(記事執筆時点で利用しているもの)

# 統計便利ライブラリ。tidyverseの関数以外使ってない。
install.packages("tidyverse")
# Window関数を扱うライブラリ。移動平均を求めるときに便利。
install.packages("RcppRoll")
# JSONを扱うライブラリ。念の為に入れてるだけなので利用してない。
install.packages("jsonlite")
# 関数型プログラミングをするためのパッケージ。これも念の為。
install.packages("functional")
# 日付を扱うライブラリ。月とかを抽出できる。
install.packages("lubridate")
# tidyverseに含まれるggplotのグラフをひとつにまとめるライブラリ。
install.packages("patchwork")
# svgで画像を保存するときに必要なライブラリ。
install.packages("svglite")

これらのコマンドでインストールしたものを読み込むには以下のようにします。

library(tidyverse)
library(RcppRoll)
library(functional)
library(lubridate)
library(patchwork)

そして、変数にデータを読み込むコマンドを実行します。
readrのread_csv関数を利用しています。

# その1の有料部分でダウンロード可能なランキングデータ。2020年のランキングデータが全部入ってる。ヘッダがないので付与する。
ranking <- read_csv("ranking.csv", col_names = c("date", "type", "rank", "ncode", "pt"))
# まだ未公開のデータ。2020年までのランキングデータが全部入ってる。ヘッダがないので付与する。
ranking_all <- read_csv("ranking_all.csv", col_names = c("date", "type", "rank", "ncode", "pt"))
# 今回の記事の有料部分でダウンロード可能な小説の詳細データ。APIのデータをCSVにコンバートしてある。初登場時点のデータのみにしぼってある。
data <- read_csv("2020-min-dt.csv")
# 今回の記事の有料部分でダウンロード可能な小説の詳細データ。2020年のデータを全部入れたものなので容量がでかい。
data_all <- read_csv("2020.csv")
# それぞれ数値で管理されているものに説明を付与したもの(ジャンルコードをジャンル名に変換したりするためのやつ)
genre_data <- read_csv("genre.csv")
novel_type_data <- read_csv("novel_type.csv")
end_data <- read_csv("end.csv")

ね?かんたんでしょう?

そしてこのような感じで書くだけでかんたんにグラフを書くことができるのです。

ranking %>%
 filter(type == "d") %>% # 日間ランキングで
 filter(rank == 1) %>% # ランキング1位の
 mutate(mean = roll_mean(pt, n = 28, fill = NA)) %>% # 28日間(約一ヶ月)の移動平均を出す
 ggplot() + # そのデータをもとにグラフ作成
 geom_line(aes(date, pt, color="ポイント")) + # ポイントの折れ線を出す
 geom_line(aes(date, mean, color="28日間移動平均")) + # 移動平均の折れ線を出す
 geom_smooth(aes(date, pt, color="ポイント")) + # ポイント推移の近似曲線を描く
 ggsave(filename = "point_2020.png", width=16, height=9, dpi=80) # ファイルに出力する

画像1

どうでしょうか?
これからその3以降では、導出の根拠を込みで、小説家になろうの2020年のデータをグラフで振り返っていければ良いかなと思います。
次回もよろしくおねがいします。

おまけで、本文中でも読み込んでいる2020年の小説のデータや細かいデータを置いておきます。
参考になれば幸いです。

ここから先は

53字 / 3ファイル

¥ 500

期間限定 PayPay支払いすると抽選でお得に!

この記事が気に入ったらサポートをしてみませんか?