🤖

pandas

3 min read

前提

  • kaggleのhouse priceを使って説明

pandas

import

import pandas as pd

read_csv

  • csvを読み込む
train_df = pd.read_csv('train.csv')
test_df = pd.read_csv('test.csv')

head, tail

  • データ表示
train_df.head(10)
train_df.tail(10)

カラム名表示

train_df.columns

◯◯が□□以上を抽出する。

  • dfの[]の中に条件を入れる。

条件Xを満たすデータを抽出

train_df[X]

ex.

train_df[train_df['SalePrice'] > 200000]

条件XかつYを満たすデータを抽出

train_df[(X) & (Y)]

ex.

train_df[(train_df['SalePrice'] > 200000) & (train_df['LotArea'] > 10000)]

条件XまたはYを満たすデータを抽出

train_df[(X) | (Y)]

ex.

train_df[(train_df['SalePrice'] > 200000) | (train_df['LotArea'] > 10000)]

条件not Xを満たすデータを抽出

train_df[~(X)]

ex.

train_df[~(train_df['SalePrice'] > 200000)]

null数を取得

  • 下記だとカラム数が多い場合全て取得できない
train_df.isnull().sum()
  • 下記だとnull数取得可能。
for col in train_df.columns:
    print(train_df[[col]].isnull().sum())
    print('*****')
  • 一番いいのはこれか
train_df.info()

Nanを埋める

  • 数字で埋める
train_df['LotFrontage'] = train_df[['LotFrontage']].fillna(0)
  • 文字列で埋める
train_df['Alley'] = train_df[['Alley']].fillna('null')

任意の列を取得

train_df[[col1, col2, col3]]

ex.

train_df[['LotArea', 'Street', 'SalePrice']]

任意の行を取得

ex.

train_df[1:5]

任意の列削除

df2 = df.drop([col1, col2, col3], axis=1)

ex.

int_col = ['LotFrontage', 'Alley', 'MasVnrArea', 
           'MasVnrType', 'BsmtQual', 'BsmtExposure', 
           'BsmtFinType1', 'BsmtFinType2', 'Electrical', 
           'FireplaceQu', 'GarageType', 'GarageYrBlt', 
           'GarageFinish', 'GarageQual', 'GarageCond', 
           'PoolQC', 'Fence', 'MiscFeature']
train_df2 = train_df.drop(int_col, axis=1)

各カラムを見る

train_df.groupby(col_name).size()

ex.

train_df.groupby('Alley').size()

列を追加

  • 値を追加。全て1のcolという名前の列ができる。
df[col] = 1 

ex.

train_df2['ABC'] = 1
  • 列ごと追加。
df[col2] = df[col1] * 2

ex.

train_df['ABC2'] = train_df['ABC'] * 2

pandasの参照

  • 以下のコードで直観的には train_dftrain_df2で差が出るはずだが、最初の行であたいではなく参照を渡しているため元の train_dfも書き換えてしまう。・
train_df2 = train_df
train_df2['DEF'] = 1
train_df

統計量

平均

train_df[['SalePrice']].mean()

中央値

train_df[['SalePrice']].median()

最頻値

  • 文字列でも使用可能
train_df[['MasVnrType']].mode()

NaNを埋める時は以下を使用

train_df['MasVnrType'] = train_df[['MasVnrType']].fillna(train_df[['MasVnrType']].mode().iloc[0])

Discussion

ログインするとコメントできます