どうもニコイチです。前回の記事で、特徴量とはなにかに触れました。今回は、実際にPythonを使ってデータを解析する際に、describe
関数を用いて特徴量を確認します。量的なデータはそのまま利用できますが、質的なデータは一般的なdescribe
の記述だけでは全てを確認できません。
そこで、特定の引数として、describe(include=["O"])
の使い方を解説します。注意: ここでのO
(オー)は、数字の0
(ゼロ)とは異なりますのでご注意ください。
Pythonでデータ分析を始めよう!初心者向けガイド | いきかちガジェットゲームLab:ガジェット・ゲーム・DX
どうもニコイチです。今回はdemoデータを使って実際に予測モデルを作れるようになることを目的とした、シリーズをご紹介します。Pyhonってなに?どうやってつかうの?と戸惑って…
目次
データの概要と解析
全体的なデータの概要
Column | Count | Unique | Top Value | Frequency | Mean | Std | Min | 25% | 50% | 75% | Max |
---|---|---|---|---|---|---|---|---|---|---|---|
id | 999 | – | – | – | 500 | 288 | 1 | 250 | 500 | 750 | 999 |
age | 999 | – | – | – | 54.3 | 21 | 18 | 36 | 55 | 73 | 90 |
balance | 999 | – | – | – | 4421 | 3185 | -980 | 1776 | 4284 | 7132 | 9978 |
job | 999 | 10 | services | 116 | – | – | – | – | – | – | – |
質的データの詳細情報
Column | Count | Unique | Top Value | Frequency |
job | 999 | 10 | services | 116 |
marital | 999 | 3 | single | 366 |
default | 999 | 2 | no | 952 |
housing | 999 | 2 | no | 958 |
loan | 999 | 2 | no | 947 |
contact | 999 | 3 | unknown | 348 |
month | 999 | 12 | nov | 100 |
poutcome | 999 | 4 | success | 262 |
解説
describe(include="all")
は、数字型データと質的データを一緒に概要を出力します。- 質的データのみを解析したい場合は、
describe(include=["O"])
を使用します。
ヒント
- 引数の
"O"
は大文字のオーで、0ゼロとは異なります。このミスに注意して使用しましょう。
value_counts関数の使い方
次に、データの中でどのような値が多いか、具体的に調べる方法を紹介します。これにはvalue_counts
関数を使用します。この関数は、特定の列内で各値が何回出現しているかを簡単に確認するための便利なツールです。
実例
以下は、データのjob
列を対象にvalue_counts
関数を使用した結果です。
import pandas as pd
# CSVデータを読み込み
file_path = '定期貯金契約に関するデモデータ.csv'
data = pd.read_csv(file_path)
# 各値の出現回数をカウント
job_counts = data['job'].value_counts()
print(job_counts)
出力結果:
services 116
blue-collar 109
technician 107
management 100
retired 91
admin. 90
unemployed 70
self-employed 65
entrepreneur 62
housemaid 57
解説
value_counts
は、その列内で各値の頻度を自動的に計算してくれます。- 結果は出現回数の多い順に並びます。
- この結果を使って、データ分布の偏りや代表的な値を把握できます。
よくあるつまずきポイント
- KeyError: 指定した列名が間違っているとエラーが出ます。
- 対策:
data.columns
で列名を確認しましょう。
- 対策:
- 欠損値の扱い: 欠損値が含まれている場合、デフォルトでは無視されます。
- 対策:欠損値も含めたい場合は、
dropna=False
を引数に追加します。
job_counts = data['job'].value_counts(dropna=False)
- 対策:欠損値も含めたい場合は、
- 複数列を対象にしたい場合:
value_counts
は1列のみを対象にします。- 対策:各列に対してループを回して集計します。
実践例
次に、marital
(婚姻状況)列で同様の分析を行います。
marital_counts = data['marital'].value_counts()
print(marital_counts)
出力結果:
single 366
married 357
divorced 276
このように、婚姻状況の内訳も簡単に確認できます。
まとめ
value_counts
関数は、データ分布を理解するのに役立つ重要なツールです。- 列ごとの値の出現頻度を確認することで、データの特徴や偏りを把握できます。
- 初心者でも使いやすい関数ですが、列名の指定ミスや欠損値の扱いに注意してください。
次回は、これらの分布を可視化する方法について解説します。グラフを用いることで、さらにデータの理解を深めましょう。
コメント