データの全貌を一目で把握!PandasのDataFrame.info()を使いこなそう

こんにちは!

データ分析の現場では、膨大なデータと向き合うことが日常ですよね。

そんな中、「まず何を確認すればいいの?」と思ったことはありませんか?

この記事では、データの概要を素早く理解するための心強い味方、

PandasDataFrame.info() について、わかりやすくご紹介します。

DataFrame.info()って何?

DataFrame.info() は、その名前の通り、データの「情報」を簡潔にまとめてくれます。

初めて扱うデータの概要をつかむのに適しています。
データセットの全体像を瞬時に把握するための機能です。

これを使うと、次のような質問にすぐ答えられます:

  • データの行数・列数は?
  • 各列にはどんな種類のデータが入っている?
  • 欠損値はどれくらいある?
  • このデータ、メモリを食いすぎてない?

つまり、DataFrame.info()「データの健康診断」をしてくれる先生のような存在なんです。


どうやって使うの?

使い方は簡単!たった1行のコードでOKです。

import pandas as pd

# サンプルデータフレーム
data = {
    'ID': [1, 2, 3, 4],
    'Name': ['Alice', 'Bob', 'Charlie', 'David'],
    'Age': [25, 30, 35, 40],
    'Salary': [50000, 60000, None, 80000],
}

df = pd.DataFrame(data)

# DataFrame.info()でデータ概要を確認
df.info()

これでデータセットの全体像がバッチリ見えます!

※補足:ここで説明しているDataFrame.info()は、
実際のコードではdf.info()として使用します。
DataFrameは一般的な型の名前で、
dfは実際のデータが入った変数名です。

出力結果を読み解こう

実際に df.info() を実行すると、こんな結果が得られます:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 4 columns):
 #   Column  Non-Null Count  Dtype
---  ------  --------------  -----
 0   ID      4 non-null      int64
 1   Name    4 non-null      object
 2   Age     4 non-null      int64
 3   Salary  3 non-null      float64
dtypes: float64(1), int64(2), object(1)
memory usage: 256.0 bytes

データフレーム全体の基本情報

この表では、データフレーム全体の基本的な構造情報を示しています。
データ型、行数、列数など、データフレームの概要を簡単に把握するための情報が含まれています。

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 4 columns):
コード説明
<class 'pandas.core.frame.DataFrame'>これは pandasDataFrame(表形式のデータ)であることを示します
RangeIndex: 4 entries, 0 to 3データフレームには 4 行あり、インデックスが 0 から 3 までです
Data columns (total 4 columns)このデータフレームには合計 4 つの列があります

列情報

以下の表では、データフレーム内の各列に関する詳細を示しています。
列名、欠損値の数、データ型について記載されており、データの質や構造を評価する際に役立ちます。

 #   Column  Non-Null Count  Dtype
---  ------  --------------  -----
 0   ID      4 non-null      int64
 1   Name    4 non-null      object
 2   Age     4 non-null      int64
 3   Salary  3 non-null      float64
コード説明
Column: ID, Name, Age, SalaryID, Name, Age, Salary という 4 つの列があります
Non-Null Count: 3 non-nullSalary 列には欠損値(NaN)が 1 つあり、非欠損値は 3 つです
Dtype: int64, object, float64各列のデータ型を示します(例: IDAgeint64, Nameobject, Salaryfloat64

全体データ型とメモリ使用量

この表では、データフレーム全体のデータ型の内訳と、メモリ使用量について記載しています。
これらの情報は、大規模データを効率的に扱う際に役立ちます。

dtypes: float64(1), int64(2), object(1)
memory usage: 256.0 bytes
コード説明
dtypes: float64(1), int64(2), object(1)データフレーム全体のデータ型の内訳を示します。float64 が 1 列、int64 が 2 列、object が 1 列あります。
memory usage: 256.0 bytesデータフレームが消費するメモリ量を示します。

以下が修正後の全体文章です。


DataFrame.info() でデータ概要を確認しない場合の問題点

DataFrame.info() を使わないと、例えば、次の問題が起こる恐れがあります。

「データ型の誤認識」による影響

  • 日付データが文字列型のまま扱われる:

    日付データが文字列型だと、ソートやフィルタリングが正しく機能しません。
    たとえば、2023年1月と2023年11月が辞書順に並び、意図しない結果を招きます。
  • 0始まりの数値が欠落する:

    JANコードや郵便番号など、
    0始まりの数値が数値型として読み込まれると、先頭の0が失われます(例: 012341234)。
  • 集計エラーが発生する:

    数値データが適切に扱われないと、以下の問題が生じます:
    • 文字列型で計算不可:

      数値データが文字列型の場合、加算や平均値の計算ができません。
    • 小数点以下の切り捨て:

      小数点を含むデータが整数型として扱われると、小数点以下が切り捨てられ、不正確な計算結果になります。

「欠損値の見落とし」による影響

欠損値を見落とすと、分析結果に影響します。

特に重要な列に欠損値が多い場合、その列を使った分析結果の信頼性が大きく低下します。

「メモリ使用量の見落とし」による影響

大規模データでは、メモリ不足で処理が遅れたり、クラッシュすることがあります。

効率的なデータ型(例: float64float32)への変換を見逃す可能性があります。

「データの全体像が不明」による影響

行数や列名を把握しないと、分析が非効率になります。

DataFrame.info()を活用する際の注意点

DataFrame.info()は便利なツールですが、以下のポイントに注意して使用してください。

非常に大きなデータセットの場合

行数が多い場合、一部の行しか表示されないことがあります。
このような場合は、以下のコードを使って行数の表示制限を変更できます。

pd.options.display.max_info_rows = 1000

データ型の確認

DataFrame.info()でデータ型が意図と異なる場合は、astype() を使って適切な型に変換しましょう。
例えば、数値型に変換するには次のように記述します:

df['Salary'] = df['Salary'].astype(float)

まとめ:DataFrame.info()を習慣にしよう!

データ分析の世界では、時間との戦いが日常です。

DataFrame.info() を使えば、データの概要を数秒で把握し、次のステップに進むための土台を作ることができます。

次回、データに向き合うときは、ぜひ info() を第一歩として活用してみてください。

これが、データ分析を成功に導く小さな第一歩となるはずです!