Edited at

【厳選】Python実務データ分析でよく使う手法(前処理編)


はじめに


  • データ分析実務で頻繁に利用するPythonのデータ分析手法まとめです

  • ここでいう「実務」とは機械学習やソリューション開発ではなく、アドホックなデータ分析や機械学習の適用に向けた検証(いわゆるPoC)を指します

  • 領域によっては頻繁に使う手法は異なるかと思うので、自分と近しい領域のデータ分析をしている方の参考になればと思います

  • 今回は前処理でよく使うコードをまとめましたが、今後、データ集計編とデータ可視化編もまとめてみようと思います



前処理


Datetime型への変換:pd.to_datetime()


  • pd.read_csvでデータを読み込むと日付がobject型となるので、datetime型へ変換する必要がある

  • 日付データを入れると基本的に自動で年・月・日等を判断して変換してくれる

  • 特殊なフォーマットの際はformat='%Y年%m月%d日 %H時%M分'といった形で指定する(なぜかmとdだけ小文字)

data['Month'] = pd.to_datetime(data['Month'])

# pd.to_datetime(data['Month'], format='%Y-%m')


数値データのカテゴリ化:pd.cut()


  • 数値データからカテゴリデータ化に変換する(例:年齢を年代に変換)

  • 数値データを入れて、bins=np.arange(0, 100, 10)でカテゴリのインターバルを指定する

  • デフォルトだと右端がビンに含まれて、左端がビンに含まれないので、right=Falseとすると反転する

  • 特に年齢を年代に変換する際は、right=Falseとしてないと、60才は50代になってしまうので注意が必要

data['n_interval'] = pd.cut(data['n'], bins=np.arange(0, 1000, 10), right=False)


定義した関数のデータフレームへの適用:Dataframe.apply()


  • 定義した関数をデータフレームに適用して、データを変換する

  • def~で処理用の関数を定義した後、Dataframe.apply(定義した関数)で処理する

def trans(x):

if x >= 300:
return True
elif x < 300:
return False

data['n_tf'] = data['n'].apply(trans)


Bool型をint型(1/0)、float型(1.0/0.0)へ変換


  • 掛け算をするだけで変換されます

  • int型に変換する場合は 1、float型へ変換する場合は1.0

data['n_tf_int'] = data['n_tf']*1

data['n_tf_float'] = data['n_tf']* 1.0


フォルダ内のCSVデータを一括読込:globとpd.read_csv()


  • 前処理かは微妙ですが、データ一式を複数csvファイルで受領した際に、一括して読み込む際の方法

  • globモジュールを利用し、csvファイルを正規表現で指定し、pd.read_csvで読み込んだ後、pd.concatで結合

import glob

files = glob.glob('*.csv')#フォルダ内のCSVファイルを取得
print(files)

['airline4.csv', 'airline3.csv', 'airline2.csv', 'airline.csv']

# リストで取得したファイル名をfor文で一つづつ読込み、縦方向へ結合していく

df = pd.DataFrame()
for file in files:
t = pd.read_csv(file)
df = pd.concat([df, t], axis=0)#縦方向への結合なのでaxis=0を指定



最後に


  • 実際のビジネスでデータ分析をす際によく使う手法をまとめてみました

  • 今後、頻出するコードがあれば随時アップデートします

  • 冒頭にも書いた通り、今後、集計編とデータ可視化編もまとめてみようと思います

  • 他にもよく使う手法あればフィードバック頂けますと幸いです