【pandas初心者向け】KaggleのSpeed Datingデータセットを読み込んで、ざっくり前処理してみる
Kaggleからダウンロードしたデータに、欠損値があるか・どんな形式か・そもそもどんなカラムがあるかを確認するたびに、いちいちpandasの使い方を調べていて非効率だと感じたので、最低限のワークフローを自分用にまとめておきます。
ほぼ「pandasの使い方まとめ」ですが、今後の作業効率化のために残します。
🧱 前提
- 筆者はPython初心者です
- 実行環境は Jupyter Notebook
- 使用するデータセットは、Kaggleに公開されている「Speed Dating Experiment」です
📥 データの読み込み
pandas を使って、CSV形式のデータをDataFrameとして読み込みます。
import pandas as pd
df = pd.read_csv('Speed Dating Data.csv', encoding='latin1')
※ このデータは 'latin1' でエンコードされているため、utf-8 では読み込めません。
🔍 ファイルのエンコーディングを推測したいとき
以下のように chardet を使うと、エンコーディングを自動推測できます。
import chardet
with open('Speed Dating Data.csv', 'rb') as f:
result = chardet.detect(f.read())
print(f"推定エンコーディング: {result['encoding']}")
print(f"信頼度: {result['confidence']}")
✅ データ読み込み確認
読み込めているかを簡単に確認します。
df.head()
※ Qiita上では出力結果は割愛しますが、Jupyterなら表形式で確認できます。
📊 データの概要確認
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 8378 entries, 0 to 8377
Columns: 195 entries, iid to amb5_3
dtypes: float64(174), int64(13), object(8)
memory usage: 12.5+ MB
🛠 表示設定の変更(pandas)
列が省略させたくない場合、以下の設定で表示制限を解除できます。
# 表示する行数の上限をなくす(Noneを設定)
pd.set_option('display.max_rows', None)
# 表示する列数の上限をなくす(Noneを設定)
pd.set_option('display.max_columns', None)
# 列名の省略表示を無効にする
pd.set_option('display.max_colwidth', None)
# 表示幅の制限を解除
pd.set_option('display.width', None)
# シーケンス項目の制限を解除
pd.set_option('display.max_seq_items', None)
📋 カラム情報の確認
🔢 カラム名を一覧で表示
print("全てのカラム名(1行ずつ):")
for i, col in enumerate(df.columns, 1):
print(f"{i:3d}. {col}")
print(f"\n総カラム数: {len(df.columns)}")
📈 数値カラムの要約統計量
df.describe()
→ カラムごとの平均・標準偏差・最大最小などが確認できます。
🔤 カテゴリ情報も含めた要約
df.describe(include='all')
→ オブジェクト型(カテゴリカルデータ)も含めた要約が得られます。
⚠️ 各カラムの欠損値の数を確認
df.isnull().sum()
一部抜粋:
iid 0
id 1
gender 0
positin1 1846
...
🧽 欠損値の補完例(中央値)
今回は使いませんが、補完処理の例です:
median_age = df['age'].median()
df['age'].fillna(median_age, inplace=True)
🎯 特定のカラムだけ抽出したいとき
df[['wave','attr1_1', 'sinc1_1', 'intel1_1', 'fun1_1', 'amb1_1', 'shar1_1']]
→ 必要なカラムだけを取り出して使うときに便利です。
✅ まとめ
- pandasでのデータ確認ルーティンを固めておくと、毎回ググる時間が減る
-
describe()やinfo()、isnull().sum()あたりは頻出 - エンコーディングや欠損値処理もセットで覚えておくと便利!
今後、さらに可視化や前処理のパターンもまとめていく予定です。