[Python]Pandasを使ってデータから数字だけを抽出する方法

データ分析やデータ処理の際、Pandasは非常に便利なツールです。しかし、与えられたデータの中から数字だけを抽出したいことがあります。本記事では、Pandasを使用してデータから数字だけを抽出する方法について詳しく説明します。

Pandasを使ってデータを読み込む方法

Pandasを使ってデータから数字を抽出する前に、まずデータを読み込む方法を紹介します。通常、CSVファイルやExcelファイルからデータを読み込むことがあります。以下のコードを使用して、データを読み込むことができます。

import pandas as pd
# CSVファイルからデータを読み込む例
data = pd.read_csv('data.csv')
# Excelファイルからデータを読み込む例
data = pd.read_excel('data.xlsx')

データを読み込んだら、次に数字だけを抽出する方法を見ていきましょう。

数字だけを含む列を抽出する方法

データフレームから数字だけを含む列を抽出するには、select_dtypes()メソッドを使用します。以下のコードは、数値列のみを含む新しいデータフレームを作成する例です。

# 数値列のみを含むデータフレームを作成
numeric_data = data.select_dtypes(include=['number'])

このようにして、元のデータから数値列のみを含む新しいデータフレームを作成できます。

文字列中の数字だけを抽出する方法

データの中には、文字列に数字が含まれている場合があります。これらの数字を抽出するには、正規表現を使用する方法が便利です。以下のコードは、文字列から数字の部分を抽出する例です。

import re
# 文字列から数字を抽出する関数
def numeric_conversion(text):
    numbers = re.findall(r'\d+', text)
    return ''.join(numbers)
# データフレームの特定の列から数字を抽出
data['text_column'] = data['text_column'].apply(numeric_conversion)

このコードでは、numeric_conversion()関数を定義し、re.findall()メソッドを使用して文字列から数字を抽出します。そして、apply()メソッドを使用して特定の列にこの関数を適用します。

正規表現を用いて複雑なパターンの数字を抽出する方法

正規表現を使用すると、複雑なパターンの数字を抽出することができます。たとえば、日付や通貨の金額を含む文字列から数字を抽出したい場合、以下のようなコードを使用できます。

# 日付や通貨の金額を含む文字列から数字を抽出する正規表現パターン
pattern = r'(\d{1,2}/\d{1,2}/\d{4})|(\$[\d,]+(\.\d{2})?)'
# データフレームの特定の列から正規表現パターンにマッチする部分を抽出
data1 = data['text_column'].str.extract(pattern, expand=False)

このコードでは、str.extract()メソッドを使用して正規表現パターンにマッチする部分を抽出します。正規表現パターンは、抽出したいパターンに合わせて調整できます。

抽出した数字を新しい列として追加する方法

抽出した数字を新しい列としてデータフレームに追加することもできます。以下のコードは、抽出した数字を新しい列として追加する例です。

# 数字を新しい列として追加
data['extracted_numbers'] = data['text_column'].apply(numeric_conversion)

このコードでは、numeric_conversion()関数を使用して数字を抽出し、新しい列として追加しています。

まとめ

本記事では、Pandasを使用してデータから数字だけを抽出する方法について説明しました。データ分析やデータ処理の際に、数字を抽出することは非常に重要です。Pandasの便利なメソッドや正規表現を活用して、データから必要な数字を効率的に抽出することができます。