このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Python入門】データ解析を容易にするPandasライブラリ

データ解析を容易にするPandasライブラリ

 CSVファイルから表形式のデータを読み込み、柔軟に抽出・加工したい場面は、機械学習やデータ解析の現場で頻繁に生じます。Pandasライブラリは、こうした課題に対して非常に強力な機能を提供してくれるツールです。特に「データフレーム(DataFrame)」と呼ばれる構造を使えば、列名を指定してデータを取得したり、複数の型(文字列・数値など)が混在する表を整然と管理できます。ここでは、Pandasを使ってファイルを読み込み、データフレームを操作するための基本を紹介します。

プログラムのダウンロード

 「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。

1.Pandasのインストールとインポート

 Pandasは標準ライブラリではないため、CPython環境やAnacondaなどの仮想環境では、インストールが必要です。

環境コマンド備考
CPython(通常のPython)pip install pandaspip実行時に管理者権限が必要な場合もあります。
Anaconda / Minicondaconda install -y pandas追加パッケージが必要な場合も一括で導入できます。

 Pandasを使う際は、PythonスクリプトやJupyterLabのセルで次のようにインポートしてください。pdは慣習的によく使われる別名です。

import pandas
import pandas as pd

何もエラーが出ずにインポートできれば、Pandasの準備は完了です。

2.CSVファイルのサンプルデータ:grades2.csv

 今回は、grades2.csv というファイル名で以下のような内容を用意し、最初の行に列名(ヘッダ)を定義しています。ここでは物理(Physics)、生物(Biology)、化学(Chemistry)の3科目のスコアが並んでいる想定です。本来は200行程度のデータを想定しますが、例としては5行分だけを示します。

Physics,Biology,Chemistry
65,70,85
72,63,90
81,59,74
93,88,66
56,78,82

注意: ファイルパスに応じて保存場所を指定し、JupyterLabのカレントディレクトリを合わせるか、あるいは絶対パスをread_csv()に渡してください。

3.CSVファイルをデータフレームに読み込む

 Pandasではread_csv()関数を使って、CSVファイルからDataFrameを作成します。文字コードがUTF-8以外の場合は、encodingオプションを適宜変更してください。

import pandas as pd

grades = pd.read_csv("grades2.csv", encoding="utf_8")
grades

実行結果

  • pd.read_csv("grades2.csv") : CSVファイルを読み込んで、DataFrameオブジェクトを生成します。
  • encoding="utf_8" : UTF-8形式のファイルを読み込む際に指定します(必要に応じて変更可能)。

 実行すると、行番号(0から始まる)と、上部に列名(Physics, Biology, Chemistry)が表示されたテーブル形式で出力されます。データが大きい場合でも、Pandasは最初と最後の数行だけを表示し、行数・列数などを併記してくれるため、全体像を把握しやすくなります。

4.DataFrameの内容を一部確認する方法

 大量のデータがある場合、全行を表示すると画面が埋まってしまいます。Pandasのhead()メソッドやtail()メソッドを使うと、指定した数だけ先頭・末尾の行を抜き出して確認できます。

# 先頭3行だけを表示
print("=== 先頭3行 ===")
print(grades.head(3))

# 末尾2行だけを表示
print("\n=== 末尾2行 ===")
print(grades.tail(2))

実行結果

=== 先頭3行 ===
   Physics  Biology  Chemistry
0       65       70         85
1       72       63         90
2       81       59         74

=== 末尾2行 ===
   Physics  Biology  Chemistry
3       93       88         66
4       56       78         82
  • DataFrame.head(n) : 先頭からn行分を返す(nを省略すると5行)。
  • DataFrame.tail(n) : 末尾からn行分を返す(nを省略すると5行)。

 また、列名の一覧や行列数も一目で確認できるため、データの概要を素早く把握できます。例えば、以下のコードで列名や形状を取得できます。

print("列名:", grades.columns)   # 列名のIndexオブジェクト
print("形状:", grades.shape)     # (行数, 列数)

実行結果

列名: Index(['Physics', 'Biology', 'Chemistry'], dtype='object')
形状: (5, 3)

5.サンプルプログラム:CSVの読み込みとデータ表示

 以下は、JupyterLabのセルで実行可能なサンプルプログラムです。ファイル名や列名、出力結果などを自由にカスタマイズできます。今回の例では、読み込んだDataFrameを表示しつつ、一部行だけを抜き出してみています。

import pandas as pd

def display_dataframe_info(csv_file="grades2.csv"):
    """
    指定されたCSVファイルを読み込み、
    先頭行・末尾行・列情報などを表示するサンプル関数。
    """
    # CSVをDataFrameとして読み込み
    df = pd.read_csv(csv_file, encoding="utf_8")
    
    print("=== ファイル内容をDataFrameに格納しました ===")
    print("読み込みファイル名:", csv_file)
    print("列名の一覧:", list(df.columns))
    print("形状(行数, 列数):", df.shape)
    print()
    
    # 先頭行と末尾行を確認
    print("=== 先頭3行 ===")
    print(df.head(3))
    
    print("\n=== 末尾3行 ===")
    print(df.tail(3))
    
    # 全体の表示はサイズが大きい場合のみ
    # print("\n=== 全体表示 ===")
    # print(df)
    
    return df

# 実行例 (grades2.csvを事前に用意してください)
data = display_dataframe_info("grades2.csv")

実行結果

=== ファイル内容をDataFrameに格納しました ===
読み込みファイル名: grades2.csv
列名の一覧: ['Physics', 'Biology', 'Chemistry']
形状(行数, 列数): (5, 3)

=== 先頭3行 ===
   Physics  Biology  Chemistry
0       65       70         85
1       72       63         90
2       81       59         74

=== 末尾3行 ===
   Physics  Biology  Chemistry
2       81       59         74
3       93       88         66
4       56       78         82

プログラムの解説

  1. df = pd.read_csv(csv_file, encoding="utf_8")
    CSVファイルを読み込み、DataFrameオブジェクトdfを生成。
  2. df.columns
    列名(Indexオブジェクト)を取得。list(df.columns)でリスト化も可能。
  3. df.shape
    (行数, 列数)のタプルを返す。
  4. df.head(3) / df.tail(3)
    最初の3行、最後の3行を表示。中身の概観を手短に知るのに便利。

まとめ

 Pandasライブラリを活用すれば、数値データだけでなく文字列データを含む表形式のCSVファイルを簡単に読み込み、必要な部分だけ抽出したり、データ全体を俯瞰したりすることができます。行列インデックスは0から始まり、列名はCSVのヘッダとして定義されたものがそのまま使われるため、Pythonコードから読み解きやすい形式でデータを扱えます。
 Pandasを用いることで集計やグルーピング、欠損値の補完、さらには複数ファイルの結合など、より高度な操作も行えるようになります。機械学習やビッグデータ解析の前処理段階でも欠かせないライブラリですので、基本的な読み込み・表示・抽出の流れをしっかり習得しておきましょう。