LESSON

Pandas基礎

田中VPoE「分析計画ができたところで、いよいよ手を動かそう。Pythonでデータ分析をするなら、Pandasは必須のライブラリだ。」

あなた「Pandasって名前は聞いたことがあります。Excelの代わりみたいなものですか?」

田中VPoE「Excelの操作をプログラムで行えるイメージだね。ただし、数百万行のデータも扱えるし、再現性のある分析ができる。まずは基本から学ぼう。」

Pandasとは

Pandasは、Pythonのデータ分析ライブラリです。表形式データの読み込み、加工、集計、結合など、データ分析に必要な操作を効率的に行えます。

基本データ構造

構造説明イメージ
Series1次元のラベル付き配列Excelの1列
DataFrame2次元のラベル付き表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分