【Python】Pandasで正規表現を使ったデータ抽出の方法を徹底解説!

今回はPythonのPandasを使って正規表現を使ったデータ抽出について解説します。

正規表現の基本とその利用価値

正規表現とは、文字列のパターンを表現するための方法です。パターンに合致する文字列を検索・置換する際に利用されます。

正規表現を用いることで、複雑なパターンの文字列を簡単に検索・置換することができます。また、テキスト処理において頻繁に使用されるため、正規表現の理解は必須と言えます。

Pandasでデータフレームを読み込む方法

Pandasは、データの加工や分析を行うためのライブラリであり、表形式のデータであるデータフレームを扱うことができます。

まずは、Pandasでデータフレームを読み込む方法を解説します。以下のように、read_csv関数を使うことでCSVファイルを読み込むことができます。

import pandas as pd

df = pd.read_csv('sample.csv')
print(df.head())

このように、read_csv関数を用いることで、CSVファイルをデータフレームとして読み込むことができます。

正規表現を使ったデータ抽出の方法

Pandasで正規表現を使ったデータ抽出を行うには、strメソッドを用いる必要があります。

以下のように、str.containsメソッドを使うことで、特定の文字列を含む行を抽出することができます。

import pandas as pd

df = pd.read_csv('sample.csv')
result = df[df['column_name'].str.contains('pattern')]
print(result)

このように、str.containsメソッドを用いることで、特定のパターンを含む行を抽出することができます。

よく使われる正規表現のパターンとその応用

ここでは、よく使われる正規表現のパターンとその応用について解説します。

1. ^と$

^と$は、それぞれ行の先頭と末尾を表します。例えば、以下のようなデータがあった場合、

samples
sample1
1sample

^sで始まる行を抽出する場合、以下のような正規表現を使います。

import pandas as pd
df = pd.read_csv('sample.csv')
result = df[df['column_name'].str.contains('^s')]
print(result)

この場合、以下の行が抽出されます。

samples
sample1

一方、sで終わる行を抽出する場合は、以下のような正規表現を使います。

import pandas as pd
df = pd.read_csv('sample.csv')
result = df[df['column_name'].str.contains("s$")]

この場合、以下の行が抽出されます。

samples

2. []

[]は、指定した文字列のいずれかにマッチすることを表します。例えば、以下のようなデータがあった場合、

apple
banana
orange
grape

[aei]で始まる行を抽出する場合、以下のような正規表現を使います。

import pandas as pd

df = pd.read_csv('sample.csv')
result = df[df['column_name'].str.contains('^[aei]')]
print(result)

この場合、以下の行が抽出されます。

apple

一方、[ao]で終わる行を抽出する場合は、以下のような正規表現を使います。

import pandas as pd

df = pd.read_csv('sample.csv')
result = df[df['column_name'].str.contains("[ao]$")]

この場合、以下の行が抽出されます。

banana

3. *

*は、0回以上の繰り返しを表します。例えば、以下のようなデータがあった場合、

apple
app
ap

apで始まり、任意の文字列が続く行を抽出する場合、以下のような正規表現を使います。

import pandas as pd

df = pd.read_csv('sample.csv')
result = df[df['column_name'].str.contains('^ap.*')]
print(result)

この場合、以下の行が抽出されます。

apple
app
ap

このように、*を使うことで、任意の文字列を含む行を抽出することができます。

実践的な例での正規表現を使ったデータ抽出

ここでは、実践的な例で正規表現を使ったデータ抽出について解説します。

例として、以下のようなデータがあったとします。

name,age,gender
John Smith,25,Male
Mary Johnson,30,Female
Bob Brown,40,Male

このデータから、女性の行を抽出する場合、以下のような正規表現を使います。

import pandas as pd

df = pd.read_csv('sample.csv')
result = df[df['gender'].str.contains('Female')]
print(result)

この場合、以下の行が抽出されます。

name,age,gender
Mary Johnson,30,Female

まとめ

以上、PythonのPandasで正規表現を使ったデータ抽出について解説しました。

正規表現は、テキスト処理において非常に重要な概念であり、Pandasを使う際にもよく利用されます。ぜひ、正規表現を使ったデータ抽出をマスターして、より効率的なデータ処理を行ってください。