上巻 第3章 練習問題#
ここでは、 本書の学習内容の定着 を目的とした練習問題を掲載します。 解答・解説は「解答例」ページを参照してください。 なお、問題の性質上、本書で取り上げた処理と重複することがあります。 ご了承ください。
前提#
以下のように、ライブラリのインポート、変数の定義、およびデータの読み込みが完了していることを前提とします。
Show code cell content
# 必要なライブラリのインポート
import pandas as pd
from pathlib import Path
# データ格納ディレクトリのパス
DIR_IN = Path("../../../data/cm/input")
# ファイル名の定義
FN_CE = "cm_ce.csv"
FN_CC_CRT = "cm_cc_crt.csv"
# データの読み込み
df_ce = pd.read_csv(DIR_IN / FN_CE)
基礎 問題1:データの先頭行の確認#
関連セクション: マンガデータの基礎分析
データ分析では、まずデータの中身を目で見て確認することが大切です。
df_ceの先頭10行を表示し、どのような列が含まれているかを確認してください。
ヒント
データフレームの先頭行を表示するには
head()メソッドを使用します本文では引数なしで先頭5行を表示しましたが、引数に数値を指定すると表示行数を変更できます(例:
head(3)で3行)
基礎 問題2:データの形状と記述統計量の確認#
関連セクション: マンガデータの基礎分析
データの全体像を把握するために、データの行数・列数や、数値列の記述統計量を確認することが重要です。
df_ceの行数と列数を確認し、さらに数値列の記述統計量(平均、標準偏差、最小値、最大値など)を表示してください。
ヒント
データフレームの行数・列数は
shape属性で確認できます(例:df.shape)数値列の記述統計量は
describe()メソッドで取得できます
標準 問題3:特定の雑誌に絞った記述統計量#
関連セクション: マンガデータの基礎分析
データ全体の統計量を確認した後は、特定の条件で絞り込んだデータの特徴を確認してみましょう。
df_ceから「週刊少年マガジン」(mcname列が"週刊少年マガジン")のデータのみを抽出し、その記述統計量を表示してください。
ヒント
条件に合致する行を抽出するには、ブールインデックスを使用します(例:
df[df["列名"] == "値"])抽出したデータに対して
describe()メソッドを適用します他の雑誌名には「週刊少年マガジン」「週刊少年サンデー」「週刊少年チャンピオン」があります
標準 問題4:特定の列に絞ったユニーク値の確認#
関連セクション: マンガデータの基礎分析
データに含まれるカテゴリの種類を把握することも、基礎分析の重要なステップです。
df_ceからmcname(雑誌名)とccname(作品名)の2列を選択し、それぞれのユニーク値の数を確認してください。
ヒント
複数の列を選択するには
df[["列名1", "列名2"]]の形式を使用しますユニーク値の数は
nunique()メソッドで確認できます他の列の組み合わせ(例:
["miname", "cename"])でも試してみましょう
標準 問題5:欠損値の確認#
関連セクション: マンガデータの基礎分析
データ分析の重要なステップとして、欠損値の状態を把握することが挙げられます。
df_ceに含まれる欠損値の合計数を、列ごとに集計して表示してください。
ヒント
欠損値の確認には
.isna()メソッドと.sum()メソッドを組み合わせます.isna()は各セルが欠損値かどうかをTrue/Falseで返し、.sum()で列ごとの合計を算出します
標準 問題6:雑誌ごとの平均ページ数#
関連セクション: マンガデータの基礎分析
「データの全体像の把握」から一歩踏み込み、カテゴリごとの特徴を深掘りしてみましょう。
df_ceを用いて、マンガ雑誌(mcname)ごとの1話あたりの平均ページ数(pages)を算出してください。
結果は数値が見やすいように、平均ページ数の多い順にソートして表示しましょう。
ヒント
カテゴリごとの集計には
.groupby()メソッドを使用します平均値の算出には
.mean()メソッドを使用しますソートには
.sort_values()メソッドを使用します
発展 問題7:巻頭カラー作品の傾向分析#
関連セクション: マンガデータの基礎分析
マンガ雑誌において、巻頭(雑誌の最初の方)に掲載される作品ほど、人気や注目度が高い傾向があります。
本章で定義した page_start_position 列を活用して、この仮説を検証してみましょう。
掲載位置が雑誌全体の先頭5%以内(
page_start_positionが0.05以下)にある各話データを抽出してください抽出したデータの中で4色カラー(
four_coloredがTrue)である各話の割合を算出してください
ヒント
条件による行の抽出にはブールインデックスを使用します(例:
df[df["col"] <= 0.05])ブール値の列の平均を取ると、
Trueの割合が得られます