Pythonデータサイエンスは2026年においても最も需要の高いスキルの一つです。この記事では、データサイエンス初心者が最初に学ぶべき内容から、実務で使える高度なテクニックまでを体系的に解説します。
Pythonデータサイエンスの学習ロードマップ
ステップ1:Python基礎
まずPythonの基礎文法を習得します。データサイエンスに最低限必要な知識:
- 変数・データ型(数値、文字列、リスト、辞書)
- 条件分岐・繰り返し処理
- 関数定義・クラス基礎
- ファイル入出力・例外処理
ステップ2:NumPy・Pandas習得
データ操作の核心ライブラリを習得します:
import numpy as np
import pandas as pd
# NumPy基礎
arr = np.array([1, 2, 3, 4, 5])
print(arr.mean()) # 平均: 3.0
print(arr.std()) # 標準偏差: 1.41...
# Pandas基礎
df = pd.DataFrame({
'名前': ['田中', '鈴木', '佐藤'],
'年齢': [25, 32, 28],
'年収': [450, 600, 520]
})
print(df.describe()) # 統計サマリー
print(df[df['年収'] > 500]) # フィルタリング
print(df.groupby('名前')['年収'].mean()) # グループ集計
ステップ3:データ可視化(Matplotlib・Seaborn)
import matplotlib.pyplot as plt
import seaborn as sns
# 基本グラフ
fig, axes = plt.subplots(2, 2, figsize=(12, 10))
# 折れ線グラフ
months = range(1, 13)
sales = [100, 120, 90, 150, 180, 200, 170, 190, 210, 230, 220, 250]
axes[0, 0].plot(months, sales, marker='o')
axes[0, 0].set_title('月別売上推移')
# ヒストグラム
axes[0, 1].hist(np.random.normal(50, 15, 1000), bins=30)
axes[0, 1].set_title('正規分布')
# 散布図
x = np.random.randn(100)
y = 2 * x + np.random.randn(100)
axes[1, 0].scatter(x, y, alpha=0.5)
axes[1, 0].set_title('散布図')
# ヒートマップ
sns.heatmap(df.corr(), annot=True, cmap='coolwarm', ax=axes[1, 1])
axes[1, 1].set_title('相関マップ')
plt.tight_layout()
plt.savefig('analysis.png', dpi=150)
plt.show()
ステップ4:機械学習(scikit-learn)
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import accuracy_score, classification_report
import pandas as pd
# データ準備
df = pd.read_csv('data.csv')
X = df.drop('target', axis=1)
y = df['target']
# 前処理
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# 学習・評価
X_train, X_test, y_train, y_test = train_test_split(
X_scaled, y, test_size=0.2, random_state=42
)
# ランダムフォレスト
rf = RandomForestClassifier(n_estimators=100, random_state=42)
rf.fit(X_train, y_train)
y_pred = rf.predict(X_test)
print(f"精度: {accuracy_score(y_test, y_pred):.4f}")
print(classification_report(y_test, y_pred))
# クロスバリデーション
cv_scores = cross_val_score(rf, X_scaled, y, cv=5)
print(f"CV精度: {cv_scores.mean():.4f} ± {cv_scores.std():.4f}")
実践プロジェクト:株価予測モデルの構築
import yfinance as yf
import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler
from sklearn.ensemble import GradientBoostingRegressor
# 株価データ取得
ticker = yf.Ticker("AAPL")
df = ticker.history(period="2y")
# 特徴量エンジニアリング
df['MA5'] = df['Close'].rolling(5).mean()
df['MA20'] = df['Close'].rolling(20).mean()
df['RSI'] = calculate_rsi(df['Close'], 14) # RSI計算
df['Return'] = df['Close'].pct_change()
df['Volatility'] = df['Return'].rolling(5).std()
# 翌日の終値を予測ターゲットに
df['Target'] = df['Close'].shift(-1)
df = df.dropna()
features = ['MA5', 'MA20', 'RSI', 'Return', 'Volatility', 'Volume']
X = df[features]
y = df['Target']
# 学習・予測
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, shuffle=False)
model = GradientBoostingRegressor(n_estimators=200)
model.fit(X_train, y_train)
predictions = model.predict(X_test)
print(f"RMSE: {np.sqrt(mean_squared_error(y_test, predictions)):.2f}")
おすすめの学習リソース
| リソース | 種別 | レベル | 料金 |
|---|---|---|---|
| Kaggle Learn | オンライン講座 | 初〜中級 | 無料 |
| Udemy「現役シリコンバレーエンジニアが教えるPython」 | 動画講座 | 初心者 | 有料(セール時1,500円〜) |
| 「Pythonで動かして学ぶ!あたらしい機械学習の教科書」 | 書籍 | 初〜中級 | 〜3,000円 |
| Google Colab | 実行環境 | 全レベル | 無料 |
まとめ:Pythonデータサイエンスでキャリアを拓こう
Pythonデータサイエンスは習得に時間がかかりますが、一度マスターすれば年収アップや転職・フリーランスなど多くのキャリアの選択肢が広がります。まずはGoogle ColabやKaggle Learnで無料から始めて、少しずつスキルを積み上げていきましょう。