Webサービスやデジタルプラットフォームを運営していると、アクセスログ、ユーザー行動、コンテンツ閲覧数、デバイス情報など、さまざまなデータが蓄積されます。
しかし、データを保存しているだけでは十分ではありません。
重要なのは、データを整理し、傾向を見つけ、次の改善につなげることです。
そこで便利なのが Python と pandas です。
本記事では、Pythonを使ったデータ分析の基本的な流れを、シンプルなサンプルデータを使いながら紹介します。
なぜPythonがデータ分析で使われるのか
PythonはWeb開発やAIだけでなく、データ分析でも広く利用されています。
主な理由は以下です。
- 文法が比較的シンプル
- データ分析ライブラリが充実している
- CSVやJSONを簡単に扱える
- 可視化ツールが豊富
- 機械学習へ発展させやすい
特に pandas を利用すると、表形式データを効率的に処理できます。
pandasをインストールする
まずは必要なライブラリをインストールします。
pip install pandas
Pythonファイルでは以下のように読み込みます。
import pandas as pd
pdという名前で利用するのが一般的です。
CSVデータを読み込む
例えば、以下のようなアクセスデータがあるとします。
date,country,device,visits
2026-08-01,Malaysia,mobile,1200
2026-08-01,Singapore,desktop,420
2026-08-02,Malaysia,mobile,1350
2026-08-02,Thailand,mobile,760
このCSVをpandasで読み込む場合は、read_csv()を利用します。
import pandas as pd
df = pd.read_csv("access.csv")
print(df.head())
head() を使うと、先頭数行を確認できます。
データの基本情報を確認する
分析を始める前に、データ構造を確認することが重要です。
print(df.info())
これにより、
- カラム名
- データ型
- 欠損値
- 行数
などを確認できます。
数値データの概要を見る場合は、
print(df.describe())
を利用します。
平均値、最小値、最大値などをすぐに確認できます。
必要なデータだけ抽出する
例えば、Malaysiaのデータだけ確認したい場合は以下のように書けます。
malaysia = df[df["country"] == "Malaysia"]
print(malaysia)
モバイルユーザーだけ抽出する場合:
mobile = df[df["device"] == "mobile"]
複数条件を組み合わせることもできます。
result = df[
(df["country"] == "Malaysia") &
(df["device"] == "mobile")
]
実際のデータ分析では、このようなフィルタリングを頻繁に利用します。
groupbyでデータを集計する
データ分析で特に便利なのが groupby() です。
例えば国ごとのアクセス数を集計する場合:
country_visits = (
df.groupby("country")["visits"]
.sum()
.sort_values(ascending=False)
)
print(country_visits)
出力イメージ:
Malaysia 2550
Thailand 760
Singapore 420
これだけでも、どの地域からアクセスが多いかを確認できます。
デバイス別に分析する
モバイルとデスクトップの比率を見ることもできます。
device_visits = (
df.groupby("device")["visits"]
.sum()
)
print(device_visits)
東南アジア向けWebサービスでは、モバイル利用率が重要な分析項目になるケースがあります。
単純なアクセス数だけでなく、
- デバイス
- 国
- 時間帯
- ページ
- 流入経路
などを組み合わせることで、より具体的な傾向を把握できます。
欠損値を確認する
実際のデータには、値が入力されていないケースがあります。
print(df.isnull().sum())
欠損値を削除する場合:
df = df.dropna()
特定の値で補完する場合:
df["visits"] = df["visits"].fillna(0)
ただし、欠損値を単純に削除すればよいとは限りません。
「なぜデータが欠けているのか」を確認することも重要です。
日付データを扱う
日付を文字列のまま扱うより、datetime型へ変換すると分析しやすくなります。
df["date"] = pd.to_datetime(df["date"])
曜日を追加する例:
df["weekday"] = df["date"].dt.day_name()
月単位で集計することもできます。
df["month"] = df["date"].dt.to_period("M")
時系列データを分析する場合には非常に便利です。
ピボットテーブルを作る
国とデバイス別にアクセスを比較したい場合は、pivot_table()も利用できます。
table = pd.pivot_table(
df,
values="visits",
index="country",
columns="device",
aggfunc="sum",
fill_value=0
)
print(table)
複数のカテゴリを比較したい場合に便利です。
簡単な可視化を行う
pandasでは簡単なグラフも作成できます。
country_visits.plot(kind="bar")
より高度な可視化を行う場合は、
- Matplotlib
- Plotly
- Altair
などのライブラリを利用できます。
ただし、グラフを作る前に「何を確認したいのか」を明確にすることが重要です。
デジタルプラットフォームでの活用例
データ分析は、単なるレポート作成だけではなく、サービス改善にも活用できます。
例えば、WINMYR Malaysia のようなデジタルプラットフォームをデータ分析のケースとして考える場合、
- モバイルとデスクトップの利用比率
- 時間帯別アクセス
- ページごとの閲覧傾向
- 地域別トラフィック
- コンテンツごとの利用状況
といったデータを整理することで、ユーザー行動の特徴を把握しやすくなります。
重要なのは、データそのものを見るだけではなく、
「この数値から何を改善できるか」
という視点を持つことです。
データ分析の基本フロー
実務では、以下の流れで進めると整理しやすくなります。
1. 目的を決める
例:
「モバイルユーザーの利用傾向を知りたい」
2. データを収集する
必要な項目を整理します。
date
country
device
page
visits
3. データをクリーニングする
- 欠損値
- 重複
- 異常値
- データ型
を確認します。
4. 集計する
groupby() や pivot_table() を利用します。
5. 可視化する
グラフや表で傾向を確認します。
6. 改善につなげる
分析結果から、UI、コンテンツ、パフォーマンスなどの改善仮説を立てます。
AI分析への発展
pandasでデータ処理に慣れると、次のステップとして機械学習やAI分析にも進めます。
例えば、
- ユーザー行動の分類
- 異常アクセス検知
- コンテンツ傾向分析
- 時系列予測
- クラスタリング
などがあります。
Pythonでは、
pandas
↓
NumPy
↓
scikit-learn
↓
機械学習・AI
という流れで学習すると理解しやすいでしょう。
まとめ
Pythonとpandasを利用すると、Webサービスから得られる大量のデータを比較的シンプルなコードで分析できます。
まず覚えておきたい基本操作は、
read_csv()head()info()groupby()pivot_table()isnull()to_datetime()
です。
データ分析では、高度なAIモデルを作る前に、データを正しく理解することが重要です。
まずは小さなCSVデータから始めて、集計・比較・可視化を繰り返すことで、実務で使えるデータ分析の基礎を身につけていきましょう。