【pandas入門】pandasとは?SeriesとDataFrameの基本を図解で解説

Python

こんにちは!ぼりたそです!

今回は、Pythonで表形式のデータを扱うライブラリ「pandas(パンダス)」について解説します。

「pandasを使うと何ができるの?」「SeriesとDataFrameは何が違うの?」と疑問に感じている方も多いのではないでしょうか。

pandasを使うと、Excelの表のように行と列で整理されたデータを、Pythonで読み込み、加工、集計できます。CSV・Excelの処理だけでなく、データ分析や機械学習の前処理にも役立ちます。

この記事で学べること

Point
  • pandasの役割とNumPyとの違い
  • SeriesとDataFrameの基本的な構造
  • 行・列・インデックス(index)の意味
  • Seriesと1列のDataFrameの違い

Pythonのリストや辞書を知っていれば読み進められます。NumPyの知識は必要ありません。それでは、順番に見ていきましょう!

スポンサーリンク

pandasとは?

pandasは、表形式のデータの読み込み・加工・集計が得意なPythonライブラリです。

例えば、次のような商品ごとの販売データがあったとします。

商品単価個数
ペン1202
ノート2501
消しゴム1803

pandasを使うと、この表をPython上で扱い、単価の列を取り出したり、「単価×個数」で金額を求めたりできます。行数が多いデータでも、手作業で表を編集する代わりに、同じ処理をコードで繰り返せます。

代表的な用途には、CSV・Excelファイルの読み込み、条件に合う行の抽出、欠損値の処理、店舗別・商品別の集計などがあります。

NumPyとの違い

NumPyもデータ分析によく使われますが、主に得意とする操作が異なります。

ライブラリ主な得意分野代表的なデータ構造
NumPy多次元配列を使った数値計算ndarray
pandas行や列にラベルを持つ表の加工・集計Series、DataFrame

NumPyは数値配列の計算を効率よく進めたいときに便利です。一方、pandasは「商品」「単価」「個数」のように、異なる意味やデータ型の列をまとめて扱うのに適しています。

両者は対立するものではなく、データ分析では組み合わせて使うこともあります。pandasを学ぶためにNumPyを先に習得する必要はありません。

pandasを使う準備

pandasをまだインストールしていない場合は、ターミナルで次のコマンドを実行します。

python -m pip install pandas

Jupyter Notebookでは、コードセルで%pip install pandasを実行する方法もあります。すでに利用できる環境なら、インストールは不要です。

Pythonから使うときは、次のように読み込みます。

import pandas as pd

as pdは、pandasにpdという短い別名を付ける指定です。以降はpd.Series()やpd.DataFrame()と記述します。読み込みだけでは、画面に表などは表示されません。

Seriesとは?1次元のデータを扱う

Series(シリーズ)は、値とインデックス(ラベル)を持つ1次元のデータ構造です。

例えば、商品の単価だけをまとめてみましょう。

import pandas as pd

prices = pd.Series(
    [120, 250, 180],
    index=["ペン", "ノート", "消しゴム"],
    name="単価"
)

print(prices)

# 実行結果:
# ペン      120
# ノート     250
# 消しゴム    180
# Name: 単価, dtype: int64

左側の「ペン」「ノート」「消しゴム」がインデックス、右側の120・250・180が値です。

index=は各値に対応するラベル、name=はSeries全体の名前を指定しています。末尾のdtype: int64は、値のデータ型が64ビット整数であることを意味します。

インデックスのラベルを使うと、対応する値を取り出せます。

print(prices.loc["ノート"])

# 実行結果:
# 250

locはラベルを指定してデータを選ぶ方法です。詳細は別の記事で解説します。

なお、index=を省略した場合、通常は0から始まる整数のインデックスが付けられます。インデックスは必ずしも単なる行番号ではなく、データに付けるラベルだと考えましょう。

スポンサーリンク

DataFrameとは?2次元の表を扱う

DataFrame(データフレーム)は、行と列からなる2次元の表形式データです。Seriesが1つの項目の並びを扱うのに対し、DataFrameでは複数の項目を1つの表にまとめられます。

import pandas as pd

df = pd.DataFrame({
    "商品": ["ペン", "ノート", "消しゴム"],
    "単価": [120, 250, 180],
    "個数": [2, 1, 3]
})

print(df)

# 実行結果:
#      商品   単価  個数
# 0    ペン  120   2
# 1   ノート  250   1
# 2  消しゴム  180   3

ここではPythonの辞書をpd.DataFrame()に渡しました。辞書のキー「商品」「単価」「個数」が列名、各リストの値がそれぞれの列のデータになります。

左端の0・1・2は、DataFrameが自動で付けたインデックスです。「商品」などのデータ列とは別のものなので、混同しないようにしましょう。

DataFrameには、文字列の列と数値の列を一緒に含められます。実際の売上表や顧客一覧のようなデータを扱いやすい理由の1つです。

行・列・インデックスの違い

DataFrameを読み解くには、次の3つを区別することが大切です。

用語意味例
行(row)横方向に並ぶ、1件分のデータ「ノート、250、1」
列(column)縦方向に並ぶ、同じ項目のデータ「単価」の120・250・180
インデックス(index)各行に付けられたラベル0・1・2
列名(columns)各列を識別するラベル商品・単価・個数

例えば、2行目にはノートの情報が横に並んでいます。一方、「単価」列を縦に見ると、商品ごとの単価が並んでいます。

インデックスと列名は、次のコードで確認できます。

print(df.index.tolist())
print(df.columns.tolist())
print(df.shape)

# 実行結果:
# [0, 1, 2]
# ['商品', '単価', '個数']
# (3, 3)

shapeは**(行数, 列数)**を返します。この表は3行3列なので(3, 3)です。インデックスはデータ列数に数えません。

インデックスは文字列に変更することもでき、行を削除したときに0から振り直されるとも限りません。表示上の位置番号とインデックスのラベルは、必ず一致するわけではない点に注意してください。

head()やinfo()など、DataFrameのさまざまな確認方法は別の記事で詳しく解説します。

SeriesとDataFrameの違い

ここまでの内容を整理すると、Seriesは1次元、DataFrameは2次元という違いがあります。

比較項目SeriesDataFrame
次元1次元2次元
基本構造インデックスと値行・列のラベルと値
代表的な作成方法pd.Series()pd.DataFrame()
イメージ商品ごとの単価商品・単価・個数を持つ表

列の選択方法によるSeriesとDataFrameの違い

ここは初心者が特に間違えやすいポイントです。DataFrameから同じ「単価」列を選ぶ場合でも、角括弧の書き方によって返されるデータ構造が変わります。

series_col = df["単価"]
dataframe_col = df[["単価"]]

print(type(series_col).__name__, series_col.shape)
print(type(dataframe_col).__name__, dataframe_col.shape)

# 実行結果:
# Series (3,)
# DataFrame (3, 1)

df["単価"]は1つの列名を指定するため、通常はSeriesを返します。一方、df[["単価"]]は列名のリストを渡しているため、1列だけのDataFrameを返します(列名が重複していない場合)。

(3,)は要素3個の1次元、(3, 1)は3行1列の2次元です。DataFrameは1列しかなくても2次元であり、Seriesと同じものにはなりません。

参考:pandas公式ドキュメント:データ構造の概要

pandasを体系的に学びたい方へ

今回の記事では、pandasの基本となるSeriesとDataFrameの構造を解説しました。ただ、実際のデータ分析では表を作るだけでなく、ファイルを読み込み、必要なデータを選び、加工・集計して結果を保存するといった一連の操作が必要になります。

例えば、売上データを分析するなら、最初に列名やデータ型を確認し、欠損値や重複を整理した上で、商品別・店舗別に売上を集計します。操作を個別に覚えるだけでなく、「どの順番で、何のために処理するのか」を理解することが大切です。

そこで、pandasの操作を基礎から順番に学びたい方に向けて、Kindle書籍『機械学習・データ分析のためのpandas入門 ― データ加工と集計の基本をPythonで学ぶ ―』(著者:ぼりたそ)を執筆しました。

本書では、Series・DataFrameの基本から、CSVファイルの読み込み、行・列の選択、条件抽出、欠損値の処理、データ型の変換、groupbyによる集計、複数の表の結合・変形まで、段階的に解説しています。さらに、コード例と演習を組み合わせることで、学んだ操作を自分でも試せる構成にしています。

「Pythonの基本文法は学んだけれど、pandasはこれから」「CSVやExcelのデータをPythonで整理できるようになりたい」という方におすすめです。ブログでは操作ごとの疑問を解決し、書籍ではデータ処理の流れを体系的に身に付ける、という使い分けもできます。

まとめ

今回は、pandasの役割とSeries・DataFrameの基本構造を解説しました。

  • pandasは、表形式データの加工・集計に便利なライブラリです。
  • Seriesは、インデックスと値を持つ1次元のデータ構造です。
  • DataFrameは、行と列で構成される2次元のデータ構造です。
  • インデックスは行ラベル、列名は各列を識別するラベルです。
  • df["単価"]はSeries、df[["単価"]]は1列のDataFrameになります。

次回は、DataFrameの作成方法とデータの確認方法を詳しく解説します。

スポンサーリンク
タイトルとURLをコピーしました