Pandasで文字列を扱う 文字列を分割、長さを計測、検索[Python]

はじめに

Pythonのデータ分析ライブラリであるPandasは、文字列を効率的に扱うための便利な機能を提供しています。この記事では、Pandasを使用して文字列を分割したり、長さを計測したり、特定の文字列やパターンを検索したりする方法について解説します。

Pandasで文字列の長さを計算する方法:str.lenを用いた方法

PandasのSeriesオブジェクトには、文字列の長さを計算するためのstr.lenメソッドが用意されています。このメソッドを使用すると、各文字列の長さを簡単に計測することができます。

import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 30, 35, 40]}
df = pd.DataFrame(data)
df['Name_Length'] = df['Name'].str.len()
print(df)

上記のコードを実行すると、次のような結果が得られます:

      Name  Age  Name_Length
0    Alice   25            5
1      Bob   30            3
2  Charlie   35            7
3    David   40            5

上記の例では、’Name’列の各要素の長さを計算し、新しい’Name_Length’列としてDataFrameに追加しています。

Pandasで特定の区切り文字で文字列を分割する方法:str.splitを用いた方法

PandasのSeriesオブジェクトの文字列に対しては、str.splitメソッドを使用して特定の区切り文字で文字列を分割することができます。これは、文字列を複数の要素に分割して新しい列を作成する場合に便利です。

df['Name_Split'] = df['Name'].str.split('a')
print(df)

上記のコードを実行すると、次のような結果が得られます:

      Name  Age  Name_Length    Name_Split
0    Alice   25            5       [Alice]
1      Bob   30            3         [Bob]
2  Charlie   35            7    [Ch, rlie]
3    David   40            5      [D, vid]

次に、正規表現を用いた複雑なパターンでの文字列分割について説明します。

Pandasのstr.splitメソッドは正規表現を利用して複雑なパターンで文字列を分割することも可能です。正規表現を使用することで、特定のパターンに一致する文字列を見つけて分割することができます。

df['Name_Split'] = df['Name'].str.split('[aeiou]')
print(df)

上記のコードを実行すると、次のような結果が得られます:

      Name  Age  Name_Length  Name_Split
0    Alice   25            5    [Al, c,]
1      Bob   30            3      [B, b]
2  Charlie   35            7  [Ch, rl, ]
3    David   40            5   [D, v, d]

上記の例では、’Name’列の各要素を母音(a、e、i、o、u)を区切り文字として分割し、新しい’Name_Split’列としてDataFrameに追加しています。

Pandasで文字列内の特定の文字列やパターンを検索する方法

PandasのSeriesオブジェクトの文字列には、特定の文字列や正規表現パターンを検索するためのstr.containsメソッドがあります。このメソッドを使用すると、文字列内に特定の文字列やパターンが含まれているかどうかを判定することができます。

df['Name_Contains'] = df['Name'].str.contains('e')
print(df)

上記のコードを実行すると、次のような結果が得られます:

      Name  Age  Name_Length  Name_Split  Name_Contains
0    Alice   25            5   [Al, c, ]           True
1      Bob   30            3      [B, b]          False
2  Charlie   35            7  [Ch, rl, ]           True
3    David   40            5   [D, v, d]          False

上記の例では、’Name’列の各要素に文字列 ‘e’ が含まれているかどうかを判定し、新しい’Name_Contains’列としてDataFrameに追加しています。

Pandasで文字列から部分文字列を抽出する方法:str.sliceを用いた方法

PandasのSeriesオブジェクトの文字列には、指定した範囲の部分文字列を抽出するためのstr.sliceメソッドがあります。このメソッドを使用すると、文字列内の特定の位置から始まる部分文字列を取得することができます。

df['First_Two_Characters'] = df['Name'].str.slice(0, 2)
print(df)

上記のコードを実行すると、次のような結果が得られます:

      Name  Age  Name_Length  Name_Split  Name_Contains First_Two_Characters
0    Alice   25            5   [Al, c, ]           True                   Al
1      Bob   30            3      [B, b]          False                   Bo
2  Charlie   35            7  [Ch, rl, ]           True                   Ch
3    David   40            5   [D, v, d]          False                   Da

上記の例では、’Name’列の各要素から最初の2文字を抽出し、新しい’First_Two_Characters’列としてDataFrameに追加しています。

まとめ

この記事では、Pandasを使用して文字列を扱う方法について学びました。以下の要点をまとめます:

  • Pandasのstrメソッドを使用することで、文字列の長さを計算することができます。
  • str.splitメソッドを使用することで、特定の区切り文字で文字列を分割し、新しい列を作成することができます。
  • 正規表現を使用することで、複雑なパターンでの文字列分割が可能です。
  • str.containsメソッドを使用することで、文字列内に特定の文字列やパターンが含まれているかどうかを判定することができます。
  • str.sliceメソッドを使用することで、指定した範囲の部分文字列を抽出することができます。

Pandasのこれらの文字列操作の機能を使うことで、データフレーム内の文字列データを柔軟に処理することができます。データの前処理や特徴エンジニアリングにおいて、文字列の分割、長さの計測、特定の文字列やパターンの検索などは非常に役立つものです。