LoginSignup
88
114

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-11-03

はじめに

  • データ分析実務で頻繁に利用する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を指定

最後に

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
88
114