Python
 Computer >> コンピューター >  >> プログラミング >> Python

PandasのDataFrameから大文字を含む単語のみを抽出する方法

Pythonでデータを扱う際、DataFrame内に含まれる「大文字を含む単語」だけを取り出したいケースがあります。本記事では、正規表現(regex)を使ってPandasのDataFrameから大文字を含む単語のみを抽出する方法を解説します。

必要なライブラリのインポート

正規表現を扱うためのreモジュールと、データ分析用のpandasをインポートします。

import re
import pandas as pd

DataFrameの作成

まずはサンプルデータとして、大文字・小文字が混在した文字列を含むDataFrameを作成します。

data = [['computer', 'mobile phone', 'ELECTRONICS', 'electronics'],
        ['KEYBOARD', 'charger', 'SMARTTV', 'camera']]

dataFrame = pd.DataFrame(data)

このDataFrameには「computer」のようなすべて小文字の単語と、「ELECTRONICS」「KEYBOARD」のように大文字を含む単語が混在しています。

大文字を含む単語の抽出方法

大文字の抽出には、正規表現パターン r'\w*[A-Z]\w*' を使用します。このパターンは「1つ以上の大文字(A〜Z)を含む英数字の文字列」にマッチします。

列ごとに要素を走査し、re.match() の結果がTrueになる要素だけを出力します。

for i in range(dataFrame.shape[1]):
   for ele in dataFrame[i]:
      if bool(re.match(r'\w*[A-Z]\w*', str(ele))):
         print(ele)

完全なコード例

以下に、実行可能な完全なコードを示します。

import re
import pandas as pd

# DataFrameを作成
data = [['computer', 'mobile phone', 'ELECTRONICS', 'electronics'],
        ['KEYBOARD', 'charger', 'SMARTTV', 'camera']]

dataFrame = pd.DataFrame(data)

# DataFrameを表示
print("Dataframe...\n", dataFrame)

print("\n大文字を含む単語のみを表示...\n")

# 大文字を含む単語を抽出
for i in range(dataFrame.shape[1]):
   for ele in dataFrame[i]:
      if bool(re.match(r'\w*[A-Z]\w*', str(ele))):
         print(ele)

実行結果

上記のコードを実行すると、次のような出力が得られます。

Dataframe...
          0             1             2             3
0  computer  mobile phone  ELECTRONICS  electronics
1  KEYBOARD       charger      SMARTTV       camera

大文字を含む単語のみを表示...

KEYBOARD
ELECTRONICS
SMARTTV

コードのポイント

  • dataFrame.shape[1] で列数を取得し、各列を順番に処理しています。
  • re.match(r'\w*[A-Z]\w*', str(ele)) により、要素内に少なくとも1つの大文字が含まれているかどうかを判定します。
  • str(ele) で要素を文字列に変換しているため、数値など他の型のデータが混在していても安全に処理できます。
  • すべて小文字の「computer」「mobile phone」「electronics」「charger」「camera」は除外され、大文字を含む「KEYBOARD」「ELECTRONICS」「SMARTTV」のみが出力されます。

このように、正規表現とPythonのループ処理を組み合わせることで、DataFrameから特定のパターンを持つ文字列を簡単にフィルタリングできます。条件を変更すれば、小文字のみの抽出や特定の文字列を含む行の検索などにも応用可能です。

  1. Python Pandas:read_csvのskipinitialspaceでCSV読み込み時の先頭スペースをスキップする方法

    PandasでCSVの先頭スペースをスキップするには?PandasでDataFrameを読み込む際、データの先頭にある余分な空白(初期スペース)を取り除きたい場合は、read_csv()メソッドのskipinitialspaceパラメータを使用します。このパラメータをTrueに設定すると、区切り文字(カンマなど)の直後にある空白が自動的にスキップされます。CSVファイルの中には、カンマの後に不要なスペースが混ざっているケースが少なくありません。そのまま読み込むと、列名や値の先頭に空白が残り、条件検索やグループ化の際にデータが正しく一致しない原因となります。skipinitialspace=Tr

  2. MatplotlibでPandasデータフレームのプロットポイントに注釈(ラベル)を付ける方法

    MatplotlibでPandasデータフレームのデータポイントに注釈を付けるには、以下の手順を実行します。手順図のサイズを設定し、サブプロット間および周囲のパディングを調整します。x、y、text の3つの列を持つ、2次元でサイズ変更可能な表形式データ(Pandasデータフレーム)を作成します。plot() メソッドを使用して、x 列と y 列のデータポイントをプロットします。pd.concat() を使って、Pandasオブジェクトを特定の軸に沿って連結します。iterrows() でPandasオブジェクトを反復処理します。text() メソッドを使って、各プロットされたポイントにテキス