目次
Pythonでデータを置換する
replace()を使うことでデータの中身を変更することができます
Excelなどでは「置換」と呼ばれる作業を、関数を使って実施することができます
そして置換を実施するパターンとしては…
- 文字を変更する 「テニス部」→「ソフトテニス部」
- 誤字を修正する 「テニスぶ」→「テニス部」
- 不要な文字を消す 「テニス部」→「テニス」
置換方法の方針
Pythonの置換には大きく分けて2種類あります
少し分かりにくいので図を使って説明します
- 文字全部を置換する方法
- 一部の文字だけ変える方法
基本的には「全ての文字」を変更する設定になっていますが、
regexというパラメータを使うことで「一部の文字」の置換ができます(後述します)
事前準備
「Pandas」というデータ解析を実施できるライブラリをインポートします
import pandas as pd
※サンプルデータ:学校のテストの点数
student.head()
replaceの使い方
置換を実施するにはまず、変数の後にreplace()を記述します
そして「置換前」→「置換後」となるように項目を書いていきます
※今回は「テニス」を「ソフトテニス」に置換してみます
student.replace('テニス','ソフトテニス')
また特定の列を指定して置換を実施することもできます
その場合はリスト型で結果で出ます
student['部活'].replace('テニス','ソフトテニス')
複数の値を置換する方法
複数の項目に対して一度に置換をするには「辞書型」「リスト型」のどちらかを利用します
辞書型の場合はこちら
student.replace({'テニス':'ソフトテニス','野球':'軟式野球'})
「置換前」→「置換後」の間に:コロンを入れて、項目の区切りは,カンマを記載します
一方で「リスト型」で指定する方法はこちら
student.replace(['テニス','野球'],['ソフトテニス','軟式野球'])
「置換前のリスト」を記述し,カンマで区切り「置換後のリスト」を書きましょう
辞書型とリスト型では記述方法が異なるため注意です
最後のリストを単一にすることで、全て同じ内容に置換されます
テニスと野球を「軟式の部活」とします
student.replace(['テニス','野球'],'軟式の部活')
パラメータ
おすすめ度を判定:★★★=必須|★★☆=推奨|★☆☆=任意
★★☆:regex(一部の文字を置換)
regexを「True」で指定することで一部の文字だけ置換することができます
「置換前」に指定した文字が含まれる場合、「置換後」の文字に変わるような設定になります
※正確には正規表現の利用となりますが、細かい説明は割愛します
student.replace('部','Bu',regex=True)
少しおかしな設定ですが「部」を「Bu」と変換してみます
★☆☆:inplace(上書き)
student.replace('テニス','ソフトテニス', inplace=True)
inplaceを「True」で設定することで、変換に対して置換後を内容を上書きすることができます
変数に対して上書きしても同じ内容になりますが、inplaceの方が簡単に書けます
※下記では同じ設定になります
student.replace('テニス','ソフトテニス')
student = student.replace('テニス','ソフトテニス')
まとめ
今回はreplace()で置換する方法をご紹介してきました
全ての文字列を置換するのももちろん、一部の文字だけを置換することもできます
データは始めからきれいにそろっているわけではないため
正しく成形するためにreplace()を使ってみてください