Pythonのデータ分析ライブラリ「Pandas」では、DataFrameという表形式のデータ構造が用意されています。この記事では、DataFrame
の作成方法と、データの確認に便利なhead()
関数の使い方を紹介します。
▶️ headの公式ドキュメントも参考にしてください:
pandas DataFrame head Documentation
Pandasのインポート
import pandas as pd
DataFrameの作成
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)
【失敗談】初めてDataFrameを作成したとき、列数とデータ数が一致せず、ValueErrorで悩みました。そのため、辞書形式で列毎に定義し、各リストの長さを統一するようにしています。
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 |
head()の使い方
先頭5行を表示
df.head()
名前 | 年齢 | 職業 | 年収(円) | 居住地 | 勤続年数 | |
---|---|---|---|---|---|---|
0 | 太郎 | 23 | エンジニア | 4500000 | 東京 | 2 |
1 | 花子 | 29 | デザイナー | 5500000 | 大阪 | 4 |
2 | 次郎 | 35 | 教師 | 4900000 | 名古屋 | 10 |
3 | 美香 | 42 | 医師 | 7300000 | 札幌 | 15 |
4 | 健一 | 18 | 学生 | 0 | 福岡 | 1 |
任意の行数を表示
df.head(3) # 先頭3行
名前 | 年齢 | 職業 | 年収(円) | 居住地 | 勤続年数 | |
---|---|---|---|---|---|---|
0 | 太郎 | 23 | エンジニア | 4500000 | 東京 | 2 |
1 | 花子 | 29 | デザイナー | 5500000 | 大阪 | 4 |
2 | 次郎 | 35 | 教師 | 4900000 | 名古屋 | 10 |
カラム名のみ確認
df.head(0)
名前 | 年齢 | 職業 | 年収(円) | 居住地 | 勤続年数 |
---|
補足:df.head(0)
を使うと、データは表示されませんが、列名(カラム名)だけを確認したいときに便利です。データの構造を把握したり、列の順番をチェックする際に役立ちます。
【体験談】最初にhead(0)を使ったとき、「何も出力されない=エラーかな?」と勘違いしてしまい、無駄に調べ回ってしまいました。しかし実際には「カラム名だけを見るテクニック」として有効な方法だと後から知り、以後は必ず最初にhead(0)で列名をチェックしています。
(補足)print()との組み合せ
print(df.head(3))
実行すると、以下のような出力になって行と列の対応関係が見づらいので、Google ColabやJupyter Notebookでは表形式できれいに表示できる「df.head()」で出力するのがおすすめです。
名前 年齢 職業 年収(円) 居住地 勤続年数
0 太郎 23 エンジニア 4500000 東京 2
1 花子 29 デザイナー 5500000 大阪 4
2 次郎 35 教師 4900000 名古屋 10
変数として保存
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
まとめ
構文 | 説明 |
---|---|
df.head() | 先頭5行を表示 |
df.head(n) | 先頭n行を表示 |
df.head(0) | カラム名のみ表示(df.tail(0)も同様) |
df.tail() | 末尾5行を表示 |
df.tail(n) | 末尾n行を表示 |
このように、head()
は大きなデータの中身をざっと確認するのにとても便利です。次回はデータの統計量など全体像をつかむことができるinfo()
やdescribe()
を解説していきます!
コメント