現在の見出し:1.2節:データ前処理システムの構築
見出し一覧
- 1.2節:データ前処理システムの構築
- - pd.to_datetime()による日付変換機能の実装
- - df.dropna()による欠損値除去機能の追加
【PR】『Python』を学べる企業・個人向けのプログラミングコース
pd.to_datetime()による日付変換機能の実装
前節(第1章 1.1節)で作成したコードを基盤として、pd.to_datetime()による日付データの標準化機能を実装します。現在の読み込み機能では、Excelの日付データが元の形式(2024-01-15など)で保持されているため、月別集計を行う際に年月形式(2024-01)への変換が必要です。
pd.to_datetime()とdt.strftime()を組み合わせることで、日付データの形式を統一できます。この2段階処理により、様々な日付形式を確実にdatetimeオブジェクトオブジェクトはプログラムの要素の一つで、データとその操作手段を一つにまとめたものです。に変換した後、分析に適した年月形式の文字列文字列は文字の並びを表現するデータ型で、テキストデータを扱うための基本的な構造として広く使用されています。に変換します。
処理段階 | 使用する関数 | 変換内容 | 結果例 |
---|---|---|---|
第1段階 | pd.to_datetime() | 文字列→datetimeオブジェクト | '2024-01-15' → datetime型 |
第2段階 | dt.strftime("%Y-%m") | datetimeオブジェクト→年月文字列 | datetime型 → '2024-01' |
また、preprocess_data()関数を新規追加して、データ前処理を独立管理します。この関数では元データの行数表示、日付変換実行、処理完了確認の3つのステップで構成され、各段階で適切なメッセージを出力して処理状況を把握できます。変換前後でデータ構造データ構造はプログラミングでデータを効率的に格納・管理するための仕組みで、適切な選択により操作の高速化が可能です。を比較表示することで、日付列の形式変化を視覚的に確認できるようになります。
# コード
import pandas as pd
import os
def load_sales_data(filepath):
"""売上データの読み込み"""
if not os.path.exists(filepath):
print(f"エラー: ファイルが見つかりません - {filepath}")
return None
df = pd.read_excel(filepath)
print(f"データ読み込み完了: {len(df)}行, {len(df.columns)}列")
print("データ構造:")
print(df.head())
return df
def preprocess_data(df):
"""データ前処理"""
if df is None:
return None
print(f"元データ: {len(df)}行")
# 日付変換
df['Date'] = pd.to_datetime(df['Date']).dt.strftime("%Y-%m")
print("日付変換完了")
print("処理済みデータ:")
print(df.head())
return df
# メイン処理
def main():
filepath = "sample.xlsx"
df = load_sales_data(filepath)
if df is not None:
print("読み込み成功!")
# データ前処理の実行
processed_df = preprocess_data(df)
if processed_df is not None:
print(f"最終データ: {len(processed_df)}行")
print("データ型:")
print(processed_df.dtypes)
else:
print("読み込み失敗")
if __name__ == "__main__":
main()
# 実行結果
データ読み込み完了: 100行, 4列
データ構造:
Product Area Date Price
0 ProductA Tokyo 2024-01-15 1000
1 ProductB Osaka 2024-01-16 1500
2 ProductC Tokyo 2024-01-17 2000
3 ProductA Nagoya 2024-01-18 1200
4 ProductB Tokyo 2024-01-19 1800
読み込み成功!
元データ: 100行
日付変換完了
処理済みデータ:
Product Area Date Price
0 ProductA Tokyo 2024-01 1000
1 ProductB Osaka 2024-01 1500
2 ProductC Tokyo 2024-01 2000
3 ProductA Nagoya 2024-01 1200
4 ProductB Tokyo 2024-01 1800
最終データ: 100行
データ型:
Product object
Area object
Date object
Price int64
dtype: object
行数 | 種別 | コード | 解説 |
---|---|---|---|
17行目 | 新規 | def preprocess_data(df): |
データ前処理専用の関数を定義します。読み込み後のデータ変換処理を体系的に管理するための独立した関数です。 |
19行目 | 新規 | if df is None: |
引数引数はプログラミングで関数やメソッドに渡される値や変数で、関数の動作を柔軟に制御し、コードの再利用性を高めます。として渡されたDataFrameがNoneの場合の安全性チェックです。前処理の実行前に必須の確認処理です。 |
22行目 | 新規 | print(f"元データ: {len(df)}行") |
前処理開始前のデータ行数を表示します。変換処理前後の比較基準として重要な情報です。 |
25行目 | 新規 | df['Date'] = pd.to_datetime(df['Date']).dt.strftime("%Y-%m") |
日付列をdatetimeオブジェクトに変換後、年月形式の文字列に統一します。月別集計に適した形式への変換処理です。 |
40行目 | 新規 | processed_df = preprocess_data(df) |
定義した前処理関数を呼び出してデータ変換を実行します。処理結果を新しい変数変数はデータを一時的に記憶しておく場所です。に格納して管理します。 |
44行目 | 新規 | print(processed_df.dtypes) |
前処理後のデータ型を表示して変換結果を確認します。日付変換が正常に実行されたかを検証できます。 |