Pythonでデータ分析を行う際、まず最初に行うべき作業は「データの中身を正しく把握すること」です。
Pandasライブラリを使用してCSVファイルやデータベースからデータを読み込んだ後、そのデータが意図した通りに格納されているか、欠損値はないか、データ型は適切かを確認するために、データの先頭や末尾を表示する操作は欠かせません。
本記事では、Pandasで最も頻繁に使われるhead()関数とtail()関数の基本的な使い方から、実務で役立つ応用的な表示設定のカスタマイズ方法までを詳しく解説します。
Pandasでデータの先頭を確認する:head()関数の使い方
データセットを読み込んだ直後、まず実行するのがhead()関数です。
この関数は、DataFrame(データフレーム)の最初の数行を抽出して表示するために使用されます。
基本的な使い方とデフォルトの動作
head()関数を引数なしで呼び出すと、デフォルトで先頭の5行が表示されます。
これにより、各列のヘッダー名や、データの格納形式を素早く確認できます。
import pandas as pd
# サンプルデータの作成
data = {
'ID': range(1, 11),
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve', 'Frank', 'Grace', 'Hannah', 'Ivan', 'Jack'],
'Score': [85, 92, 78, 88, 95, 70, 82, 89, 91, 84]
}
df = pd.DataFrame(data)
# 先頭5行を表示
print(df.head())
ID Name Score
0 1 Alice 85
1 2 Bob 92
2 3 Charlie 78
3 4 David 88
4 5 Eve 95
表示する行数を指定する方法
5行以外のデータを確認したい場合は、head(n)のように引数に行数を指定します。
例えば、10行表示させたい場合はdf.head(10)と記述します。
# 先頭3行だけを表示
print(df.head(3))
ID Name Score
0 1 Alice 85
1 2 Bob 92
2 3 Charlie 78
実務においては、数千行から数百万行に及ぶ大規模データを扱うことが多いため、全データを表示させるとメモリや処理時間に負荷がかかります。
head()で必要な分だけを抜き出すことは、効率的な開発において非常に重要です。
Pandasでデータの末尾を確認する:tail()関数の使い方
データの先頭だけでなく、データの末尾を確認することも同様に重要です。
ここで活躍するのがtail()関数です。
データの末尾を表示するメリット
データの末尾を確認することで、データの総数が正しいか、あるいはファイル読み込み時に最下部でエラーが発生していないか(例えば、不完全な行が混じっていないか)をチェックできます。
tail()もhead()と同様に、引数を指定しない場合は末尾の5行が表示されます。
# 末尾5行を表示
print(df.tail())
ID Name Score
5 6 Frank 70
6 7 Grace 82
7 8 Hannah 89
8 9 Ivan 91
9 10 Jack 84
tail()での行数指定
もちろんtail(n)という形式で、末尾から取得する行数を制御可能です。
# 末尾2行だけを表示
print(df.tail(2))
ID Name Score
8 9 Ivan 91
9 10 Jack 84
データセットの最後に合計値や注釈などの「データではない行」が含まれている場合、tail()を使うことでそれらを素早く発見し、クリーニングの対象にすべきかどうかを判断できます。
特定の列に絞って先頭・末尾を表示する
DataFrame全体ではなく、特定の列(Series)だけの先頭や末尾を確認したい場合もあります。
この場合は、列を指定した後にメソッドをチェーンさせます。
# 'Name'列の先頭3行だけを表示
print(df['Name'].head(3))
0 Alice
1 Bob
2 Charlie
Name: Name, dtype: object
複数の列を選択した状態でhead()を使用することも可能です。
# 'ID'と'Score'の列に絞って先頭を表示
print(df[['ID', 'Score']].head(3))
大規模データでの「省略設定」を解除する方法
Pandasでは、非常に多くの行や列を持つDataFrameをそのまま表示しようとすると、視認性を高めるために途中のデータが自動的に省略されます。
しかし、デバッグ中など「どうしても全ての行(または列)を確認したい」という場面も少なくありません。
このような場合には、Pandasのオプション設定を変更するpd.set_option()を使用します。
表示行数の上限を変更する(max_rows)
デフォルトでは、一定数以上の行があると中間の行が「…」で省略されます。
これを無制限、あるいは任意の数値に変更するにはdisplay.max_rowsを設定します。
# 最大表示行数を100行に設定
pd.set_option('display.max_rows', 100)
# 省略せずに全て表示したい場合(Noneを指定)
pd.set_option('display.max_rows', None)
注意点として、数万行あるデータをNone(無制限)で表示しようとすると、ブラウザやエディタの動作が非常に重くなる可能性があります。 必要な時だけ一時的に設定を変更するのが推奨されます。
表示列数の上限を変更する(max_columns)
列数が多いデータセット(例えば100カラム以上あるテーブル)を扱う場合、左右の列が省略されて表示されます。
これを防ぐにはdisplay.max_columnsを使用します。
# 最大表示列数を無制限に設定
pd.set_option('display.max_columns', None)
設定のリセット方法
変更した設定をデフォルトの状態に戻したい場合は、pd.reset_option()を利用します。
# 行数表示の設定を元に戻す
pd.reset_option('display.max_rows')
# 全ての設定をデフォルトに戻す場合
pd.reset_option('all')
実務で役立つ!表示のカスタマイズテクニック
データの表示を工夫することで、分析の効率をさらに高めることができます。
数値の表示形式を整える
浮動小数点数(float)の桁数が多すぎると、head()で確認した際に画面が数字で埋め尽くされてしまいます。
小数点以下の表示桁数を固定するには、以下の設定が便利です。
# 小数点以下2桁まで表示するように設定
pd.options.display.float_format = '{:.2f}'.format
インラインで一時的に設定を適用する(with構文)
特定のコードブロック内だけで設定を有効にし、外側には影響を与えたくない場合は、with構文を使用するのがスマートです。
with pd.option_context('display.max_rows', 10, 'display.max_columns', 5):
# この中だけ設定が適用される
print(df.head(20))
この方法なら、スクリプト全体のグローバルな設定を汚すことなく、必要な箇所だけで詳細なデータ確認が行えます。
head/tail以外でデータを抜き出す便利な手法
先頭と末尾以外を確認したい場合に便利な関数も併せて紹介します。
ランダムにデータを抽出する:sample()
head()やtail()だけでは、データが特定の順序(例えば日付順)で並んでいる場合、データ全体の傾向を見誤るリスクがあります。
その際はsample()関数を使い、ランダムにデータを抽出するのが有効です。
# ランダムに3行抽出
print(df.sample(n=3))
特定の範囲を抽出する:iloc
データの「10行目から20行目まで」といった具合に、インデックス番号で範囲を指定したい場合はilocが便利です。
# 5行目から10行目(未満)までを表示
print(df.iloc[5:10])
Pandasの表示設定に関する比較表
よく使われる表示設定オプションを以下の表にまとめました。
| 設定項目 | 内容 | 使用例 |
|---|---|---|
| display.max_rows | 最大表示行数 | pd.set\_option('display.max\_rows', 50) |
| display.max_columns | 最大表示列数 | pd.set\_option('display.max\_columns', None) |
| display.width | 表示幅(1行の文字数) | pd.set\_option('display.width', 1000) |
| display.precision | 小数点以下の表示精度 | pd.set\_option('display.precision', 3) |
| display.max_colwidth | 列内の最大表示文字数 | pd.set\_option('display.max\_colwidth', 50) |
これらの設定を組み合わせることで、分析環境(Jupyter Notebook, VS Code, ターミナルなど)に合わせて最適な表示を実現できます。
まとめ
Pandasにおいて、データの先頭を表示するhead()と末尾を表示するtail()は、データ分析の第一歩を支える非常に重要なツールです。
- head(n):データの構造や型、欠損値の有無を先頭から確認する。
- tail(n):データの総数や終端の整合性を確認する。
- pd.set_option:省略表示を解除し、大規模データの詳細を把握する。
- sample():先頭・末尾の偏りを避け、全体からランダムにデータを確認する。
まずはこれらの基本操作をマスターし、データの内容を正確に把握した上で、次の分析ステップ(データクリーニングや統計計算、可視化)に進む習慣をつけましょう。
効率的なデータ確認は、バグの早期発見や分析精度の向上に直結します。
