Python のデータ分析ライブラリ「Pandas」を使う上で、まず最初に覚えるべき基本中の基本となる関数が pandas head()
です。DataFrame という表形式のデータ構造を扱う Pandas では、データの全体像を掴むことが非常に重要になります。しかし、データが膨大になるとすべてを表示することはできません。
そこで活躍するのが head()
関数です!この関数を使うことで、DataFrame の先頭部分を手軽に確認できます。これは、データが正しく読み込まれているか、どのようなカラム(列)があるか、データの最初の数行がどのような値を持っているかなどを素早く把握するための第一歩となります。
データ分析の最初のステップは、データを「見る」ことから始まります。head()
関数は、その「見る」作業を効率的に行うための強力なツールなのです。この記事では、head()
関数の基本的な使い方から、ちょっとした応用テクニックまで、初心者の方でもすぐに使えるように詳しく解説していきます。
▶️ pandas headの公式ドキュメントも参考にしてください:
pandas.dataframe head Documentation
PandasのインポートとPandas head()の準備
import pandas as pd
DataFrameの作成とPandas head()の基本
data = {
"名前": ["太郎", "花子", "次郎", "美香", "茜", "隆", "", "健一", "恵子", "翔葵"],
"年齢": [23, 29, 35, 42, 18, 33, 27, 24, 31, 30],
"職業": ["エンジニア", "デザイナー", "教師", "医師", "学生", "看護師", "プログラマー", "販売員", "弁護士", "研究者"],
"年収(円)": [4500000, 5500000, 4900000, 7300000, 0, 4000000, 6000000, 3200000, 8000000, 5800000],
"居住地": ["東京", "大阪", "名古屋", "札幌", "福岡", "東京", "神戸", "仙台", "横浜", "千葉"],
"勤続年数": [2, 4, 10, 15, 1, 5, 3, 1, 12, 8]
}
df = pd.DataFrame(data)
df
名前 | 年齢 | 職業 | 年収(円) | 居住地 | 勤続年数 | |
---|---|---|---|---|---|---|
0 | 太郎 | 23 | エンジニア | 4500000 | 東京 | 2 |
1 | 花子 | 29 | デザイナー | 5500000 | 大阪 | 4 |
2 | 次郎 | 35 | 教師 | 4900000 | 名古屋 | 10 |
3 | 美香 | 42 | 医師 | 7300000 | 札幌 | 15 |
4 | 茜 | 18 | 学生 | 0 | 福岡 | 1 |
5 | 隆 | 33 | 看護師 | 4000000 | 東京 | 5 |
6 | 27 | プログラマー | 6000000 | 神戸 | 3 | |
7 | 健一 | 24 | 販売員 | 3200000 | 仙台 | 1 |
8 | 恵子 | 31 | 弁護士 | 8000000 | 横浜 | 12 |
9 | 翔葵 | 30 | 研究者 | 5800000 | 千葉 | 8 |
【失敗談】初めてDataFrameを作成したとき、列数とデータ数が一致せず、ValueErrorで悩みました。そのため、辞書形式で列毎に定義し、各リストの長さを統一するようにしています。
Pandas head( )関数の使い方を詳しく解説
head( )で先頭5行を表示
df.head()
名前 | 年齢 | 職業 | 年収(円) | 居住地 | 勤続年数 | |
---|---|---|---|---|---|---|
0 | 太郎 | 23 | エンジニア | 4500000 | 東京 | 2 |
1 | 花子 | 29 | デザイナー | 5500000 | 大阪 | 4 |
2 | 次郎 | 35 | 教師 | 4900000 | 名古屋 | 10 |
3 | 美香 | 42 | 医師 | 7300000 | 札幌 | 15 |
4 | 茜 | 18 | 学生 | 0 | 福岡 | 1 |
head(n)で任意の行数を表示
df.head(3) # 先頭3行
名前 | 年齢 | 職業 | 年収(円) | 居住地 | 勤続年数 | |
---|---|---|---|---|---|---|
0 | 太郎 | 23 | エンジニア | 4500000 | 東京 | 2 |
1 | 花子 | 29 | デザイナー | 5500000 | 大阪 | 4 |
2 | 次郎 | 35 | 教師 | 4900000 | 名古屋 | 10 |
head(0)でカラム名のみを表示
df.head(0)
名前 | 年齢 | 職業 | 年収(円) | 居住地 | 勤続年数 |
---|
補足:df.head(0) を使うと、データは表示されませんが、列名(カラム名)だけを確認したいときに便利です。データの構造を把握したり、列の順番をチェックする際に役立ちます。
【体験談】最初にhead(0)を使ったとき、「何も出力されない=エラーかな?」と勘違いしてしまい、無駄に調べ回ってしまいました。しかし実際には「カラム名だけを見るテクニック」として有効な方法だと後から知り、以後は必ず最初にhead(0)で列名をチェックしています。
print()とhead()の組み合せ
実行すると、以下のような出力になって行と列の対応関係が見づらいので、Google ColabやJupyter Notebookでは表形式できれいに表示できる「df.head()」で出力するのがおすすめです。
print(df.head(3))
head() の結果を変数として保存
first_rows = df.head(3)
【実用アドバイス】このようにheadで得た結果を変数として保存しておくと、次のステップ(たとえばグラフ描画やCSV保存)にスムーズにつながります。
(補足)データの末尾を確認する方法:tail()
df.tail() # 末尾5行を表示
名前 | 年齢 | 職業 | 年収(円) | 居住地 | 勤続年数 | |
---|---|---|---|---|---|---|
5 | 隆 | 33 | 看護師 | 4000000 | 東京 | 5 |
6 | 27 | プログラマー | 6000000 | 神戸 | 3 | |
7 | 健一 | 24 | 販売員 | 3200000 | 仙台 | 1 |
8 | 恵子 | 31 | 弁護士 | 8000000 | 横浜 | 12 |
9 | 翔葵 | 30 | 研究者 | 5800000 | 千葉 | 8 |
df.tail(2) # 末尾2行を表示
名前 | 年齢 | 職業 | 年収(円) | 居住地 | 勤続年数 | |
---|---|---|---|---|---|---|
8 | 恵子 | 31 | 弁護士 | 8000000 | 横浜 | 12 |
9 | 翔葵 | 30 | 研究者 | 5800000 | 千葉 | 8 |
【補足】tail()は「データの末尾に異常値や欠損があるか」を確認する際に非常に有効です。私自身、過去に末尾だけNaNが入っていたCSVをそのまま分析に使ってしまい、統計値が狂ってしまった経験があります。以後は必ずtail()で末尾も確認しています。
▶️ tailの公式ドキュメントも参考にしてください:
pandas DataFrame tail Documentation
▶️ Pandas tailの公式ドキュメントも参考にしてください:
pandas.DataFrame.tail Documentation
まとめ:Pandas head()とtail()の使い方
構文 | 説明 |
---|---|
df.head() |
先頭5行を表示 |
df.head(n) |
先頭n行を表示 |
df.head(0) |
カラム名のみ表示(df.tail(0) も同様) |
df.tail() |
末尾5行を表示 |
df.tail(n) |
末尾n行を表示 |
このように、head()は大きなデータの中身をざっと確認するのにとても便利です。次回はデータの統計量など全体像をつかむことができるinfo()やdescribe()を解説していきます!
コメント