この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:4
ページ更新者:atom
更新日時:2026-06-12 15:49:47

タイトル: pandas
SEOタイトル: pandasとは|PythonでDataFrameを使うデータ分析の基本

pandas(パンダス)は、表形式データを効率的に扱うPythonのデータ分析ライブラリです。行と列からなる表(テーブル)を直感的に操作でき、CSVやExcelの読み込み、データの抽出・集計・加工といった作業を少ないコードで実現できます。データ分析や機械学習の前処理を支える基盤的なツールとして広く利用されています。

この記事の要点
  • pandasは表形式データを効率的に扱うPythonのデータ分析ライブラリ。
  • 中心となるデータ構造はSeries(1次元)とDataFrame(2次元の表)の2つ。
  • インストールは pip install pandas、慣例的に import pandas as pd として読み込む。
  • CSV読み込み(read_csv)、先頭確認(head)、抽出、集計(groupby)などを少ないコードで実行できる。
  • 数値計算ライブラリNumPyを土台としており、データの前処理・分析・可視化の入口として使われる。
  • 欠損値(NaN)やコピーとビューの扱いなど、注意すべき落とし穴がある。

 

pandasとは

pandasは、Pythonで表形式(テーブル形式)のデータを扱うためのオープンソースのライブラリです。スプレッドシートやデータベースのテーブルのように、行と列で構成されたデータを読み込み・加工・集計するための機能を豊富に備えています。

CSVやExcel、JSONなど多様な形式のファイルを読み込み、欠損値の処理、行や列の抽出、グループごとの集計、複数データの結合といった操作を、比較的短いコードで記述できる点が特徴です。データ分析や機械学習の前段階で行うデータの整形・前処理に頻繁に用いられます。

名前は計量経済学の用語「panel data(パネルデータ)」に由来するとされ、時系列データや多次元データの分析を念頭に設計されています。

主な機能概要
ファイル入出力CSV・Excel・JSONなどの読み込みと書き出し
データ抽出条件指定による行・列の選択やフィルタリング
集計・グループ化合計・平均などの集計、グループ単位の計算
欠損値処理欠損値(NaN)の検出・除去・補完
結合・連結複数の表をキーや位置で結合する処理

 

2つの主要なデータ構造

pandasの中心には、SeriesDataFrameという2種類のデータ構造があります。多くの操作はこのどちらか(または両方)を対象に行われます。

Series(1次元)

Seriesは、1列分のデータに相当する1次元のデータ構造です。値の並びに加えて、各値に対応する「インデックス(見出し)」を持ちます。リストや配列に名前付きの見出しが付いたものと考えると分かりやすいでしょう。

import pandas as pd

s = pd.Series([10, 20, 30], index=["a", "b", "c"])

print(s["b"])  # 20

DataFrame(2次元)

DataFrameは、行と列からなる2次元の表を表すデータ構造です。表計算ソフトのシートやデータベースのテーブルに近いイメージで、pandasで最もよく使われます。各列はそれぞれ1つのSeriesに相当し、列ごとに異なるデータ型(数値・文字列・日付など)を持てます。

import pandas as pd

df = pd.DataFrame({

    "name": ["Alice", "Bob", "Carol"],

    "score": [80, 95, 70],

})

print(df)

データ構造次元イメージ
Series1次元見出し付きの1列のデータ
DataFrame2次元行と列からなる表

 

インストールとインポート

pandasはパッケージ管理ツールのpipでインストールできます。Anaconda環境では多くの場合あらかじめ含まれています。

pip install pandas

コード内で読み込む際は、慣例として pd という別名を付けてインポートします。多くのドキュメントやサンプルがこの書き方を採用しているため、合わせておくと読みやすくなります。

import pandas as pd

 

基本操作の例

CSVファイルの読み込み(read_csv)

CSVファイルは read_csv 関数でDataFrameとして読み込めます。以下は読み込むCSVデータの例です。

次のコードでファイルを読み込み、新しい列の追加や行の抽出、先頭の確認を行います。

import pandas as pd

data_dir = "C:/test_dir/"
data =
pd.read_csv(data_dir + "test.csv")

data['Diff'] = data.Close - data.Open
data = data.iloc[2:4,:]
data.head()

 

上記コードのポイントは次のとおりです。

記述意味
pd.read_csv(...)CSVファイルを読み込みDataFrameを作成する
data['Diff'] = ...終値と始値の差を計算して新しい列を追加する
data.iloc[2:4, :]位置(行番号2〜3)で行を抽出する
data.head()先頭の数行を表示して内容を確認する

 

実行結果の例(抽出された2行)は以下のようになります。

 DateOpenHighLowCloseDiff
21997-01-06116.75116.98115.38115.75-1.00
31997-01-07115.74116.02114.80115.25-0.49

 

先頭の確認(head)と列の抽出

データを読み込んだら、まず head で先頭の数行を確認すると全体像をつかみやすくなります。特定の列だけを取り出す、条件で行を絞り込む、といった操作もよく使います。

# 先頭5行を表示

df.head()

# 特定の列を取り出す

df["score"]

# 条件で行を絞り込む(scoreが80以上)

df[df["score"] >= 80]

集計(groupby)

groupby を使うと、ある列の値ごとにデータをグループ化し、グループ単位で合計や平均などを計算できます。集計はpandasの代表的な活用例です。

import pandas as pd

df = pd.DataFrame({

    "team": ["A", "A", "B", "B"],

    "score": [80, 90, 70, 60],

})

# チームごとの平均スコアを計算

result = df.groupby("team")["score"].mean()

print(result)

この例では、チームAとチームBそれぞれのスコアの平均が計算されます。

 

NumPyとの関係

pandasは、数値計算ライブラリNumPyを土台として構築されています。NumPyは多次元配列(ndarray)と高速な数値演算を提供するライブラリで、pandasの内部でも数値データの保持や演算に活用されています。

両者の役割はおおむね次のように整理できます。NumPyが数値の配列計算に特化しているのに対し、pandasは見出し(ラベル)付きの表形式データを扱いやすくする層を提供します。実際のデータ分析では、ラベルや欠損値を扱いやすいpandasでデータを整形し、必要に応じてNumPyの配列として数値計算を行う、といった使い分けがよく見られます。

ライブラリ得意分野
NumPy多次元配列の高速な数値計算
pandasラベル付き表形式データの整形・集計

 

主な用途

pandasは、データ分析の幅広い場面で土台として使われます。代表的な用途は次のとおりです。

  • データの前処理:欠損値の補完、不要な行・列の削除、型変換、表記の統一など、分析前にデータを整える作業。
  • 集計・分析:グループごとの集計、相関やクロス集計、時系列データの集計などによる傾向の把握。
  • 可視化の土台:整形したDataFrameを、グラフ描画ライブラリ(matplotlibなど)に渡して可視化する際の入力データとして利用。
  • 機械学習の準備:学習に使う特徴量(説明変数)を表形式で整え、モデルに渡せる形に変換する。

このように、pandasは「データを読み込んで整え、分析・可視化につなげる」という流れの中心的な役割を担います。

 

注意したい落とし穴

pandasは便利な一方で、初心者がつまずきやすい挙動もあります。代表的なものを押さえておくと、想定外の結果やエラーを避けやすくなります。

落とし穴内容と対策
欠損値(NaN)欠けた値はNaNとして扱われ、集計や演算の結果に影響することがある。isnull で検出し、dropna で除去、fillna で補完するなど、目的に応じて処理する。
コピーとビュー抽出した一部に値を代入しようとすると、元データへの反映が意図したとおりにならず SettingWithCopyWarning が出ることがある。値を変更する際は .loc で行と列をまとめて指定する、明示的に .copy() を使うといった方法で意図を明確にする。
大規模データのメモリpandasは原則データをメモリ上に展開するため、巨大なデータでは多くのメモリを消費する。必要な列だけ読み込む、適切なデータ型を指定する、分割して読み込むなどで負荷を抑える工夫が必要になる。

 

よくある質問(FAQ)

Q1. pandasとExcelはどう違いますか?

どちらも表形式データを扱える点は共通していますが、pandasはプログラムから処理を自動化・再現できる点が大きな違いです。同じ手順を繰り返し実行したり、大量のファイルをまとめて処理したり、他のライブラリと連携したりする用途に向いています。一方、少量のデータを手軽に確認・編集するだけならExcelのほうが手軽な場面もあり、用途に応じて使い分けられます。

Q2. SeriesとDataFrameはどちらを使えばよいですか?

1列分のデータだけを扱うならSeries、行と列のある表を扱うならDataFrameが基本です。実際の分析ではDataFrameを中心に使い、その1列を取り出すと自動的にSeriesになる、という関係を意識しておくと理解しやすくなります。

Q3. import pandas as pd の「pd」は変えてもよいですか?

文法上は任意の名前を付けられますが、pd は広く使われている慣例です。多くのサンプルコードや書籍がこの別名を前提にしているため、特別な理由がなければ pd に合わせておくと、コードを読む人にとって分かりやすくなります。