データを「見える化」できなくて、クライアントに怒られた話
2019年の秋、私は人生で一番冷や汗をかいた。
データ分析の副業案件で、あるEC企業の売上データを分析してレポートを出したんだけど、クライアントから電話がかかってきた。「すみません、このExcelの数字の羅列、正直よくわからないんですけど…」
あぁ、やっちまった。
データはきちんと分析してた。相関係数も出したし、統計的な検定もやった。でも、それを数字とテキストだけで説明しようとしてたんだ。グラフは申し訳程度に棒グラフを2つ入れただけ。しかも、Excelのデフォルトで作った、見た目が微妙なやつ。
結局、そのクライアントとのミーティングで2時間かけて説明し直すハメになった。その時に気づいたんだ。「データ分析って、分析するだけじゃダメなんだ。伝わらないと意味がない」って。

それから必死で学んだのが、MatplotlibとSeabornを使ったデータビジュアル化だった。
今では、データビジュアル化のスキルのおかげで、クライアントからの評価も上がったし、案件単価も1.5倍になった。「グラフが見やすくてわかりやすい」って言われるようになって、リピート率も格段に上がった。
この記事では、「Pythonでデータ分析はできるけど、可視化がいまいち苦手」「MatplotlibとSeabornの違いがよくわからない」って人に向けて、データビジュアル化の実践的な方法を話していく。
プログラミング学習してる人、データ分析の副業を始めたい人、クライアントに「わかりやすい!」って言われたい人。データビジュアル化は、あなたの市場価値を確実に上げる。
私がメンターしてる受講生の中にも、データビジュアル化のスキルを磨いて案件単価が2倍になった人がいる。技術的には難しくない。でも、知ってるか知らないかで、クライアントからの評価が全然違う。
なぜデータビジュアル化が副業で武器になるのか
クライアントは数字の羅列を読まない
これ、データ分析の副業を始める人が必ず通る道なんだけど、クライアントは私らが思ってるほど数字に強くない。
実際、私が最初に出したレポート、こんな感じだった:
売上と広告費の相関係数: 0.78
p値: 0.003
決定係数: 0.61
統計的に有意な正の相関が認められました。
広告費を10%増加させると、売上が約7.8%増加すると推定されます。
これ、統計的には正しい。でも、クライアントからしたら「で?」って感じ。数字が並んでるだけで、直感的に理解できない。
でも、これを折れ線グラフと散布図で見せたら、クライアントの反応が全然違った。「あぁ、確かに広告費と売上が連動してますね!」って、すぐに理解してくれた。
データ分析の副業で稼ぎたいなら、分析力だけじゃなく「伝える力」が必要。そして、その「伝える力」の中核にあるのが、データビジュアル化のスキル。
データビジュアル化ができると案件単価が上がる
私の経験から言うと、データビジュアル化のスキルがあるだけで、案件単価が1.5~2倍になる。
データ分析だけの案件:
- 報酬:5~10万円
- 作業時間:10~15時間
- 時給換算:3,300~6,600円
データ分析+ビジュアル化の案件:
- 報酬:10~20万円
- 作業時間:12~18時間
- 時給換算:5,500~11,000円
作業時間はそんなに変わらないのに、報酬が倍近く違う。なぜか?
クライアントからすると、「見やすいグラフで分析結果を提示してくれる人」は希少価値が高いから。Excelで数字を集計できる人はたくさんいる。でも、それを美しく、わかりやすく可視化できる人は少ない。
実際、私がクライアントから「ぜひ継続でお願いしたい」って言われるようになったのは、データビジュアル化のスキルを磨いてから。月次レポートを見やすいグラフで提出するようになったら、「これ、経営会議でそのまま使えます」って喜ばれた。

Pythonのデータ分析案件で必須スキル
クラウドワークスやランサーズでPythonのデータ分析案件を見てると、「matplotlib」「seaborn」っていうキーワードが頻繁に出てくる。つまり、データビジュアル化のスキルは、もはや「あったらいいな」じゃなくて「必須」なんだ。
実際の案件例:
【案件内容】
ECサイトの売上データ分析とレポート作成
予算:15万円
納期:2週間
【必須スキル】
- Python(Pandas)
- データ分析の基礎知識
- Matplotlib / Seaborn によるデータ可視化
- レポート作成能力
【求める成果物】
- 売上推移のグラフ
- 商品カテゴリ別分析(ヒートマップ)
- 顧客セグメント分析(散布図)
- 改善提案レポート(PowerPointまたはPDF)
こういう案件、めちゃくちゃ多い。でも、応募できる人が少ないから、競争率が低い。私が提案を出すと、採用率は7割くらい。理由は簡単で、ポートフォリオに綺麗なグラフを載せてるから。
データビジュアル化のスキルがあると:
- 案件の選択肢が増える
- 単価交渉がしやすくなる
- クライアントからのリピートが増える
- ポートフォリオの見栄えが良くなる
正直、Pandasでデータをいじれるだけじゃ、副業で稼ぐのは厳しい。でも、そこにMatplotlibとSeabornの可視化スキルが加われば、一気に市場価値が上がる。
MatplotlibとSeaborn、どっちを使えばいい?
Matplotlibは「基礎」、Seabornは「応用」
よく「MatplotlibとSeabornの違いは?」って質問される。結論から言うと、Seabornの内部ではMatplotlibが動いてる。つまり、SeabornはMatplotlibをベースに、もっと使いやすく、綺麗にしたもの。
建物に例えるなら:
- Matplotlib = 木材や釘などの建築材料
- Seaborn = プレハブ住宅
Matplotlibは自由度が高い反面、コードが長くなりがち。細かいカスタマイズができるけど、初心者には難しい。
Seabornは、よく使う統計的なグラフが簡単に作れる。コードが短くて済むし、デフォルトで綺麗なデザインになってる。でも、細かいカスタマイズはMatplotlibほど自由じゃない。
私の使い分け方:
- 基本的なグラフ(折れ線、棒、散布図)→ Matplotlib
- 統計的なグラフ(箱ひげ図、ヒートマップ、バイオリンプロット)→ Seaborn
- 複雑なカスタマイズが必要 → Matplotlib
- 綺麗なグラフを素早く作りたい → Seaborn
実際の案件では、両方を使い分けてる。むしろ、両方使えないと困るシーンが多い。
Matplotlibの基本的な使い方
まずはMatplotlibから。これができないと、Seabornも使いこなせない。
基本的な折れ線グラフ:
import matplotlib.pyplot as plt
import pandas as pd
# サンプルデータ
data = {
'月': ['1月', '2月', '3月', '4月', '5月', '6月'],
'売上': [120, 135, 158, 142, 168, 185]
}
df = pd.DataFrame(data)
# グラフの描画
plt.figure(figsize=(10, 6))
plt.plot(df['月'], df['売上'], marker='o', linewidth=2, color='#4169E1')
plt.title('月別売上推移', fontsize=16, fontweight='bold')
plt.xlabel('月', fontsize=12)
plt.ylabel('売上(万円)', fontsize=12)
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()
このコード、最初は「長いな」って思うかもしれない。でも、これが基本。一度覚えちゃえば、あとは応用するだけ。
私が初めてMatplotlibを使ったとき、「なんでこんなにコード書かなきゃいけないの?」って思った。でも、慣れてくると、この細かい指定ができることがむしろありがたくなる。
複数の折れ線グラフを重ねる:
import matplotlib.pyplot as plt
# サンプルデータ
months = ['1月', '2月', '3月', '4月', '5月', '6月']
sales_2023 = [120, 135, 158, 142, 168, 185]
sales_2024 = [125, 142, 165, 155, 178, 198]
plt.figure(figsize=(10, 6))
plt.plot(months, sales_2023, marker='o', label='2023年', linewidth=2)
plt.plot(months, sales_2024, marker='s', label='2024年', linewidth=2)
plt.title('年度別売上比較', fontsize=16)
plt.xlabel('月', fontsize=12)
plt.ylabel('売上(万円)', fontsize=12)
plt.legend(fontsize=11)
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()
この「複数の線を重ねる」っていうのが、実務だとめちゃくちゃ使う。クライアントに「去年と今年の比較を見せてください」って言われることが多いから。

Seabornで統計的なグラフを作る
Seabornの強みは、統計的なグラフが簡単に作れること。特に、データ分析の副業では、箱ひげ図やヒートマップを使う機会が多い。
散布図(相関を見る):
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
# サンプルデータ
data = {
'広告費': [10, 15, 20, 25, 30, 35, 40, 45, 50, 55],
'売上': [120, 138, 155, 168, 185, 195, 210, 225, 240, 255]
}
df = pd.DataFrame(data)
plt.figure(figsize=(10, 6))
sns.scatterplot(x='広告費', y='売上', data=df, s=100, color='#4169E1')
sns.regplot(x='広告費', y='売上', data=df, scatter=False, color='#FF6347')
plt.title('広告費と売上の相関', fontsize=16)
plt.xlabel('広告費(万円)', fontsize=12)
plt.ylabel('売上(万円)', fontsize=12)
plt.tight_layout()
plt.show()
これ、Matplotlibだけで書くと倍以上のコード量になる。Seabornだと、sns.regplotで回帰直線を一発で引ける。これがSeabornの魅力。
ヒートマップ(相関行列):
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# サンプルデータ
data = {
'広告費': np.random.randint(10, 50, 30),
'売上': np.random.randint(100, 300, 30),
'アクセス数': np.random.randint(1000, 5000, 30),
'成約率': np.random.uniform(0.02, 0.08, 30)
}
df = pd.DataFrame(data)
# 相関行列を計算
corr = df.corr()
# ヒートマップ
plt.figure(figsize=(8, 6))
sns.heatmap(corr, annot=True, cmap='coolwarm', fmt='.2f', linewidths=0.5)
plt.title('各指標の相関係数', fontsize=16)
plt.tight_layout()
plt.show()
このヒートマップ、クライアントにめちゃくちゃ喜ばれる。「どの指標とどの指標が関連してるか」が一目でわかるから。
私が最初にヒートマップをクライアントに見せたとき、「これ、どうやって作ったんですか?」って聞かれた。「Pythonです」って答えたら、「すごいですね!」って言われて、その場で次の案件の話になった。
箱ひげ図(データの分布を見る):
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
# サンプルデータ
data = {
'カテゴリ': ['A']*20 + ['B']*20 + ['C']*20,
'売上': list(np.random.randint(100, 200, 20)) +
list(np.random.randint(150, 250, 20)) +
list(np.random.randint(200, 300, 20))
}
df = pd.DataFrame(data)
plt.figure(figsize=(10, 6))
sns.boxplot(x='カテゴリ', y='売上', data=df, palette='Set2')
plt.title('カテゴリ別売上の分布', fontsize=16)
plt.xlabel('カテゴリ', fontsize=12)
plt.ylabel('売上(万円)', fontsize=12)
plt.tight_layout()
plt.show()
箱ひげ図は、「外れ値」を見つけるのに便利。データ分析の副業では、「異常値の検出」を求められることが多いから、これも必須。
実際の案件でよく使うグラフパターン
EC企業の売上分析でよく使うグラフ
私がEC企業の案件で一番よく作るのは、「時系列の推移グラフ」と「カテゴリ別の比較グラフ」。
月次売上推移(Matplotlib):
import matplotlib.pyplot as plt
import pandas as pd
# サンプルデータ
months = pd.date_range('2024-01', periods=12, freq='M')
sales = [1200, 1350, 1580, 1420, 1680, 1850, 1920, 2050, 1980, 2100, 2250, 2400]
plt.figure(figsize=(12, 6))
plt.plot(months, sales, marker='o', linewidth=2.5, color='#2E8B57', markersize=8)
plt.title('2024年 月次売上推移', fontsize=18, fontweight='bold', pad=20)
plt.xlabel('月', fontsize=14)
plt.ylabel('売上(万円)', fontsize=14)
plt.grid(True, alpha=0.3, linestyle='--')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
これに前年同月比を追加したりすると、クライアントがすごく喜ぶ。「前年と比べてどうか」を常に気にしてるから。

カテゴリ別売上(Seaborn):
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
# サンプルデータ
data = {
'カテゴリ': ['服', '靴', 'バッグ', 'アクセサリー', '小物'],
'売上': [850, 620, 480, 320, 280]
}
df = pd.DataFrame(data).sort_values('売上', ascending=True)
plt.figure(figsize=(10, 6))
sns.barplot(x='売上', y='カテゴリ', data=df, palette='viridis')
plt.title('商品カテゴリ別売上', fontsize=16)
plt.xlabel('売上(万円)', fontsize=12)
plt.ylabel('', fontsize=12)
plt.tight_layout()
plt.show()
横棒グラフにすると、カテゴリ名が読みやすくなる。これ、意外と知らない人が多い。
マーケティング案件でよく使うグラフ
マーケティング系の案件だと、「広告効果の分析」を求められることが多い。
広告媒体別のROI比較:
import matplotlib.pyplot as plt
import numpy as np
# サンプルデータ
media = ['Google\n広告', 'Facebook\n広告', 'Instagram\n広告', 'Twitter\n広告', 'Yahoo\n広告']
roi = [2.5, 3.2, 2.8, 1.9, 2.1]
colors = ['#4285F4', '#1877F2', '#E4405F', '#1DA1F2', '#FF0033']
plt.figure(figsize=(10, 6))
bars = plt.bar(media, roi, color=colors, alpha=0.8, edgecolor='black')
plt.axhline(y=2.0, color='red', linestyle='--', linewidth=2, label='目標ROI')
plt.title('広告媒体別 ROI 比較', fontsize=16, fontweight='bold')
plt.ylabel('ROI(投資収益率)', fontsize=12)
plt.legend(fontsize=11)
plt.ylim(0, 4)
plt.tight_layout()
plt.show()
この「目標線を引く」っていうのが、実は重要。クライアントが「目標をクリアしてるかどうか」を一目で判断できる。
顧客分析でよく使うグラフ
顧客のセグメント分析では、散布図やクラスター分析のグラフを使う。
RFM分析の散布図:
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# サンプルデータ(R: 最終購入日からの日数、F: 購入頻度、M: 購入金額)
np.random.seed(42)
data = {
'Recency': np.random.randint(1, 365, 100),
'Frequency': np.random.randint(1, 50, 100),
'Monetary': np.random.randint(1000, 100000, 100)
}
df = pd.DataFrame(data)
plt.figure(figsize=(10, 6))
sns.scatterplot(x='Recency', y='Monetary', size='Frequency',
data=df, sizes=(20, 500), alpha=0.6, color='#4169E1')
plt.title('RFM分析:顧客セグメント', fontsize=16)
plt.xlabel('最終購入日からの日数(Recency)', fontsize=12)
plt.ylabel('購入金額(Monetary)', fontsize=12)
plt.tight_layout()
plt.show()
この散布図、バブルのサイズで「購入頻度」を表現してる。こういう「3次元のデータを2次元で表現する」テクニックは、データ分析の副業でめちゃくちゃ使う。
データビジュアル化でつまずきやすいポイント
日本語フォントの設定
これ、初心者が必ずハマる。Matplotlibのデフォルトフォントは日本語に対応してないから、日本語を使うと文字化けする。
解決方法:
import matplotlib.pyplot as plt
import matplotlib as mpl
# 日本語フォントの設定(MacとWindowsで異なる)
# Mac の場合
plt.rcParams['font.family'] = 'Hiragino Sans'
# Windows の場合
# plt.rcParams['font.family'] = 'MS Gothic'
# または
mpl.rcParams['font.sans-serif'] = ['Hiragino Sans', 'MS Gothic']
mpl.rcParams['axes.unicode_minus'] = False # マイナス記号の文字化け対策
これを最初に設定しておけば、あとは普通に日本語が使える。私も最初、これがわからなくて1時間くらいハマった。
グラフのサイズ調整
クライアントに提出するレポートでは、グラフのサイズがめちゃくちゃ重要。小さすぎると見づらいし、大きすぎると紙に印刷したときに変になる。
推奨サイズ:
# 基本的なサイズ(レポート用)
plt.figure(figsize=(10, 6)) # 横10インチ、縦6インチ
# 大きめのグラフ(プレゼン用)
plt.figure(figsize=(12, 8))
# 正方形のグラフ(相関行列など)
plt.figure(figsize=(8, 8))
私の経験だと、figsize=(10, 6)が一番使いやすい。これをデフォルトにしておけば、大体どんな場面でも使える。

色の選び方
色選びも重要。適当に色を選ぶと、見づらいグラフになる。
使いやすいカラーパレット:
import seaborn as sns
# カラーパレットの設定
sns.set_palette("Set2") # 柔らかい色合い
# sns.set_palette("husl") # 明るい色合い
# sns.set_palette("muted") # 落ち着いた色合い
私のおすすめは"Set2"か"muted"。ビジネスシーンでも使いやすい、落ち着いた色合いになる。
データビジュアル化で案件単価を上げる方法
グラフに「ストーリー」を持たせる
ただグラフを並べるだけじゃなく、「ストーリー」を持たせると、クライアントの評価が全然違う。
悪い例:
- グラフを5個並べただけ
- 何を伝えたいのか不明確
- クライアントが自分で解釈しないといけない
良い例:
- 最初に「全体像」を見せる(折れ線グラフ)
- 次に「問題点」を明確にする(比較グラフ)
- 最後に「改善提案」を視覚化する(予測グラフ)
私が気づいたのは、「データを見せる」んじゃなくて「ストーリーを語る」っていう意識が大事だってこと。
実際の案件での使い方:
- 現状把握:時系列グラフで推移を見せる
- 問題の特定:カテゴリ別グラフで問題箇所を明確にする
- 原因分析:散布図やヒートマップで相関を示す
- 改善提案:予測グラフで改善後のイメージを見せる
この流れで資料を作ると、クライアントから「わかりやすい!」って言われる確率が格段に上がる。
インタラクティブなグラフを作る(応用編)
もう一段階レベルアップしたいなら、Plotlyを使ってインタラクティブなグラフを作ると、クライアントがめちゃくちゃ喜ぶ。
import plotly.express as px
import pandas as pd
# サンプルデータ
data = {
'月': ['1月', '2月', '3月', '4月', '5月', '6月'],
'売上': [120, 135, 158, 142, 168, 185],
'アクセス数': [12000, 13500, 15800, 14200, 16800, 18500]
}
df = pd.DataFrame(data)
# インタラクティブなグラフ
fig = px.line(df, x='月', y='売上', title='月別売上推移(インタラクティブ)')
fig.show()
Plotlyのグラフは、マウスを乗せると詳細データが表示される。これ、クライアントに見せると「おぉっ!」ってなる。
私はこれを使い始めてから、案件の単価が1.3倍くらいになった。「他の人と違う」って思ってもらえる。
ダッシュボード化で継続案件を獲得
データビジュアル化の究極系は、「ダッシュボード」を作ること。StreamlitやDashを使えば、Webアプリ形式のダッシュボードが作れる。
簡単なStreamlitのダッシュボード:
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
st.title('売上分析ダッシュボード')
# サンプルデータ
data = {
'月': ['1月', '2月', '3月', '4月', '5月', '6月'],
'売上': [120, 135, 158, 142, 168, 185]
}
df = pd.DataFrame(data)
# グラフの表示
st.line_chart(df.set_index('月'))
# データテーブルの表示
st.dataframe(df)
ダッシュボードを作れるようになると、継続案件が取りやすくなる。「月額10万円で、毎月ダッシュボードを更新します」っていう提案ができる。
私は今、3社と継続契約してて、それだけで月30万円の安定収入になってる。

データビジュアル化スキルを習得する学習ロードマップ
ステップ1:Matplotlibの基礎を固める(1週間)
最初の1週間は、Matplotlibの基本的なグラフを作れるようになることに集中する。
学ぶべき内容:
- 折れ線グラフ(
plt.plot()) - 棒グラフ(
plt.bar()) - 散布図(
plt.scatter()) - グラフのカスタマイズ(色、サイズ、ラベル)
実践課題:
import matplotlib.pyplot as plt
import numpy as np
# 課題1: 折れ線グラフを3本描画
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.sin(x) * np.cos(x)
plt.figure(figsize=(10, 6))
plt.plot(x, y1, label='sin(x)')
plt.plot(x, y2, label='cos(x)')
plt.plot(x, y3, label='sin(x)*cos(x)')
plt.legend()
plt.grid(True)
plt.title('三角関数の比較')
plt.show()
私が最初にMatplotlibを学んだときは、とにかく「手を動かす」ことを意識した。本を読むより、コードを書いて実際にグラフを表示させる。それを100回繰り返したら、自然と身についた。
この段階で重要なのは、「完璧なグラフ」を作ろうとしないこと。まずは「グラフが表示される」ことを目指す。綺麗にするのは後からでいい。
ステップ2:Seabornで統計グラフをマスター(1週間)
Matplotlibの基礎ができたら、Seabornに移る。ここで、データ分析で使う統計的なグラフを学ぶ。
学ぶべき内容:
- 散布図と回帰直線(
sns.regplot()) - ヒートマップ(
sns.heatmap()) - 箱ひげ図(
sns.boxplot()) - バイオリンプロット(
sns.violinplot()) - ペアプロット(
sns.pairplot())
実践課題:
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# サンプルデータを作成
np.random.seed(42)
data = {
'X1': np.random.normal(100, 15, 100),
'X2': np.random.normal(50, 10, 100),
'X3': np.random.normal(75, 12, 100),
'Y': np.random.normal(200, 30, 100)
}
df = pd.DataFrame(data)
# 課題2: ペアプロット(全変数の関係を一度に可視化)
sns.pairplot(df)
plt.show()
# 課題3: 相関行列のヒートマップ
corr = df.corr()
plt.figure(figsize=(8, 6))
sns.heatmap(corr, annot=True, cmap='coolwarm', center=0)
plt.title('相関行列')
plt.show()
ペアプロットとヒートマップは、データ分析の副業で本当によく使う。特にヒートマップは、クライアントに「どの変数とどの変数が関連してるか」を一目で伝えられるから、重宝する。
ステップ3:実践プロジェクトで腕を磨く(2週間)
基礎ができたら、実際の分析プロジェクトをやってみる。これがポートフォリオになる。
おすすめプロジェクト:
- 売上データの時系列分析
- データ:架空のEC企業の月次売上データ
- 作るグラフ:折れ線グラフ、棒グラフ、予測グラフ
- 期間:3~4日
- 顧客セグメント分析
- データ:架空の顧客データ(年齢、購入金額、購入頻度)
- 作るグラフ:散布図、箱ひげ図、ヒートマップ
- 期間:3~4日
- マーケティングROI分析
- データ:広告媒体別の費用と売上
- 作るグラフ:棒グラフ、散布図、回帰直線
- 期間:3~4日
これらのプロジェクトをJupyter Notebookで作って、GitHubにアップする。これだけで、十分なポートフォリオになる。
私の経験だと、ポートフォリオが3つあると、提案の採用率が一気に上がった。「こういうグラフが作れます」って見せられるだけで、クライアントの信頼度が全然違う。
ステップ4:応用テクニックを学ぶ(1~2週間)
基礎が固まったら、差別化のための応用テクニックを学ぶ。
応用テクニック:
サブプロット(複数のグラフを並べる):
import matplotlib.pyplot as plt
import numpy as np
fig, axes = plt.subplots(2, 2, figsize=(12, 10))
# 左上:折れ線グラフ
x = np.linspace(0, 10, 100)
axes[0, 0].plot(x, np.sin(x))
axes[0, 0].set_title('折れ線グラフ')
# 右上:棒グラフ
categories = ['A', 'B', 'C', 'D']
values = [23, 45, 56, 78]
axes[0, 1].bar(categories, values)
axes[0, 1].set_title('棒グラフ')
# 左下:散布図
x = np.random.rand(50)
y = np.random.rand(50)
axes[1, 0].scatter(x, y)
axes[1, 0].set_title('散布図')
# 右下:ヒストグラム
data = np.random.randn(1000)
axes[1, 1].hist(data, bins=30)
axes[1, 1].set_title('ヒストグラム')
plt.tight_layout()
plt.show()
このサブプロットのテクニックは、レポートを作るときに本当に便利。1ページに4つのグラフを配置できるから、情報密度が上がる。
カスタムカラーパレット:
import seaborn as sns
import matplotlib.pyplot as plt
# 企業カラーに合わせたカスタムパレット
custom_palette = ['#FF6B6B', '#4ECDC4', '#45B7D1', '#FFA07A', '#98D8C8']
sns.set_palette(custom_palette)
# これ以降のグラフは全てこのカラーパレットを使う
クライアントの企業カラーに合わせてグラフの色を変えると、めちゃくちゃ喜ばれる。「うちの会社のカラーですね!」って。こういう細かい配慮が、リピート案件につながる。
学習で失敗しないためのポイント
私が学習で失敗したポイントを共有しておく。
失敗1:完璧主義になる
最初、私は「完璧なグラフ」を作ろうとして、1つのグラフに3時間もかけてた。でも、それって無駄だった。
最初は70点のグラフでいい。とにかく量をこなす。100個のグラフを作れば、自然と質も上がる。
失敗2:ドキュメントを読まない
公式ドキュメントを読まずに、ググった情報だけで学習してた。でも、それだと断片的な知識しか身につかない。
Matplotlibの公式ドキュメント、ちゃんと読んだ方がいい。最初は英語で大変だけど、Google翻訳を使えば理解できる。
失敗3:手を動かさない
本を読んだり、動画を見たりするだけで、「わかった気」になってた。でも、実際にコードを書かないと、絶対に身につかない。
インプット3割、アウトプット7割。これを意識すると、学習効率が劇的に上がる。
よくある質問(FAQ)
Q1: MatplotlibとSeaborn、どっちから学ぶべき?
Matplotlibから始めるのをおすすめする。Seabornの内部でMatplotlibが動いてるから、Matplotlibの基礎がわかってないと、Seabornでカスタマイズできない。
学習の順序:
- Matplotlibで基本的な折れ線グラフ、棒グラフ、散布図を作る(1週間)
- Seabornで統計的なグラフを作る(1週間)
- 両方を組み合わせて使う(実践)
私もこの順序で学んだ。最初は「Seabornだけでいいじゃん」って思ったけど、実務だとMatplotlibの知識が必要な場面が多かった。
Q2: データビジュアル化だけで副業できる?
できる。ただし、データ分析のスキルとセットじゃないと厳しい。
「グラフを作るだけ」の案件もあるけど、単価が低い(3~5万円)。でも、「データ分析+ビジュアル化」だと、単価が10~20万円になる。
私がメンターしてる人で、データビジュアル化専門で月15万円稼いでる人がいる。でも、その人もPandasでのデータ加工はできる。
Q3: どんなグラフを覚えれば副業に使える?
実務で8割使うのは、この5つ:
- 折れ線グラフ(時系列の推移)
- 棒グラフ(カテゴリ別の比較)
- 散布図(相関の確認)
- ヒートマップ(相関行列)
- 箱ひげ図(分布の確認)
これだけ覚えれば、大体の案件には対応できる。私も最初はこの5つだけで案件をこなしてた。
Q4: グラフのデザインセンスがない…
大丈夫。デザインセンスは要らない。むしろ、「シンプル」が一番。
ビジネスシーンでは、派手なグラフより、シンプルでわかりやすいグラフの方が評価される。
デザインの基本ルール:
- 色は3色まで
- フォントはシンプルに
- 余白を十分に取る
- グリッド線は薄く
- タイトルは大きく
これを守れば、センスがなくても綺麗なグラフが作れる。私もデザインセンスゼロだけど、クライアントから「綺麗ですね」って言われる。
Q5: データ量が多いとグラフが見づらくなる
データ量が多い時は、集約するか、抽出する。
例えば:
- 日次データ → 週次データに集約
- 100カテゴリ → 上位10カテゴリのみ表示
- 全期間 → 直近6ヶ月のみ表示
「すべてのデータを見せる」必要はない。クライアントが意思決定できる情報だけを見せればいい。
Q6: グラフ作成にどれくらい時間がかかる?
慣れれば、1つのグラフは5~10分で作れる。
最初は30分~1時間かかるけど、慣れてくると、テンプレートをコピペして少し修正するだけで作れるようになる。
私は今、よく使うグラフのテンプレートを20個くらい持ってて、それをコピペして数値だけ変えて使ってる。効率化が大事。
Q7: 資格は必要?
不要。クライアントが見るのは、ポートフォリオと実績だけ。
ただし、学習の目標として「Python3エンジニア認定データ分析試験」を受けるのはあり。体系的に学べるから。
私は資格を持ってないけど、困ったことない。
Q8: 案件を取るためのポートフォリオは?
GitHubにJupyter Notebookを3~5個アップしておけば十分。
内容:
- 売上データの時系列分析(折れ線グラフ)
- カテゴリ別の比較分析(棒グラフ)
- 顧客セグメント分析(散布図、ヒートマップ)
- RFM分析(箱ひげ図)
- 予測モデルの可視化(応用編)
これがあれば、提案時に「こういうグラフが作れます」って見せられる。採用率が格段に上がる。
まとめ:データビジュアル化で副業の市場価値を上げる
ここまで読んでくれてありがとう。データビジュアル化の重要性と、MatplotlibとSeabornの使い方、理解できたんじゃないかな。
最後にもう一度、重要なポイントをまとめる:
データビジュアル化が副業で武器になる理由
- クライアントは数字の羅列を読まない
- 可視化スキルがあると案件単価が1.5~2倍になる
- Pythonのデータ分析案件では必須スキル
MatplotlibとSeabornの使い分け
- Matplotlib:基本的なグラフ、細かいカスタマイズ
- Seaborn:統計的なグラフ、綺麗なデザイン
- 実務では両方使える必要がある
実務でよく使うグラフ
- 折れ線グラフ(時系列)
- 棒グラフ(比較)
- 散布図(相関)
- ヒートマップ(相関行列)
- 箱ひげ図(分布)
案件単価を上げる方法
- グラフにストーリーを持たせる
- インタラクティブなグラフを作る(Plotly)
- ダッシュボード化で継続案件を狙う
もしあなたが「データ分析はできるけど、可視化が苦手」「クライアントにわかりやすく説明できない」って思ってるなら、今がチャンス。
データビジュアル化のスキルは、1~2週間あれば基礎は習得できる。難しくない。でも、知ってるか知らないかで、市場価値が全然違う。
まずは、Matplotlibで折れ線グラフを1つ作ってみてほしい。次にSeabornで散布図を作ってみる。そして、自分のポートフォリオにアップする。
その一歩が、あなたの副業収入を2倍にする。
データビジュアル化は、あなたのキャリアを変える力がある。クライアントから「わかりやすい!」って言われる快感を、ぜひ味わってほしい。
それじゃ、頑張って!
