[pandas] 先頭または末尾からDataFrameを数行抜き出すなら、head関数とtail関数が便利な件

はじめに

今回は、初歩的な内容ですが、headメソッドとtailメソッドについて掘り下げてみます。

いきなり結論

サクッと動作確認

コードを変更しても実行できるので、色々と試して見てください!

コード全体

import pandas as pd

df = pd.read_csv('achievement.csv')

# 上から3行だけ抜き出して表示
print(df.head(3))

print('\n==============================================\n')

# 下から7行だけ抜き出して表示
print(df.tail(3))

print('\n==============================================\n')

# 4行目から最終行までを抜き出して表示
print(df.tail(-3))

解説

挙動については、以下の通りです。

  • headメソッドは上から、tailメソッドは下から、それぞれ数行のデータをDataFrameから抜き出す。
  • 非破壊的関数で、元のDataFrameは変更されない。
  • 引数に渡した数値の行数だけ、DataFrameからデータを抜き出す。
  • 引数に何も渡さなければ、デフォルトとして5行のデータを抜き出す。
  • 引数に0を渡すと、カラムだけ存在する空のDataFrameとして抜き出された状態になる。
  • 引数にマイナスの数値を渡すと、以下のようなややこしい挙動となる。
    • head(-1)とした場合は、1行目〜最後から1行目までのデータを抜き出す。
    • head(-2)とした場合は、1行目〜最後から2行目までのデータを抜き出す。
    • tail(-3)とした場合は、最終行〜最初から3行目までのデータを抜き出す。(順番は元のまま)

マイナスの数値を渡した場合の挙動がややこしいですが、先頭から末尾からという条件は変わらないんですね。

上の動作確認で色々と試してみてください!

さいごに

今回は、かなり初歩的なことでしたが、掘り下げてみると面白い挙動が確認できたりするもんですね!

また本記事についてツッコミあれば、Twitter等でご連絡お待ちしております!

最後まで読んで頂いて、ありがとうございました。

PON3

PON3

5年くらい前に、30代完全未経験から独学でWeb系のソフトウェアエンジニアになった人。 現在はフリーランスエンジニアとして、大阪の自宅からフルリモートで東京の自社開発企業のお仕事をしている。 主戦場はバックエンドで、Go言語でのAPI開発や、Pythonでのデータ分析が武器。 とは言いつつ、フロントエンドをSPAを実装したり、IaCでクラウドインフラの設計構築したり、スクラム開発でプロジェクト運営したりするなんでも屋。 いつも、ググってきては誰かが書いてくれた記事を見て開発していたが、もらってばかりでなく世の中に返すこともしたいと思い、技術ブログをはじめる。 妻と2歳になる娘の3人暮らし。 何かご用件がある方は、TwitterのDMからどうぞ。