Python
numpy
matplotlib
pandas
seaborn

【厳選】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を指定

最後に

  • 実際のビジネスでデータ分析をす際によく使う手法をまとめてみました
  • 今後、頻出するコードがあれば随時アップデートします
  • 冒頭にも書いた通り、今後、集計編とデータ可視化編もまとめてみようと思います
  • 他にもよく使う手法あればフィードバック頂けますと幸いです