1. test 1
  2. test 2
  3. test 3
コース一覧
データ分析入門 Python(pandas)
自由分析

データ分析入門 Python(pandas)

pandasによるデータの読み込み・抽出・前処理、groupbyによる集計、表の結合、matplotlibによる可視化、そして前月比や移動平均を使った分析の実践まで、データ分析の基礎を、毎レッスン実際にコードを書き、多店舗ショップの売上データを分析レポートに仕上げながら学べるコースです。Python入門を修了した方を対象としています。約 14.5 時間 (1 日 30 分 × 29 日) で 57 レッスンを修了でき、修了後は手元のCSVを自力で分析し、グラフと示唆のあるレポートを作れるようになります。

1
データ分析のはじめかた
01. データ分析とは15分
02. pandasとは15分
03. ノートブックの使い方15分
04. CSVを読み込む15分
05. つくる:データと対面する20分
06. 第1章クイズ10分
2
DataFrameのきほん
01. SeriesとDataFrame15分
02. 概観コマンド15分
03. 列を選ぶ15分
04. 行を選ぶ15分
05. 条件で抽出する15分
06. 複数条件15分
07. 並べ替える15分
08. つくる:抽出レポート20分
09. 第2章クイズ10分
3
データの前処理
01. 欠損を見つける15分
02. 欠損を埋める・落とす15分
03. 型を直す15分
04. 重複を消す15分
05. 表記ゆれを整える15分
06. 日付型にする15分
07. つくる:データクレンジング20分
08. 第3章クイズ10分
4
集計とグループ化
01. 集計のきほん15分
02. groupby15分
03. 複数キーで束ねる15分
04. aggで一気に15分
05. ピボットテーブル15分
06. 出現回数15分
07. つくる:月次集計表20分
08. 第4章クイズ10分
5
結合と整形
01. なぜ結合が要るか15分
02. mergeで結合する15分
03. 結合の種類15分
04. 縦に積む15分
05. つくる:統合データセット20分
06. 第5章クイズ10分
6
可視化
01. グラフのきほん15分
02. 棒グラフ15分
03. 折れ線グラフ15分
04. ヒストグラム15分
05. 複数系列15分
06. ラベルと整え15分
07. つくる:ダッシュボード4枚20分
08. 第6章クイズ10分
7
分析の実践
01. 問いの立て方15分
02. 前月比15分
03. 移動平均15分
04. 構成比15分
05. 外れ値を見つける15分
06. つくる:示唆を1枚に20分
07. 第7章クイズ10分
8
総合制作
01. 分析レポート完成20分
02. 提案を書く20分
03. 自由分析20分
04. 見せる形に整える20分
05. 完成と次のステップ20分

自由分析

このレッスンでできるようになること。マイショップ以外のデータにも、これまでの手順をそのまま当てはめられるようになります。

ここまでずっと同じ売上CSVを扱ってきました。同じデータだからこそ手順に集中できたわけですが、実務で出会うのは初めて見るデータです。列名も違えば、粒度も違います。それでも、やることは変わりません。

手順を思い出してください。読み込む、形を見る、掃除する、集計する、図にする、示唆を出す。この6段は、家計簿でも、アクセスログでも、部活の記録でも同じです。変わるのは列の名前だけです。

たとえば Python 入門で作った家計簿のCSVを持ってきたとします。列は 日付 と 費目 と 金額 かもしれません。マイショップの 売上日 が 日付 に、カテゴリ が 費目 に対応します。店舗にあたる軸が無ければ、その分の集計は省きます。逆に 支払い方法 のような列があれば、それが新しい軸になります。

Python

df = pd.read_csv(StringIO(csv_text)) print(df.columns.tolist()) print(df.dtypes)

初めてのデータで最初にやるのは、この2行です。どんな列があり、それぞれが何型で読まれたか。金額のはずの列が object 型なら、3章でやったように「1,200円」のような文字が混ざっています。日付のはずの列が object なら to_datetime が要ります。この確認を飛ばして集計に進むと、必ずどこかで詰まります。

自由分析でやりがちな失敗が1つあります。データを見る前に「こういう結果が出るはずだ」と決めてしまうことです。自分のデータほど思い込みが強いので、期待した結論に合う切り口だけを探してしまいます。防ぐには、集計する前に問いを1つ書き、その問いに対して「はい」でも「いいえ」でも受け入れると決めておくことです。

この演習では、列名が違うデータを受け取って、指定された軸で集計する関数を書きます。列名を引数で受け取る形にしておくと、同じ関数がどのデータにも使えます。この汎用化の感覚が、次のレッスンの清書につながります。

要件

  1. 列名は sorted() で昇順に並べる
  2. group_column と value_column が両方あるときだけ集計する
  3. 集計は groupby(group_column)[value_column].sum() で行う
  4. 合計は int に直す
  5. 指定された列が無いときは totals を空、top を空文字にする

入出力例

analyze_any("売上日,店舗,商品名,カテゴリ,数量,金額 2026-01-05,渋谷店,白磁のマグカップ,食器,2,3600 2026-02-03,渋谷店,鋳物ホーロー鍋,調理器具,1,16800 2026-01-06,横浜店,鉄のフライパン,調理器具,1,7800 ", "店舗", "金額") → {"columns":["カテゴリ","商品名","売上日","店舗","数量","金額"],"rows":3,"top":"渋谷店","totals":{"横浜店":7800,"渋谷店":20400}} analyze_any("日付,費目,金額 2026-01-05,食費,1200 2026-01-06,交通費,640 2026-01-07,食費,880 ", "費目", "金額") → {"columns":["日付","費目","金額"],"rows":3,"top":"食費","totals":{"交通費":640,"食費":2080}} analyze_any("日付,費目,金額 2026-01-05,食費,1200 2026-01-06,交通費,640 ", "店舗", "金額") → {"columns":["日付","費目","金額"],"rows":2,"top":"","totals":{}}

ヒント

列があるかどうかは group_column in df.columns で確かめられます

idxmax() で合計が最大のキーが取れます

早めに return して条件分岐を浅く保つと読みやすくなります

生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/08/10

関連レッスン

  • 見せる形に整える

    人に渡せる状態にできる

  • 完成と次のステップ

    次の学びを選べる

  • 提案を書く

    示唆を行動提案にできる

  • 分析レポート完成

    問い→分析→示唆を通せる

main.py
学習モード
エディタを読み込んでいます

メモ

自由分析

⌘S で保存