3. ヒストグラム#

3.1. 概要#

ヒストグラム(Histogram) とは,量的変数に対して,分布の形状を 長方形の組合せ で表すグラフです. 横軸に変数の 区間 ,縦軸にその区間に属するデータの数( 度数 )を取ります. 柱状図 とも呼ばれます. 量的変数の分布を見る際,利用頻度が高い図です.

例えば上図は,マンガ作品ごとの平均掲載位置の分布を表したヒストグラムです.0.6から0.7にピークがあることがわかります.

ヒストグラムには様々な種類がありますが,ここでは累積ヒストグラム積上げヒストグラムを紹介します.

累積ヒストグラム とは,下図のように累積分布を表現したヒストグラムです.これにより 特定の値以下(以上) のデータがどの程度存在するかを確認することができます.

積上げヒストグラムとは,下図のように横軸とは他の変数によって度数を分割し,縦に積上げたヒストグラムです.これにより,分布を構成する要素の内訳を確認しやすくなります.

3.2. Plotlyによる作図方法#

Plotlyでは,plotly.express.histogram()でヒストグラムを作成可能です.

import plotly.express as px
fig = px.histogram(df, x='col_x')

上記の例では,dfcol_x列をX軸,その度数をY軸に取ったヒストグラムのオブジェクトfigを作成します.また,

fig = px.histogram(df, x='col_x', cumulative=True)

cumulative=Trueオプションを指定することで,累積ヒストグラムを作図可能です.更に,

fig = px.histogram(df, x='col_x', color='col_stack', barmode='stack')

barmode='stack'を指定することで,col_stack列に関する積み上げヒストグラムを作図可能です. もちろん,cumulativeとの組み合わせて使うこともできます.

3.3. MADB Labを用いた作図例#

3.3.1. 下準備#

import pandas as pd
import plotly.express as px

import warnings
warnings.filterwarnings('ignore')
# 前処理の結果,以下に分析対象ファイルが格納されていることを想定
PATH_DATA = '../../data/preprocess/out/episodes.csv'
# Jupyter Book用のPlotlyのrenderer
RENDERER = 'plotly_mimetype+notebook'
# 平均掲載位置を算出する際の最小連載数
MIN_WEEKS = 5
def show_fig(fig):
    """Jupyter Bookでも表示可能なようRendererを指定"""
    fig.update_layout(margin=dict(t=50, l=25, r=25, b=25))
    fig.show(renderer=RENDERER)
df = pd.read_csv(PATH_DATA)

3.3.2. 掲載位置の分布#

MIN_WEEKS以上連載したマンガ作品の平均掲載位置の分布を見てみます.

df_plot = \
    df.groupby(['mcname', 'cname', 'creator'])['pageStartPosition']\
    .agg(['count', 'mean']).reset_index()
df_plot = df_plot[df_plot['count'] >= MIN_WEEKS]\
    .reset_index(drop=True)
fig = px.histogram(
    df_plot, x='mean', title='作品ごとの掲載位置')
fig.update_xaxes(title='平均掲載位置')
fig.update_yaxes(title='作品数')
show_fig(fig)