データの全貌を一目で把握!PandasのDataFrame.info()を使いこなそう
こんにちは!
データ分析の現場では、膨大なデータと向き合うことが日常ですよね。
そんな中、「まず何を確認すればいいの?」と思ったことはありませんか?
この記事では、データの概要を素早く理解するための心強い味方、Pandas
の DataFrame.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'> | これは pandas の DataFrame (表形式のデータ)であることを示します |
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, Salary | ID , Name , Age , Salary という 4 つの列があります |
Non-Null Count: 3 non-null | Salary 列には欠損値(NaN )が 1 つあり、非欠損値は 3 つです |
Dtype: int64, object, float64 | 各列のデータ型を示します(例: ID と Age は int64 , Name は object , Salary は float64 ) |
全体データ型とメモリ使用量
この表では、データフレーム全体のデータ型の内訳と、メモリ使用量について記載しています。
これらの情報は、大規模データを効率的に扱う際に役立ちます。
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が失われます(例:01234
→1234
)。 - 集計エラーが発生する:
数値データが適切に扱われないと、以下の問題が生じます:- 文字列型で計算不可:
数値データが文字列型の場合、加算や平均値の計算ができません。 - 小数点以下の切り捨て:
小数点を含むデータが整数型として扱われると、小数点以下が切り捨てられ、不正確な計算結果になります。
- 文字列型で計算不可:
「欠損値の見落とし」による影響
欠損値を見落とすと、分析結果に影響します。
特に重要な列に欠損値が多い場合、その列を使った分析結果の信頼性が大きく低下します。
「メモリ使用量の見落とし」による影響
大規模データでは、メモリ不足で処理が遅れたり、クラッシュすることがあります。
効率的なデータ型(例: float64
→ float32
)への変換を見逃す可能性があります。
「データの全体像が不明」による影響
行数や列名を把握しないと、分析が非効率になります。
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()
を第一歩として活用してみてください。
これが、データ分析を成功に導く小さな第一歩となるはずです!