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 notebook2-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. 行の選択:loc と iloc の違いと使い方
ここでよくハマるんデスヨ……💦 僕も最初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への移行を検討
コレを順番にやっていけばサ、半年もあれば現場で使えるレベルになれますヨ!!💡 僕がそうだったから間違いナイ!!😆
参考リンク
学習を深める時に役立つリンクをまとめておきましたヨ!!✨
- Pandas公式ドキュメント:最新APIリファレンスはコレ!!
- Pandas Getting Started:公式の入門チュートリアルデス!!
- Kaggle Pandas Course:実践的な演習でスキルを磨けますヨ!!
- Google Colab:環境構築なしですぐ試せますネ!!
まずはサ、Google Colabでコードを実際に動かしてみてネ!!「読んだだけ」と「手を動かした」では身につき方が全然違うんデスヨ!!🔥 キミならデキる!!✨ 次回の記事でまたお会いしましょうデスヨ!!😆
この記事は2026年4月時点の情報をもとに作成しています。Pandasのバージョンアップにより、一部の挙動が変わる場合がありますヨ!!公式ドキュメントも合わせてご確認ネ!!✨
関連記事
Pythonでのデータ分析基礎:Pandas・NumPy・Matplotlibで始めるデータサイエンス入門
PythonデータサイエンスはNumPy・Pandas・Matplotlibの三種の神器から始めよう。環境構築から配列操作・DataFrame・グラフ描画まで、初心者でもつまずかないよう丁寧に解説します。