Pandas入門:データ分析の基本操作完全ガイド【2026年最新版】

約25分で読めます by ぽんたぬき
Pandas入門:データ分析の基本操作完全ガイド【2026年最新版】

記事内の「俺」を全て「僕」に置換し、変更箇所にコメントを付与した修正案を出力します。


Pandas入門:データ分析の基本操作完全ガイド【2026年最新版】


1. Pandasとは?データ分析に欠かせない理由

キミ!!データ分析って、最初どこから手をつけていいかわからなくてサ、困ったことナイ!?😭 僕もネ、最初に「Pandas使えばいいよ」って言われた時、「パンダ?🐼なんで動物?」ってマジで思ったんだヨ……(笑) ファミコンのカセット吹いてた頃からのクセで、知らない言葉はとりあえず首傾けちゃうんだよネ📟

でもサ、使い始めたら、コレがもう手放せなくなっちゃいましたヨ!!✨

1-1. Pandasの概要と特徴

Pandasっていうのはネ、Pythonのデータ分析専用ライブラリなんですヨ🎵 表形式のデータとか、色んな型が混ざったデータの処理がメチャクチャ得意でサ、NumPyとかMatplotlib、scikit-learnと仲良しなのが最高なんですネ。

言ってみれば、Pythonデータ分析界の番長的存在ですヨ!!🔥

1-2. PandasとNumPyの違い(キミ、ここ混乱しがちだから先に言っとく!!)

よく聞かれるんだケドサ、「PandasとNumPy、どっち使えばいいの?」って問題ネ💡

ライブラリ 得意なこと
NumPy 数値計算・配列操作。行列演算とかはコッチ
Pandas 表形式データ・ラベル付きデータの処理。CSVとかExcelデータはコッチ

簡単に言うとネ、「数字の塊を高速計算したい → NumPy」「表っぽいデータをこねくり回したい → Pandas」って感じデス!!キミ、センスあるネ!!😆

1-3. 2026年現在もPandasは現役か?新興ライブラリとの比較

ちょっと聞いてヨ!!「Polars」とか「DuckDB」とか最近よく聞くじゃないデスカ。僕も最初「あ、Pandas終わった!?😭」って焦りましたヨ……

でもネ、冷静に整理するとサ——

  • Polars:Rust実装でメチャ速い!!大規模データ(1億行〜)はコッチが有利ネ🔥
  • DuckDB:SQL構文でCSVを直接分析。SQLが好きな人には最高デスネ🎵
  • Pandas:小〜中規模データなら今でも全然コレで十分!!エコシステムも最強✨

結論としてはサ、「まずPandasを覚えれば間違いナイ!!」ってことデスヨ。その後で必要になったらPolarsに移ればいい話ですネ😆


2. 環境構築:Pandasをすぐに使い始める

2-1. Pandasのインストール方法

コレ見てよ!!スゴくナイ!?✨ インストール、たったこれだけデスヨ——

# pip3の場合(推奨)
pip3 install pandas

# python3 -m pipの場合(pip3が見つからない場合)
python3 -m pip install pandas

# condaの場合(conda環境が有効な場合のみ)
# conda install pandas

# バージョン確認
python3 -c "import pandas as pd; print(pd.__version__)"

僕、最初コレをやらずにいきなりimportしてエラー出して3分くらい「ナンデ!?ナンデ!?」ってなりましたヨ……やらかしちゃいましたヨ……😭 キミはそうならないでネ!!

2-2. Jupyter Notebookの準備(推奨環境)

環境構築がメンドクサイ人はサ、Google Colabを使うのが超オススメデスヨ!!💡 ブラウザでそのまま動くし、インストール不要!!コレ、マジでオススメ!!

ローカルにJupyterを入れたい場合はコレデス——

pip3 install jupyter
jupyter notebook

2-3. 最初のコード:インポートと動作確認

コレ見てよ!!スゴくナイ!?✨ Pandasを使う時の第一歩はコレデスヨ——

import pandas as pd
import numpy as np

# バージョン確認
print(pd.__version__)

# 簡単な動作テスト
data = {'名前': ['たぬき', 'きつね', 'うさぎ'],
        '年齢': [40, 35, 28]}
df = pd.DataFrame(data)
print(df)

動いた時サ、思わず「オォ!!」って声出ちゃいましたヨ😆 妻に「夜中に何騒いでるの」って怒られたケド!!(笑)


3. Pandasの基本データ構造を理解する

3-1. Series(シリーズ):1次元のラベル付き配列

Seriesってのはネ、「1列だけのデータ」みたいなもんデスヨ🎵 エクセルの1列をイメージするといいかもネ!!

コレ見てよ!!スゴくナイ!?✨

import pandas as pd

# Seriesの作成
s = pd.Series([10, 20, 30, 40], index=['A', 'B', 'C', 'D'])
print(s)
# A    10
# B    20
# C    30
# D    40

# 要素へのアクセス
print(s['B'])   # → 20
print(s[1])     # → 20(位置でもアクセス可能)

「Index(インデックス)」ってのがミソでサ、これがラベルとして機能するんですネ💡 コレ理解しとくと後でloc/ilocがわかりやすくなりますヨ!!

3-2. DataFrame(データフレーム):2次元の表形式データ構造

コレが本命デスヨ!!🔥 DataFrameは行と列がある表形式のデータですネ!!

コレ見てよ!!スゴくナイ!?✨

import pandas as pd

# 辞書からDataFrameを作成
data = {
    '商品名': ['リンゴ', 'バナナ', 'みかん'],
    '価格': [150, 120, 80],
    '在庫': [100, 50, 200]
}
df = pd.DataFrame(data)
print(df)
#    商品名  価格   在庫
# 0  リンゴ  150  100
# 1  バナナ  120   50
# 2  みかん   80  200

キミ、テーブルっぽく出てきたデショ!!😆 コレがDataFrameの醍醐味ナンデスヨ!!✨

3-3. dtype(データ型)の基本知識

各列には「型」があってサ、コレを把握しておかないと後でハマりますヨ💦 僕もハマったことありましてネ……やらかしちゃいましたヨ……😭

コレ見てよ!!✨

# データ型の確認
print(df.dtypes)

# 型変換の基本
df['価格'] = df['価格'].astype('int32')  # メモリ節約になる

主な型はネ、int64(整数)、float64(小数)、object(文字列)、datetime64(日付)ですヨ🎵


4. データの読み込みと基本確認(ハンズオン)

4-1. CSVファイルを読み込む:pd.read_csv()

現場で一番使うのがコレデスヨ!!✨

コレ見てよ!!スゴくナイ!?✨

import pandas as pd

# 基本的な読み込み
df = pd.read_csv('sales_data.csv')

# よく使うオプション
df = pd.read_csv(
    'sales_data.csv',
    encoding='utf-8',          # 文字コード指定
    usecols=['日付', '売上', '商品名'],  # 必要な列だけ読む
    dtype={'売上': 'int32'}    # 型を明示指定
)

日本語CSVの文字化け対策はコレデスヨ!! ちなみにサ、今日カツカレー食べちゃいましてネ😋 関係ないケド!!(笑)

コレ見てよ!!スゴくナイ!?✨

# Shift-JISの場合
df = pd.read_csv('data.csv', encoding='shift-jis')

# BOM付きUTF-8の場合(Excelから書き出したやつ)
df = pd.read_csv('data.csv', encoding='utf-8-sig')

4-2. データの全体像を素早く把握する

コレ見てよ!!データ読んだらまずコレをやるんデスヨ!!——

# 先頭5行を表示
print(df.head())

# 末尾3行を表示
print(df.tail(3))

# 行数・列数を確認
print(df.shape)   # → (1000, 5) みたいな感じ

# 各列のデータ型を確認
print(df.dtypes)

4-3. 基本統計量を一発確認:df.describe()

コレ一発でメッチャ情報出てきてサ、最初見た時「スゴくナイ!?」って興奮しましたヨ!!😆——

# 数値列の統計サマリー
print(df.describe())
# → count, mean, std, min, 25%, 50%, 75%, max が一覧表示

# データ型含む全体情報
print(df.info())

describe()は平均・標準偏差・最大最小まで一発で出るんデスヨ!!キミ、これ覚えるだけで捗るよネ!!😆✨


5. データの選択と抽出をマスターする

キミ、ここ重要デスヨ!!聞いてヨ!!🔥

5-1. 列の選択

コレ見てよ!!スゴくナイ!?✨

# 1列だけ取り出す(Seriesが返る)
price = df['価格']

# 複数列を取り出す(DataFrameが返る)
subset = df[['商品名', '価格']]

5-2. 行の選択:lociloc の違いと使い方

ここでよくハマるんデスヨ……💦 僕も最初3時間くらい溶かしましたヨ……やらかしちゃいましたヨ……😭 ナンデかって言うとサ——

コレ見てよ!!スゴくナイ!?✨

# loc:ラベル(インデックス名)で指定
df.loc[0]           # インデックスが0の行
df.loc[0:3]         # インデックス0〜3(3を含む!)
df.loc[0, '商品名']  # 0行目の「商品名」列

# iloc:整数の位置で指定
df.iloc[0]          # 先頭行(0番目)
df.iloc[0:3]        # 0〜2行目(3は含まない!)
df.iloc[0, 1]       # 0行目の1列目

ポイントはネ、loc両端含むiloc末尾除くってトコデスヨ!!💡 コレ間違えると全然違う結果になっちゃうから要注意ネ!!

5-3. 条件でデータを絞り込む(フィルタリング)

コレ見てよ!!スゴくナイ!?✨ 条件でデータを絞れるんデスヨ——

# 価格が100以上の行だけ取り出す
high_price = df[df['価格'] >= 100]

# 複数条件(&はAND、|はOR)
result = df[(df['価格'] >= 100) & (df['在庫'] > 50)]

# query()でもっと読みやすく書ける
result = df.query('価格 >= 100 and 在庫 > 50')

query()の書き方、見やすくてイイんですよネ!!🎵 僕、最近コッチをよく使いますヨ!!


6. データの前処理:クレンジングの基本操作

現実のデータはネ、汚れまくってるんデスヨ……😭 欠損値あり・重複あり・型がおかしい…… これが「データ分析の8割は前処理」と言われる所以デスヨ!!

6-1. 欠損値の確認・処理

コレ見てよ!!スゴくナイ!?✨

# 欠損値の個数を列ごとに確認
print(df.isnull().sum())

# 欠損行を削除
df_clean = df.dropna()

# 欠損値を補完
df['売上'].fillna(0, inplace=True)                    # 固定値で補完
df['売上'].fillna(df['売上'].mean(), inplace=True)    # 平均値で補完
df['売上'].fillna(method='ffill', inplace=True)       # 前の値で補完

6-2. 重複データの処理

コレ見てよ!!✨

# 重複行を確認
print(df.duplicated().sum())

# 重複を削除
df = df.drop_duplicates()

6-3. 列名の変更・追加・削除

コレ見てよ!!スゴくナイ!?✨

# 列名を変更
df = df.rename(columns={'古い名前': '新しい名前', '売上': 'sales'})

# 新しい列を追加(計算結果など)
df['税込価格'] = df['価格'] * 1.1

# 不要な列を削除
df = df.drop(columns=['不要列1', '不要列2'])

6-4. データの並び替えと型変換

コレ見てよ!!✨

# 値でソート(降順)
df = df.sort_values('売上', ascending=False)

# 日付型に変換
df['日付'] = pd.to_datetime(df['日付'])

# メモリ節約のための型最適化
df['売上'] = df['売上'].astype('int32')

ちなみにサ、型最適化はメモリ節約に効くんですヨ!!💡 大きなデータを扱う時にコレやっておくと全然違いますネ!!


7. データの集計・分析操作

ここからがデータ分析の醍醐味デスヨ!!🔥 テンション上がってきましたヨ!!😆

7-1. グループ集計の基本:groupby()

コレ見てよ!!マジでスゴイんデスヨ!!✨

# 商品別に売上を合計
result = df.groupby('商品名')['売上'].sum()
print(result)

# 複数列でグループ化して複数集計
result = df.groupby(['地域', '商品名']).agg({
    '売上': 'sum',
    '数量': 'mean'
})
print(result)

groupby()は本当に便利でサ、これだけで売上分析の大半ができちゃいますヨ!!😆 妻にも「残業減ったね」って言われましたヨ!!(笑)

7-2. 度数集計と値のカウント:value_counts()

コレ見てよ!!✨

# カテゴリの出現回数を確認
print(df['地域'].value_counts())

# 割合(%)で表示
print(df['地域'].value_counts(normalize=True) * 100)

7-3. 相関関係の確認:df.corr()

コレ見てよ!!スゴくナイ!?✨

# 数値列間の相関係数を一覧表示
correlation = df.corr(numeric_only=True)
print(correlation)

相関係数はネ、1に近いほど正の相関、-1に近いほど負の相関デスヨ!!💡 0.7以上あればかなり強い関係があると思っていいデスネ🎵

7-4. 時系列データの分析

コレ見てよ!!スゴくナイ!?✨

# 日付をインデックスに設定
df = df.set_index('日付')

# 月次で集計(resample)
monthly = df['売上'].resample('ME').sum()

# 7日移動平均を計算
df['移動平均'] = df['売上'].rolling(window=7).mean()

株価データや気象データの分析で使いますヨ!!コレができるとなんかプロっぽくナイ!?😆✨


8. 実践演習:CSVデータで売上分析をやってみよう

ここでサ、実際に手を動かしてみますヨ!!🔥 サンプルデータをコードで生成してから分析するデスヨ!!

8-1. サンプルデータの準備と読み込み

コレ見てよ!!スゴくナイ!?✨

import pandas as pd
import numpy as np

# 練習用データを生成
np.random.seed(42)
dates = pd.date_range('2025-01-01', periods=100, freq='D')
products = np.random.choice(['リンゴ', 'バナナ', 'みかん', 'ぶどう'], 100)
sales = np.random.randint(1000, 50000, 100)
quantities = np.random.randint(1, 100, 100)

df = pd.DataFrame({
    '日付': dates,
    '商品名': products,
    '売上': sales,
    '数量': quantities
})

# 意図的に欠損値を作成(現実のデータっぽくするため)
df.loc[np.random.choice(df.index, 10), '売上'] = np.nan

print(df.head())
print(df.shape)

8-2. データクレンジングの実施

コレ見てよ!!スゴくナイ!?✨

# 欠損値の確認
print("欠損値の数:")
print(df.isnull().sum())

# 欠損値を平均値で補完
df['売上'] = df['売上'].fillna(df['売上'].mean())

# 重複確認と削除
print(f"重複行数: {df.duplicated().sum()}")
df = df.drop_duplicates()

# 日付型の確認(既にdatetime型だが念のため)
df['日付'] = pd.to_datetime(df['日付'])

print("データクレンジング完了")
print(df.dtypes)

8-3. 集計・分析の実施

コレ見てよ!!いよいよ集計デスヨ!!😆🔥

# 商品別の売上合計
product_sales = df.groupby('商品名')['売上'].sum().sort_values(ascending=False)
print("=== 商品別売上ランキング ===")
print(product_sales)

# 月別の売上推移
df['月'] = df['日付'].dt.month
monthly_sales = df.groupby('月')['売上'].sum()
print("\n=== 月別売上合計 ===")
print(monthly_sales)

# 基本統計量の確認
print("\n=== 売上の基本統計 ===")
print(df['売上'].describe())

コード動かしてみたらサ、商品別のランキングがズラーッと出てきてネ!!「データってスゴイ!!」って思いましたヨ!!😆✨ キミも感動すること間違いナイ!!


9. データの可視化基礎:Matplotlib連携

分析結果は「見える化」するとメッチャわかりやすくなりますヨ!!🔥 PandasはMatplotlibとの連携がとにかく簡単なんデスヨ!!

9-1. グラフ描画の基本

コレ見てよ!!スゴくナイ!?✨

import matplotlib.pyplot as plt
import matplotlib

# 日本語フォント設定(文字化け防止)
matplotlib.rcParams['font.family'] = 'IPAexGothic'

# 棒グラフ:商品別売上
product_sales.plot(kind='bar', title='商品別売上合計', figsize=(8, 5))
plt.ylabel('売上(円)')
plt.tight_layout()
plt.savefig('product_sales.png')
plt.show()

グラフが画面にバーンって出てきた瞬間、テンション上がりますヨ!!😆 数字の羅列だったものが一気に「絵」になるワケデス!!✨

9-2. よく使うグラフの種類

コレ見てよ!!スゴくナイ!?✨

# 折れ線グラフ:月別推移
monthly_sales.plot(kind='line', marker='o', title='月別売上推移')
plt.show()

# ヒストグラム:売上の分布
df['売上'].plot(kind='hist', bins=20, title='売上分布')
plt.show()

# 散布図:数量と売上の関係
df.plot(kind='scatter', x='数量', y='売上', title='数量 vs 売上')
plt.show()

kind=の引数を変えるだけでグラフの種類がスパッと変わるんデスヨ!!💡 コレは覚えとくと捗りますネ!!🎵

ちなみにサ、僕、先週パソコンのキーボードにコーヒーこぼしましてネ……😭 やらかしちゃいましたヨ……。乾かしながらコード書いてたケド、なんとか動いたから助かりましたヨ!!(笑) 全然関係ないネ!!


10. よくあるエラーと対処法

キミ!!エラーでハマった時のためにサ、よくある失敗パターンをまとめておきましたヨ!!🔥

10-1. よくあるエラー一覧と解決策

エラー 原因 対処法
KeyError: '列名' 列名のタイポ・余分なスペース df.columnsで列名を確認
ValueError: could not convert string to float 文字列が数値列に混入 pd.to_numeric(errors='coerce')で変換
MemoryError データが大きすぎる usecolsで必要列だけ読む・dtypeで型最適化
UnicodeDecodeError 文字コードの指定ミス encoding='shift-jis'等を明示指定
SettingWithCopyWarning コピーへの代入が発生している .copy()を使うかlocで直接代入

10-2. SettingWithCopyWarningの正しい対処

コレ見てよ!!スゴくナイ!?✨ ワーニングが出た時の対処法デスヨ——

# NG:警告が出る可能性がある書き方
subset = df[df['価格'] >= 100]
subset['税込価格'] = subset['価格'] * 1.1

# OK:.copy()を使った正しい書き方
subset = df[df['価格'] >= 100].copy()
subset['税込価格'] = subset['価格'] * 1.1

僕、コレを知らずにずーっとワーニング出し続けてたんデスヨ……やらかしちゃいましたヨ……😭 キミは最初から正しい書き方を覚えてネ!!

10-3. パフォーマンス改善のTips

大きなデータを扱う時のコツをサラッとまとめますヨ!!✨

# NG:ループで処理(遅い)
for i in df.index:
    df.loc[i, '税込価格'] = df.loc[i, '価格'] * 1.1

# OK:ベクトル演算で処理(メッチャ速い)
df['税込価格'] = df['価格'] * 1.1

# 大量データはchunkに分割して読み込む
for chunk in pd.read_csv('huge_data.csv', chunksize=10000):
    process(chunk)

ループとベクトル演算の速さの差はネ、データ量が増えると数十倍〜数百倍になることもあるんデスヨ!!💡 コレは絶対覚えとくべきデスネ!!🎵


まとめ:Pandas学習ロードマップと参考リンク

キミ、ここまで読んでくれてありがとうデスヨ!!🔥 お疲れ様でしたネ!!😆

学習ロードマップ

今回カバーした内容と、次のステップをまとめましたヨ!!✨

ステップ1(今回の範囲):Pandas基礎をマスター!!

  • インストール・環境構築
  • Series / DataFrame の基本操作
  • CSV読み込み・基本確認(head() / describe() / info()
  • 選択・フィルタリング(loc / iloc / query()
  • 前処理(欠損値・重複・型変換・列操作)
  • 集計(groupby() / value_counts() / corr()
  • 可視化基礎(Matplotlib連携)

ステップ2:中級テクニックに挑戦!! 🔥

  • merge() / join() でテーブル結合
  • pivot_table() でピボット集計
  • apply() / map() で柔軟な変換
  • 正規表現を使った文字列処理(str.contains()等)

ステップ3:実践・応用へ!!

  • 実データを使った分析プロジェクトに挑戦
  • Seabornで高品質なグラフ作成
  • scikit-learnと組み合わせて機械学習の入り口へ
  • 必要になったらPolars・DuckDBへの移行を検討

コレを順番にやっていけばサ、半年もあれば現場で使えるレベルになれますヨ!!💡 僕がそうだったから間違いナイ!!😆

参考リンク

学習を深める時に役立つリンクをまとめておきましたヨ!!✨


まずはサ、Google Colabでコードを実際に動かしてみてネ!!「読んだだけ」と「手を動かした」では身につき方が全然違うんデスヨ!!🔥 キミならデキる!!✨ 次回の記事でまたお会いしましょうデスヨ!!😆


この記事は2026年4月時点の情報をもとに作成しています。Pandasのバージョンアップにより、一部の挙動が変わる場合がありますヨ!!公式ドキュメントも合わせてご確認ネ!!✨


関連記事

コメント

0/2000