Pandas基礎
田中VPoE「分析計画ができたところで、いよいよ手を動かそう。Pythonでデータ分析をするなら、Pandasは必須のライブラリだ。」
あなた「Pandasって名前は聞いたことがあります。Excelの代わりみたいなものですか?」
田中VPoE「Excelの操作をプログラムで行えるイメージだね。ただし、数百万行のデータも扱えるし、再現性のある分析ができる。まずは基本から学ぼう。」
Pandasとは
Pandasは、Pythonのデータ分析ライブラリです。表形式データの読み込み、加工、集計、結合など、データ分析に必要な操作を効率的に行えます。
基本データ構造
| 構造 | 説明 | イメージ |
|---|---|---|
| Series | 1次元のラベル付き配列 | Excelの1列 |
| DataFrame | 2次元のラベル付き表 | Excelのシート |
DataFrameの作成
import pandas as pd
import numpy as np
# 辞書から作成
df = pd.DataFrame({
'customer_id': ['C001', 'C002', 'C003', 'C004'],
'name': ['田中', '鈴木', '佐藤', '高橋'],
'age': [28, 35, 42, 31],
'total_purchase': [15000, 48000, 32000, 8500]
})
print(df)
データの読み込み
CSV
# 基本の読み込み
df = pd.read_csv('purchases.csv')
# エンコーディング指定(日本語データ)
df = pd.read_csv('purchases.csv', encoding='utf-8')
# カラム型の指定
df = pd.read_csv('purchases.csv', dtype={
'customer_id': str,
'amount': float
}, parse_dates=['order_date'])
Excel / JSON
# Excel
df = pd.read_excel('report.xlsx', sheet_name='Sheet1')
# JSON
df = pd.read_json('access_log.json')
基本的なデータ確認
データを読み込んだら、まず全体像を把握します:
# 先頭5行
df.head()
# 末尾5行
df.tail()
# 形状(行数, 列数)
df.shape
# カラム一覧
df.columns
# データ型の確認
df.dtypes
# 基本統計量
df.describe()
# 欠損値の確認
df.isnull().sum()
# 全体の情報
df.info()
describe()の読み方
df['amount'].describe()
| 統計量 | 意味 | チェックポイント |
|---|---|---|
| count | 非欠損データ数 | 全行数と一致するか? |
| mean | 平均値 | 極端に大きい/小さくないか? |
| std | 標準偏差 | データのばらつき具合 |
| min | 最小値 | マイナスなど異常値がないか? |
| 25% | 第1四分位数 | 下位25%の境界 |
| 50% | 中央値 | 平均と大きくかけ離れていないか? |
| 75% | 第3四分位数 | 上位25%の境界 |
| max | 最大値 | 極端に大きい値がないか? |
カラム(列)の操作
# 特定カラムの取得(Series)
ages = df['age']
# 複数カラムの取得(DataFrame)
subset = df[['customer_id', 'age', 'total_purchase']]
# 新しいカラムの追加
df['purchase_rank'] = df['total_purchase'].rank(ascending=False)
# カラムの削除
df = df.drop(columns=['unnecessary_column'])
# カラム名の変更
df = df.rename(columns={'total_purchase': 'total_amount'})
行の操作
# インデックスで行を取得
row = df.iloc[0] # 0番目の行
rows = df.iloc[1:5] # 1-4番目の行
# ラベルで行を取得
row = df.loc[0] # インデックスラベルが0の行
# 条件で行をフィルタリング
high_value = df[df['total_purchase'] > 30000]
基本的な集計
# 合計
df['amount'].sum()
# 平均
df['amount'].mean()
# カウント
df['category'].value_counts()
# ユニーク値
df['customer_id'].nunique()
NumPyとの連携
PandasはNumPyの上に構築されています。NumPyの数値計算機能を活用できます:
import numpy as np
# NumPy配列への変換
values = df['amount'].values # NumPy配列
# NumPy関数の適用
np.mean(df['amount'])
np.median(df['amount'])
np.percentile(df['amount'], 90) # 90パーセンタイル
# 条件に基づく値の設定
df['segment'] = np.where(df['total_purchase'] > 30000, 'High', 'Low')
まとめ
| 項目 | ポイント |
|---|---|
| DataFrame | 行と列を持つ2次元の表形式データ構造 |
| データ読み込み | read_csv/read_excel/read_jsonで各種形式に対応 |
| 基本確認 | head, shape, dtypes, describe, info で全体像を把握 |
| カラム操作 | 取得、追加、削除、名前変更 |
| 行操作 | iloc(位置)、loc(ラベル)、条件フィルタ |
| NumPy連携 | 数値計算や条件処理に活用 |
チェックリスト
- DataFrameとSeriesの違いを理解している
- CSVファイルを読み込んで基本情報を確認できる
- describe()の各統計量の意味を理解している
- カラムと行の基本操作ができる
次のステップへ
Pandasの基本操作を学びました。次は、フィルタリングやグループ化など、実践的なデータ操作テクニックを学びましょう。
推定読了時間:30分