初心者向けPython!簡単なデータ抽出の12のステップ

初心者が学ぶPythonでのデータ抽出方法Python
この記事は約23分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

今日、データ駆動型の意思決定が組織の競争力を左右する時代になっています。

そのため、データを扱うスキルはますます重要となり、プログラミング言語の一つであるPythonが注目を浴びています。

初心者でも扱いやすいPythonを使い、データを自由自在に抽出しましょう。

本記事では、Pythonを用いたデータ抽出方法をステップバイステップで詳しく解説します。

一つ一つのステップにはサンプルコードも付いているので、すぐにでも始められます!

●Pythonとは

Pythonは、汎用性の高いプログラミング言語の一つで、そのシンプルで読みやすいコードは初心者でも理解しやすいところが特徴です。

○Pythonの特性

Pythonは高レベルな抽象化をサポートするため、プログラムのコードが短く、可読性が高いです。

また、Pythonは多様なプラットフォームで利用でき、オブジェクト指向プログラミング、手続き型プログラミング、関数型プログラミングをサポートしています。

○Pythonの利用シーン

Pythonは、ウェブ開発、データ分析、人工知能(AI)の開発、ゲーム開発など、様々な分野で使用されています。

特にデータ分析やAI開発においては、その豊富なライブラリやフレームワークが提供する高度な計算機能を活用することができます。

●Pythonでデータを抽出する基本

Pythonでデータを抽出するには、まずPythonのデータ型について理解することが大切です。

○データ型の理解

Pythonには、整数型(int)、浮動小数点型(float)、文字列型(str)、リスト型(list)、タプル型(tuple)、辞書型(dict)などの基本的なデータ型が存在します。

これらのデータ型を理解し、それぞれがどのような場面で使われるかを把握することで、データ抽出の幅が広がります。

○変数とデータの操作

Pythonでは、データを扱うために変数を使用します。

変数はデータを一時的に格納するためのもので、変数名を用いてデータを操作することができます。

変数の操作には、代入、計算、比較などがあります。

●Pythonでのデータ抽出の具体的なステップ

ここからは、Pythonでデータを抽出する具体的なステップとそれぞれのサンプルコードについて見ていきましょう。

○サンプルコード1:リストからのデータ抽出

このコードでは、Pythonの基本的なデータ型であるリストから特定のデータを抽出する方法を示します。

下記の例では、整数のリストから偶数のみを抽出して新しいリストを作成します。

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = [num for num in numbers if num % 2 == 0]
print(even_numbers)

上記のコードでは、リスト内包表記というPython特有の構文を使用しています。

リスト内包表記は、新しいリストを生成する際に条件を指定したり、リストの要素に対して何らかの操作を行ったりすることができます。

実行結果は、[2, 4, 6, 8, 10]となります。

これは、元のリストnumbersから偶数だけが新しいリストeven_numbersに抽出されていることを表しています。

○サンプルコード2:ファイルからのデータ抽出

Pythonはファイルからデータを抽出するための強力なツールを提供しています。

次のサンプルコードでは、テキストファイルからデータを読み取り、その内容を表示する方法を紹介します。

この例では、Pythonの組み込み関数であるopenを使用して、テキストファイルを開き、その後のread関数を使用してファイルの内容を読み取ります。

# ファイルを開く
file = open('sample.txt', 'r')

# ファイルの内容を読み取る
content = file.read()

# 内容を表示する
print(content)

# ファイルを閉じる
file.close()

このコードを実行すると、sample.txtという名前のファイルから全ての内容を読み取り、それをコンソールに表示します。

open関数の第二引数には、ファイルをどのモードで開くかを示す文字列が指定されます。

ここでは'r'を指定しているので、ファイルは読み取り専用モードで開かれます。

最後に必ずclose関数を呼び出すことでファイルを閉じています。

これにより、他のプログラムが同じファイルにアクセスできるようになります。

○サンプルコード3:Webページからのデータ抽出

Webページからデータを抽出することは、Pythonプログラミングにおいて非常に一般的なタスクです。

このタスクは通常、ウェブスクレイピングと呼ばれ、Pythonのrequestsライブラリを使用して行われます。

次のサンプルコードは、指定したURLのWebページを取得し、その内容を表示する方法を表しています。

# requestsライブラリをインポートする
import requests

# Webページを取得する
response = requests.get('https://www.example.com')

# レスポンスのテキストを表示する
print(response.text)

このコードでは、まずrequestsライブラリをインポートします。次に、get関数を使って特定のURLのWebページを取得します。

この関数はHTTPレスポンスを返し、そのテキスト属性にはページのHTMLが含まれています。

このHTMLをコンソールに表示するためにprint関数を使用しています。

注意点として、WebスクレイピングはWebサイトの利用規約によっては禁止されている場合があります。

また、大量のリクエストを短時間で送信すると、サーバーに負荷をかけてしまい、IPアドレスがブロックされる可能性もあります。

したがって、適切な間隔を持ってリクエストを送信し、必要に応じてウェブサイトのロボット.txtファイルを確認することを推奨します。

○サンプルコード4:データベースからのデータ抽出

Pythonでデータベースからデータを抽出するための基本的な手順を紹介します。

Pythonの標準ライブラリであるsqlite3を使用して、SQLiteデータベースからデータを抽出するコードを表します。

import sqlite3

# データベースに接続
conn = sqlite3.connect('example.db')

# カーソルオブジェクトを生成
cur = conn.cursor()

# SQLクエリを実行
cur.execute("SELECT * FROM table_name")

# 抽出したデータを取得
rows = cur.fetchall()

for row in rows:
    print(row)

# 接続を閉じる
conn.close()

このコードでは、まずsqlite3ライブラリをインポートし、’example.db’という名前のデータベースに接続します。

次に、カーソルオブジェクトを生成します。

カーソルオブジェクトはデータベース内でクエリを実行するための「カーソル」のようなもので、これを使ってSQL文を実行します。

この例では、”SELECT * FROM table_name”というSQL文を実行しています。

これはtable_nameというテーブルから全てのデータを選択するSQL文です。

fetchallメソッドを使用して、抽出した全てのデータを取得します。

最後に、データベース接続を閉じます。これは、操作が終わった後のクリーンアップ作業として非常に重要です。

このコードを実行すると、指定したデータベースの指定したテーブルから全てのデータが抽出され、その結果がコンソールに出力されます。

●データ抽出に役立つPythonのライブラリ

Pythonはデータ抽出のための強力なツールであり、様々なライブラリを活用することでデータ抽出を容易に行うことができます。

ここではデータ抽出に特に役立つPythonのライブラリをいくつか紹介します。

①Pandas

Pandasはデータ分析と操作のための強力なライブラリで、CSVやExcelファイル、SQLデータベースから簡単にデータを読み込むことができます。

さらに、データフレームと呼ばれるデータ構造を提供しており、これを使うことでデータの抽出、フィルタリング、変換が容易になります。

②Numpy

Numpyは数値データの処理に特化したライブラリで、大量の数値データを効率的に操作するための機能を提供しています。

特に、多次元配列を操作するための機能が充実しており、画像データや音声データの抽出に有用です。

③BeautifulSoup

BeautifulSoupはHTMLやXMLの解析を容易にするライブラリで、ウェブスクレイピングの際によく用いられます。

ウェブページから特定のタグや属性を持つデータを抽出する際に便利です。

④sqlite3

sqlite3はPythonの標準ライブラリで、SQLiteデータベースの操作を容易にします。

SQL文を用いてデータの抽出、挿入、更新、削除を行うことができます。

これらのライブラリはPythonでデータ抽出を行う際に頻繁に使用されます。

それぞれの特性を理解し、適切なライブラリを選択することで効率的にデータ抽出を行うことが可能です。

○サンプルコード5:pandasを使ったデータ抽出

Pythonのpandasライブラリを用いて、CSVファイルからデータを抽出するサンプルコードを見てみましょう。

このコードではpandasを使ってCSVファイルを読み込み、特定の列を抽出しています。

import pandas as pd

# CSVファイルの読み込み
df = pd.read_csv('sample.csv')

# 'age'列の抽出
age_data = df['age']

print(age_data)

このコードを実行すると、’sample.csv’から’age’列のデータが抽出され、その結果が表示されます。

こうした手法は、大量のデータを扱う際に特定の属性を持つデータを効率よく抽出するために活用されます。

○サンプルコード6:numpyを使ったデータ抽出

次にnumpyを用いたデータ抽出の例を見てみましょう。

このコードではnumpy配列から特定の条件を満たすデータを抽出しています。

import numpy as np

# numpy配列の作成
data = np.array([1, 2, 3, 4, 5])

# 3より大きいデータの抽出
filtered_data = data[data > 3]

print(filtered_data)

このコードを実行すると、配列中の3より大きい値を持つデータが抽出され、その結果が表示されます。

numpyを用いることで、条件に合致するデータの抽出を簡単かつ高速に行うことが可能です。

○サンプルコード7:BeautifulSoupを使ったWebスクレイピング

次に、BeautifulSoupを用いたWebスクレイピングの例を見てみましょう。

このコードではHTMLから特定のタグを持つデータを抽出しています。

from bs4 import BeautifulSoup
import requests

# webページの取得
url = 'https://www.example.com'
response = requests.get(url)

# BeautifulSoupオブジェクトの作成
soup = BeautifulSoup(response.text, 'html.parser')

# 'h1'タグの抽出
h1_tags = soup.find_all('h1')

for tag in h1_tags:
    print(tag.text)

このコードを実行すると、指定したURLのwebページから’h1’タグを持つデータが抽出され、そのテキストが表示されます。

BeautifulSoupはHTMLやXMLの解析を容易にするライブラリで、ウェブスクレイピングの際に非常に有用です。

○サンプルコード8:sqlite3を使ったデータベースの操作

最後に、sqlite3を使ったデータベースからのデータ抽出の例を見てみましょう。

このコードではsqlite3を使ってデータベースに接続し、SQL文を用いてデータを抽出しています。

import sqlite3

# データベースに接続
conn = sqlite3.connect('sample.db')

# カーソルの作成
cur = conn.cursor()

# SQL文でデータの抽出
cur.execute('SELECT * FROM users')

# 抽出したデータの取得
rows = cur.fetchall()

for row in rows:
    print(row)

# 接続のクローズ
conn.close()

このコードを実行すると、’sample.db’というデータベースからusersテーブルの全てのデータが抽出され、その結果が表示されます。

sqlite3ライブラリを用いることで、Pythonから直接データベースにアクセスし、データの抽出や操作を行うことが可能です。

●Pythonでのデータ抽出の応用例

Pythonのデータ抽出の応用例について説明します。

Pythonはその柔軟性と強力なライブラリ群により、様々なデータ抽出の応用例に使用することができます。

ここではその中から特によく使われる4つの応用例を紹介します。

○サンプルコード9:APIを利用したデータの取得

まず初めにAPIを利用したデータの取得方法をご紹介します。

Web上の情報をプログラムから利用可能にするためにAPI(Application Programming Interface)という技術が使われています。

その中でもREST APIはWeb上の情報を取得したり操作したりするための標準的な方法を提供しており、Pythonで簡単に利用することができます。

このコードでは、Pythonのrequestsというライブラリを使ってREST APIを呼び出し、情報を取得しています。

下記のサンプルコードはPythonを使用したOpenWeatherMapのAPIから天気情報を取得するものです。

import requests
import json

api_key = 'あなたのAPIキー'
city = 'Tokyo'
url = f'http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}'

response = requests.get(url)
data = response.json()

print(json.dumps(data, indent=4, ensure_ascii=False))

この例では、まずrequestsライブラリを使って指定したURLのAPIにGETリクエストを送信します。

APIのレスポンスはJSON形式で得られるので、これをPythonの辞書型に変換します。

最後にprint関数を用いてJSONデータを整形して出力します。

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

{
    "coord": {
        "lon": 139.6917,
        "lat": 35.6895
    },
    "weather": [
        {
            "id": 801,
            "main": "Clouds",
            "description": "few clouds",
            "icon": "02n"
        }
    ],
    "base": "stations",
    "main": {
        "temp": 291.45,
        "feels_like": 291.63,
        "temp_min": 290.91,
        "temp_max": 292.07,
        "pressure": 1006,
        "humidity": 85
    },
    "visibility": 10000,
    "wind": {
        "speed": 0.89,
        "deg": 30,
        "gust": 0.89
    },
    "clouds": {
        "all": 24
    },
    "dt": 1645377236,
    "sys": {
        "type": 2,
        "id": 8074,
        "country": "JP",
        "sunrise": 1645354105,
        "sunset": 1645400405
    },
    "timezone": 32400,
    "id": 1850144,
    "name": "Tokyo",
    "cod": 200
}

上記の結果から、東京の現在の天気、温度、湿度などの情報を取得できます。

このようにAPIを利用することで、Pythonプログラムから様々なウェブサービスのデータにアクセスできます。

次に進む前に、requestsとjsonライブラリのインストールを忘れないようにしましょう。

インストールは次のコマンドで行うことができます。

pip install requests

次に、JSONデータの解析について見てみましょう。

○サンプルコード10:JSONデータの解析

JSON(JavaScript Object Notation)は、データの構造化に用いられる軽量なデータ交換形式です。

Pythonでは標準ライブラリの一部としてjsonモジュールが提供されており、これを使うことでJSON形式のデータの読み書きが可能です。

このコードでは、先ほどAPIから取得したJSON形式の天気情報データを解析し、特定の情報(例えば、天気や気温)を抽出します。

import json

json_data = """
{
    "coord": {
        "lon": 139.6917,
        "lat": 35.6895
    },
    "weather": [
        {
            "id": 801,
            "main": "Clouds",
            "description": "few clouds",
            "icon": "02n"
        }
    ],
    "base": "stations",
    "main": {
        "temp": 291.45,
        "feels_like": 291.63,
        "temp_min": 290.91,
        "temp_max": 292.07,
        "pressure": 1006,
        "humidity": 85
    },
    "visibility": 10000,
    "wind": {
        "speed": 0.89,
        "deg": 30,
        "gust": 0.89
    },
    "clouds": {
        "all": 24
    },
    "dt": 1645377236,
    "sys": {
        "type": 2,
        "id": 8074,
        "country": "JP",
        "sunrise": 1645354105,
        "sunset": 1645400405
    },
    "timezone": 32400,
    "id": 1850144,
    "name": "Tokyo",
    "cod": 200
}
"""

data = json.loads(json_data)

print('天気:', data['weather'][0]['description'])
print('平均気温:', data['main']['temp'] - 273.15)
print('最高気温:', data['main']['temp_max'] - 273.15)
print('最低気温:', data['main']['temp_min'] - 273.15)
print('湿度:', data['main']['humidity'], '%')

このコードでは、まずjson.loads関数を用いてJSON形式の文字列をPythonの辞書に変換します。

その後、辞書から特定のキーを指定して情報を取り出しています。

特に、天気や気温などの情報はネストされた辞書やリストの中に格納されているため、正しくアクセスするためにはそれらのデータ構造を理解することが重要です。

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

天気: few clouds
平均気温: 18.299999999999955
最高気温: 18.920000000000073
最低気温: 17.75999999999999
湿度: 85 %

これにより、東京の天気は「few clouds」、平均気温は約18.3度、最高気温は約18.9度、最低気温は約17.8度、湿度は85%であることが分かります。

このようにPythonのjsonライブラリを使うことで、JSON形式のデータを簡単に解析して必要な情報を取り出すことができます。

○サンプルコード11:CSVファイルの操作

PythonにはCSVファイルを操作するためのcsvモジュールが標準で提供されています。

CSV(Comma-Separated Values)ファイルは、各項目がカンマで区切られたテキストデータの形式で、表形式のデータを保存するのに一般的に用いられます。

このコードでは、CSVファイルの読み書きを行います。

まずは、CSVファイルの読み込みから始めてみましょう。

import csv

with open('sample.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

ここでは、Pythonの組み込み関数openを使用してCSVファイルを開きます。

その後、csv.reader関数を用いてファイルの内容を読み込み、各行をリストとして取り出して表示します。

次に、CSVファイルへの書き込みを行う例を見てみましょう。

import csv

data = [
    ['apple', 'orange', 'banana'],
    ['red', 'orange', 'yellow'],
    ['100', '60', '50']
]

with open('output.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerows(data)

このコードでは、まずリスト形式のデータを定義し、それをCSVファイルに書き込みます。

csv.writer関数を使用してCSV形式での書き込みを行うオブジェクトを作成し、そのwriterowsメソッドを使用してリストのデータをCSVファイルに書き込みます。

これらの操作を通じて、Pythonのcsvモジュールを使うことで、CSVファイルの読み書きが容易に行えることを理解できると思います。

○サンプルコード12:大量のデータを効率的に処理する方法

Pythonの力を本当に引き出すためには、大量のデータを効率的に処理する能力が不可欠です。

Pythonは、NumPyやPandasといったライブラリを使うことで、大規模なデータセットの処理を容易にします。

このセクションでは、Pandasライブラリを使って大量のデータを処理する基本的な手法を紹介します。

Pandasは、Pythonで使われる強力なデータ分析ライブラリで、データフレームと呼ばれる表形式のデータ構造を提供します。

データフレームはCSVやExcelなどの表形式データを効率的に操作するのに適しています。

まずはPandasを使ってCSVファイルを読み込み、基本的なデータ操作を行ってみましょう。

import pandas as pd

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

print(df.head())

このコードでは、pd.read_csv関数を使ってCSVファイルを読み込み、結果をPandasのデータフレームとして保存します。

その後、df.head()関数を使ってデータフレームの最初の数行を表示します。

次に、Pandasを使ってデータフレームの特定の列を選択し、基本的な統計を計算してみましょう。

selected_data = df['columnName']
mean_value = selected_data.mean()
max_value = selected_data.max()

print(f'Mean value: {mean_value}')
print(f'Max value: {max_value}')

このコードでは、ブラケット表記を使用してデータフレームから特定の列を選択します。

その後、meanmax関数を用いて、その列の平均値と最大値を計算します。最後に、これらの結果を表示します。

●Pythonでデータ抽出する際の注意点と対処法

Pythonでデータ抽出を行う際にはいくつかの注意点があります。

それぞれの問題点と対処法を詳しく見ていきましょう。

①データ型の問題

データの型は、数値、文字列、日付など、データの性質を表す重要な情報です。

Pythonでデータを読み込むとき、特にCSVファイルの場合、すべてのデータが文字列として読み込まれる可能性があります。

これは、数値データに対する数学的な操作を行おうとすると問題になります。

対処法としては、データを読み込んだ後、必要な列を適切なデータ型に変換します。

下記のサンプルコードでは、Pandasのastype関数を使用して、列のデータ型を変更しています。

df['columnName'] = df['columnName'].astype(float)

このコードでは、’columnName’という名前の列のデータ型をfloatに変更しています。

②欠損データの対処

データに欠損値が含まれている場合、それが無視されるか、誤った解釈を招く可能性があります。

Pandasでは、欠損データは通常NaN(Not a Number)と表示されます。

対処法は主に二つあります。一つ目は、欠損データを含む行または列を削除する方法です。

二つ目は、欠損値を何らかの値で補完(埋める)する方法です。どちらの方法を選ぶべきかは、具体的な状況とデータの性質によります。

下記のサンプルコードでは、Pandasのdropna関数とfillna関数を使用して、これらの対処法を示しています。

# 欠損値を含む行を削除
df = df.dropna()

# 欠損値を0で補完
df = df.fillna(0)

このコードでは、最初の行でdropna関数を使用して、欠損値を含む行を削除しています。

次の行では、fillna関数を使用して、欠損値を0で補完しています。

●Pythonでデータ抽出をカスタマイズする方法

Pythonでデータを抽出し、カスタマイズする方法にはいくつかあります。

ここでは主に、特定の条件に基づいてデータを抽出する方法と、データの並べ替え方をカスタマイズする方法について説明します。

①特定の条件に基づくデータ抽出

PythonのPandasライブラリでは、特定の条件を満たすデータだけを抽出することが可能です。

下記のサンプルコードでは、’Age’列が30以上のデータだけを抽出しています。

df_over_30 = df[df['Age'] >= 30]

このコードでは、’Age’列が30以上の条件を満たすデータだけを新しいDataFrameに抽出しています。

この結果、30歳以上の人のデータだけが含まれる新しいDataFrameが作成されます。

②データの並べ替え

データを特定の列の値に基づいて昇順または降順に並べ替えることも可能です。

下記のサンプルコードでは、’Age’列を基準にデータを昇順に並べ替えています。

df_sorted = df.sort_values('Age')

このコードでは、’Age’列を基準にDataFrameを昇順に並べ替えています。

この結果、年齢が若い人から順に並んだ新しいDataFrameが作成されます。

以上のように、PythonとPandasライブラリを使用すれば、データの抽出と並べ替えを独自のニーズに合わせてカスタマイズすることが可能です。

このスキルを身につけることで、大量のデータから必要な情報だけを効率的に取り出し、それを意味のある形で整理することが可能になります。

まとめ

これまでの記事ではPythonを使用したデータ抽出方法を学びました。

最初に必要なライブラリのインポートから始め、データフレームの作成、データの抽出、並び替えまでを一通り学んできました。

これらの基本的な操作はデータ分析におけるPythonの最も重要な要素であり、これらを理解することは初心者にとって非常に価値があります。

今回学んだことを基礎として、Pythonでのデータ分析に取り組む勇気と自信を持ってください。

データ抽出の技術は、Pythonを使ったデータ分析の世界への第一歩です。

これからも自分の興味や目標に合わせて学習を続け、Pythonの可能性を追求していきましょう。