ログアウト中 ログイン

【Python】Pandas版 売上データ集計ツール開発講座 第1章1.2節「データ前処理システムの構築」




現在の見出し: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) 前処理後のデータ型を表示して変換結果を確認します。日付変換が正常に実行されたかを検証できます。
df.dropna()による欠損値除去機能の追加

第1章1.2節「df.dropna()による欠損値除去機能の追加」の続きを見る


すべてのカリキュラムを無料登録で学ぶ

プログラミング・マーケティング・AI活用方法を
今すぐ無料登録すると、全てのコンテンツが視聴可能になります。