▶ この他にもデータ分析前の前処理の記事があります。
Python初心者向け:rank( )メソッドを基本から解説
Python初心者でもわかるようにrank( )メソッドを基本から説明していきます。データ分析の過程で順位付けをするシーンで活躍するのがrank( )メソッド。rank( )は並び替えず順位を返すメソッドです。順位を列項目として持たせることもできます。
Python基礎:住所データから都道府県を抽出する
Python初心者でもわかるように、住所データから都道府県を抽出する方法を基本から解説します。取得したデータはいつもきれいなデータとは限りません。住所データも都道府県が分離されているとは限りません。都道府県のみを取得する方法を順を追って説明します。
はじめに
前回は、値の変換の簡単な例を扱いました。今回は、条件に応じて代入する値を変えることを考えます。よく扱う処理なので、この機会にしっかり押さえておきましょう。やり方は主に次の2つの方法があります。
- ブールインデックス参照を使う
- where()メソッドを使う
データの準備
条件に応じて代入する値を変える例を紹介できるように、簡単なデータサンプルを用意しましょう。
import pandas as pd
df=pd.DataFrame({'A':['a','b','c','d','e','f','g','h'],
'B':[-2,3,4,-5,-2,1,0,3]})
df
ブールインデックス参照を使う
ここでは、’B’列の値が負の時に10の値を代入することを考えましょう。’B’列が負の値になるのは、次のようにすると抽出できます。
df.loc[df['B']<0]
ただし、値を変えたいのは’B’列なので、次のようにする必要があります。
df.loc[df['B']<0,'B']=10
df
データフレーム全体に条件を適用したい場合は、where()メソッドかmask()メソッドを使う必要があります。
where()メソッドを使う
今度は、where()メソッドを使う例です。こちらも簡単なコードです。’A’列が’f’であるものを、100に書き換えることを考えましょう。次のようにやります。
df['A'].where(df['A']!='f',100)
where()は、第一引数にbool値の要素を持つシリーズや配列を指定し、第二引数に置き換える値を指定します。すると、第一引数でbool値がTrueのものはそのまま、Falseのものは第二引数で指定した値に置き換わります。
※第二引数を指定しない場合は、Falseの要素はNaNになります。
また、上記の記述のままではdfは書き換わりません。dfを書き換えるには、オプションでinplaceを指定するか、再起代入をおこないます。
# オプションでinplaceを指定する
df['A'].where(df['A']!='f',100, inplace=True)
df
# 再起代入をする
df['A']=df['A'].where(df['A']!='f',100)
df
まとめ
いかがでしたでしょうか?そんなに難しくないですよね。簡単なことですが、知らないとできないことなので、是非、押さえておいてください。whereで置き換えるときに、第一引数が「False」のときに第二引数で置き換わるので間違えないようにしましょう。
コメント