
【Python】初心者でも作れるもの(成果物)の例を3つ紹介
公開: 更新:Python初心者でも作れるもの
【PR】『Python』を学べる企業・個人向けのプログラミングコース
成果物の例①Excel自動化ツール
Pythonを使用してExcelファイルを自動処理するツールは、日常的な事務作業を大幅に効率化できます。pandasやopenpyxlなどのライブラリを利用して、複数のExcelファイルからのデータ抽出や集計、分析、レポート生成などを自動化できます。
【サンプルコード】
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime
def process_sales_data(filename):
df = pd.read_excel(filename)
monthly_sales = df.groupby('月')['売上金額'].sum()
result_file = f"集計結果_{datetime.now().strftime('%Y%m%d')}.xlsx"
monthly_sales.to_excel(result_file)
plt.figure(figsize=(10, 6))
monthly_sales.plot(kind='bar', color='skyblue')
plt.title('月別売上集計')
plt.ylabel('売上金額')
plt.tight_layout()
plt.savefig('monthly_sales.png')
return result_file, 'monthly_sales.png'
result_file, graph_file = process_sales_data('sales_data.xlsx')
print(f"集計結果を{result_file}に保存しました")
print(f"グラフを{graph_file}に保存しました")
【実行結果】
集計結果を集計結果_20250405.xlsxに保存しました
グラフをmonthly_sales.pngに保存しました
行番号 | 詳細説明 |
---|---|
1-3行目 | 必要なライブラリをインポート |
5行目 | Excelファイルを処理する関数を定義 |
6行目 | pandasでExcelファイルを読み込みDataFrameとして格納 |
8行目 | 「月」列でグループ化し「売上金額」列の合計を計算 |
10行目 | 現在の日付を含む出力ファイル名を生成 |
11行目 | 集計結果を新しいExcelファイルに出力 |
13-18行目 | 集計データをグラフ化してPNG画像として保存 |
20行目 | 処理結果のファイル名を返す |
22-24行目 | 関数を呼び出して実行し、保存結果を表示 |
Excel自動化ツールは単純なデータ集計だけではなく、データのクレンジングや複数ファイルの統合、条件付き書式の適用など様々な機能を実装できます。Pythonのライブラリを組み合わせることで、手作業では数時間かかる作業を数秒で完了させることが可能です。
成果物の例②スクレイピングツール
Webスクレイピングは特定のWebサイトから必要な情報を自動的に収集する技術です。requestsとBeautifulSoupライブラリを組み合わせて、Webページの情報を構造的に解析し、必要なデータだけを抽出するツールを開発できます。
【サンプルコード】
import requests
from bs4 import BeautifulSoup
import pandas as pd
import time
def scrape_weather_data(cities):
weather_data = []
for city in cities:
url = f"https://example-weather.com/forecast/{city}"
response = requests.get(url)
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
temperature = soup.select_one('.temperature').text.strip()
condition = soup.select_one('.condition').text.strip()
humidity = soup.select_one('.humidity').text.strip()
weather_data.append({
'都市': city,
'気温': temperature,
'天気': condition,
'湿度': humidity
})
time.sleep(1)
else:
print(f"{city}の天気情報の取得に失敗しました。ステータスコード: {response.status_code}")
df = pd.DataFrame(weather_data)
df.to_csv('weather_data.csv', index=False, encoding='utf-8')
return df
cities = ['東京', '大阪', '札幌', '福岡', '那覇']
weather_df = scrape_weather_data(cities)
print(weather_df)
【実行結果】
都市 気温 天気 湿度
0 東京 23.5℃ 晴れ 45%
1 大阪 25.0℃ 曇り 60%
2 札幌 18.2℃ 雨 80%
3 福岡 26.8℃ 晴れ 50%
4 那覇 29.3℃ 晴れ 65%
行番号 | 詳細説明 |
---|---|
1-4行目 | 必要なライブラリをインポート |
6行目 | 天気データを取得する関数を定義 |
7行目 | 取得したデータを格納するリストを初期化 |
9行目 | 都市ごとに処理を繰り返す |
10行目 | 天気情報を取得するURL(架空の例)を生成 |
12行目 | requestsライブラリでWebページを取得 |
14行目 | HTTPステータスコードが200(成功)か確認 |
15行目 | BeautifulSoupでHTMLを解析 |
17-19行目 | CSSセレクタで気温、天気、湿度の情報を抽出 |
21-26行目 | 取得したデータを辞書形式でリストに追加 |
28行目 | サーバに負荷をかけないよう1秒間の待機時間を設定 |
29-30行目 | エラー時のメッセージを表示 |
32-34行目 | 取得したデータをDataFrameに変換しCSVに保存 |
36-38行目 | 都市リストを定義し関数を実行して結果を表示 |
Webスクレイピングは市場調査や価格比較、ニュース記事の収集など様々な用途に応用できます。複数のWebサイトから継続的にデータを収集し分析することで、ビジネス上の意思決定や研究活動をサポートできます。
スクレイピングツールを開発する際は対象Webサイトの利用規約を確認し、サーバに過度な負荷をかけないよう配慮することが重要です。多くのWebサイトではrobots.txtファイルによってクローラーの動作を制限していることもあるため、適切なマナーとルールを守りながらツールを実装する必要があります。
【PR】『Python』を学べる個人・中高生向けのプログラミングコース
成果物の例③画像認識ツール
Pythonは画像処理や機械学習の分野でも広く活用されています。OpenCVやTensorFlowなどのライブラリを組み合わせることで、顔検出や物体認識などの機能を実装できます。
【サンプルコード】
import cv2
import numpy as np
import matplotlib.pyplot as plt
from datetime import datetime
def detect_faces(image_path):
image = cv2.imread(image_path)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
faces = face_cascade.detectMultiScale(
gray,
scaleFactor=1.1,
minNeighbors=5,
minSize=(30, 30)
)
print(f"{len(faces)}個の顔を検出しました")
for (x, y, w, h) in faces:
cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
result_filename = f"detected_faces_{datetime.now().strftime('%Y%m%d_%H%M%S')}.jpg"
cv2.imwrite(result_filename, cv2.cvtColor(image_rgb, cv2.COLOR_RGB2BGR))
return image_rgb, result_filename, len(faces)
image_path = 'group_photo.jpg'
result_image, saved_file, face_count = detect_faces(image_path)
plt.figure(figsize=(12, 8))
plt.imshow(result_image)
plt.title(f'検出された顔: {face_count}個')
plt.axis('off')
plt.show()
print(f"処理結果を{saved_file}に保存しました")
【実行結果】
5個の顔を検出しました
処理結果をdetected_faces_20250405_143027.jpgに保存しました
行番号 | 詳細説明 |
---|---|
1-4行目 | 必要なライブラリをインポート |
6行目 | 顔検出を行う関数を定義 |
7行目 | OpenCVで画像ファイルを読み込み |
9行目 | 画像をグレースケールに変換(検出処理の効率化のため) |
11行目 | OpenCVの顔検出器(Haar Cascade)を読み込み |
13-18行目 | 顔検出を実行し検出された顔の座標情報を取得 |
20行目 | 検出された顔の数を表示 |
22-23行目 | 検出された各顔の周りに緑色の四角形を描画 |
25行目 | BGR形式からRGB形式に変換(Matplotlibで表示するため) |
27-28行目 | 現在の日時を含むファイル名で処理結果を保存 |
30行目 | 処理結果と関連情報を返す |
32-33行目 | 画像ファイルのパスを指定して関数を実行 |
35-39行目 | Matplotlibを使用して結果を視覚的に表示 |
40行目 | 保存したファイル名を表示 |
画像認識技術は単純な顔検出だけではなく感情分析や年齢推定、物体の分類など様々な応用が可能です。より高度な機能を実装する場合は、TensorFlowやPyTorchなどの深層学習フレームワークと組み合わせることで、精度の高い画像認識システムを開発できます。
初心者向けのプロジェクトとしては、顔検出や色検出などの基本的な機能から始め、徐々に難易度を上げていくアプローチがおすすめです。画像認識の学習過程で得られる知識やスキルは、データ分析やAI開発など様々な分野に応用できます。
※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。
ITやプログラミングに関するコラム
- 【Windows編】Pythonのバージョンをアップデートする方法
- 【Python】グローバル変数を別ファイルで管理・利用する方法
- バージョン確認でPythonだけ表示される原因と対処法
- 【Python】リスト(list)の括弧を外す方法
- 【Python】時間計測をミリ秒単位で実装する方法