Pandas入門:データフレームとは? 機械学習でよく使う基本の操作解説

1. Pandasとは?

Pandas(Python Data Analysis Library)は、Pythonでデータ分析を行う際に広く使われるライブラリです。特に、表形式のデータを扱うためのDataFrame(データフレーム)というデータ構造が強力であり、データの読み込み、前処理、集計、可視化などを簡単に行うことができます。

本記事では、Pandasのデータフレームについて初心者向けに詳しく解説し、機械学習においてよく使われる機能とともに説明します。


2. データフレームとは?

データフレームの概要

データフレームは、行と列を持つ表形式のデータ構造で、ExcelのシートやSQLのテーブルに似た形をしています。

  • 行(index):データの識別子や番号
  • 列(columns):データの種類(変数)
  • セル(値):各行と列の交差点にあるデータ

例えば、以下のようなデータを考えてみましょう。

名前 年齢 身長(cm) 体重(kg)
田中 25 170 65
鈴木 30 165 70
佐藤 22 175 68

このようなデータをPythonで扱うために、Pandasのデータフレームを使います。


3. データフレームの作成方法

Pandasのデータフレームを作成するには、pandas.DataFrame()を使用します。以下の方法で作成できます。

3.1 ExcelやCSVを読み込んでデータフレームを作成

ExcelやCSVファイルからデータを読み込むことは、データ分析の基本です。

import pandas as pd

# CSVファイルを読み込む
df_csv = pd.read_csv("data.csv")
print(df_csv.head())

# Excelファイルを読み込む
df_excel = pd.read_excel("data.xlsx")
print(df_excel.head())

このように、pd.read_csv()pd.read_excel()を使うことで、簡単にデータフレームを作成できます。

 

3.2 リストを使ってデータフレームを作成

import pandas as pd

data = [
    ["田中", 25, 170, 65],
    ["鈴木", 30, 165, 70],
    ["佐藤", 22, 175, 68]
]

df = pd.DataFrame(data, columns=["名前", "年齢", "身長(cm)", "体重(kg)"])
print(df)

出力:

   名前  年齢  身長(cm)  体重(kg)
0  田中  25     170      65
1  鈴木  30     165      70
2  佐藤  22     175      68

3.3 辞書を使ってデータフレームを作成

data = {
    "名前": ["田中", "鈴木", "佐藤"],
    "年齢": [25, 30, 22],
    "身長(cm)": [170, 165, 175],
    "体重(kg)": [65, 70, 68]
}

df = pd.DataFrame(data)
print(df)

この方法では、辞書のキーが列名となり、値がそれぞれの列のデータとして格納されます。


4. データの基本操作

4.1 データの確認

データフレームを扱う際に、データの基本的な情報を確認するのは重要です。

print(df.head())  # 先頭5行を表示
print(df.tail())  # 末尾5行を表示
print(df.info())  # データ型や欠損値の確認
print(df.describe())  # 数値データの基本統計量を表示

4.2 列の選択

特定の列を取得するには、以下のようにします。

print(df["名前"])  # 名前の列を取得
print(df[["名前", "年齢"]])  # 名前と年齢の列を取得

4.3 行の選択

ilocを使ってインデックス番号で行を取得できます。

print(df.iloc[1])  # 1行目のデータを取得

5. 機械学習でよく使うデータフレーム操作

5.1 欠損値の処理

機械学習ではデータに欠損値が含まれていることが多いため、それを処理する必要があります。

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

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

# 欠損値を平均値で補完
df["年齢"].fillna(df["年齢"].mean(), inplace=True)

5.2 データのフィルタリング

特定の条件に合うデータを抽出できます。

# 年齢が25歳以上のデータを取得
filtered_df = df[df["年齢"] >= 25]
print(filtered_df)

filtered_df = df[df[“年齢”] >= 25] の意味

このフィルタリングでは、 df[df["年齢"]とdfが2重になっています。この部分に少し解説を追加します。

df["年齢"] >= 25 の部分は、年齢列に対して「25以上かどうか」を判定するブールSeriesを生成します。これを実行すると、以下のような True / False のSeriesになります。

0 False
1 True
2 True
3 False
4 True
Name: 年齢, dtype: bool

そして、Pandasでは df[条件] という書き方をすると、
条件が True になっている行だけを抽出する という「ブールインデックス」が適用されます。

そのため、Trueになっているデータだけをあらためてdf[]に格納する事で、データの抽出が完了するという事になります。

filtered_df = df[df["年齢"] >= 25]

この結果として、新しいDataFrame filtered_df には年齢が25以上の行だけが残るわけです。

 

5.3 データのソート

データを並べ替えることもよくあります。

# 年齢の昇順にソート
sorted_df = df.sort_values(by="年齢", ascending=True)
print(sorted_df)

こちらも先程と似た、エクセルでよくある操作ですが、先ほどと違い、df[]が2重になっていません。

sorted_df = df.sort_values(by="年齢", ascending=True) ではなぜ df[] を使わないのか?

これは、sort_values()DataFrame自体をソートして、新しいDataFrameを返すメソッドだからです。

sorted_df = df.sort_values(by="年齢", ascending=True)

このコードの動作は以下のようになります。

  1. df.sort_values(by="年齢") により、新しいDataFrameが作られる

  2. そのDataFrameが sorted_df に格納される

この時、sort_values()元のDataFrameとは異なる新しいDataFrameを作成するため、
df[] のようにインデックスを指定する必要はありません。


5.4 データ抽出やソートの仕様

コード 結果 説明
df["年齢"] >= 25 True/False のSeries 条件判定のみ
df[df["年齢"] >= 25] 条件に合う行のDataFrame ブールインデックスでデータを抽出
df.sort_values(by="年齢") ソートされたDataFrame DataFrameを返すメソッド

ポイント

  • df[条件]条件に合う行を抽出するために必要

  • df["年齢"] >= 25 だけでは、データは変わらず、True/False の情報が得られるだけ

  • sort_values() はDataFrameを直接返すため、df[] を使わなくてよい

この仕様を知っておくと、フィルタリングや並び替えの動作が直感的に理解できるようになります

 

5.5 特徴量エンジニアリング

機械学習では、新しい特徴量を作成することが多いです。

# BMI(体格指数)の追加
# BMI = 体重(kg) / (身長(m) * 身長(m))
df["BMI"] = df["体重(kg)"] / ((df["身長(cm)"] / 100) ** 2)
print(df)
このように四則演算も出来ますので、データの加工を行う事も出来ます。

6. まとめ

本記事では、Pandasのデータフレームについて以下の内容を解説しました。

  • Pandasの基本概念
  • データフレームの作成方法(リスト・辞書)
  • データの基本操作(選択・フィルタリング・ソート)
  • 機械学習でよく使われる処理(欠損値処理・特徴量エンジニアリング)

機械学習を学ぶ際には、データの前処理が重要です。Pandasを活用し、データを適切に処理できるようになりましょう