メインコンテンツへスキップ
見出し画像

🔰Python実用部品工房💫第9講 日付と売上金額を取り出す――文字列を数値へ変換する

    【プロローグ】

    ミカ「教授、前回はCSVのデータが ['2026-08-01', '120000'] のように、文字列のリストとして読み込まれることを確認しましたね」

    教授「うむ。そのままではグラフ作成ツールであるMatplotlibに渡すことができない。X軸用のデータとY軸用のデータを、別々のリストとして用意する必要があるからだ」

    ミカ「日付のリストと、売上のリストに分けるのですね」

    教授「そうだ。さらに重要なのは、売上データだ。前回の結果では 120000 に引用符が付いていて、文字列として扱われていた」

    ミカ「文字列のままでは、グラフの高さが計算できませんね」

    教授「その通り。今回は、読み込んだ行から要素を取り出し、売上を数値に変換して、2つのリストに仕分ける処理を作ろう」

    【今回作るもの】

    前講で作成した src/main.py を変更し、グラフ作成の準備を整えます。今回の main.py は、次の処理を担当します。

    ・日付用と売上用の空リストを準備する

    ・CSVを一行ずつ読み込み、日付と売上に分割する

    ・売上を文字列から整数(数値)へ変換する

    ・それぞれのリストへデータを蓄積する

    ・完成した2つのリストをターミナルへ表示する

    データの流れは次のとおりです。

    ["2026-08-01", "120000"] → 日付と売上を別々に取り出す → "120000" を 120000(数値)に変換 → それぞれを専用のリストに追加

    【必要な知識と準備】

    リストから要素を取り出す

    CSVから読み込んだ一行は、次のようなリストとして row に入ります。

    Python

    row = ["2026-08-01", "120000"]
    

    リストの中身を別々に取り出すには、順番(インデックス)を指定します。Pythonでは順番を 0 から数えます。

    Python

    date_str = row[0]  # "2026-08-01"
    sales_str = row[1] # "120000"
    

    文字列を整数へ変換する

    取り出した "120000" は文字列(テキスト)なので、このままでは計算やグラフのY軸に使えません。int() を使って、文字列を整数(Integer)へ変換します。

    Python

    sales_int = int(sales_str)
    

    これで、引用符のない数値の 120000 になります。

    リストへデータを追加する

    準備しておいた空のリストへデータを追加するには、append() を使います。

    Python

    dates = []
    dates.append("2026-08-01")
    

    これを繰り返すことで、グラフに渡すための一列に並んだデータが完成します。

    【部品を作る】

    src/main.py を次のコードに書き換えてください。

    Python

    import csv
    
    csv_path = "data/sales.csv"
    
    # グラフに渡すためのリストを準備
    dates = []
    sales = []
    
    with open(csv_path, mode="r", encoding="utf-8", newline="") as csv_file:
        reader = csv.reader(csv_file)
        header = next(reader)
        
        for row in reader:
            # 1. 要素を取り出す
            date_str = row[0]
            sales_str = row[1]
            
            # 2. 売上を整数に変換する
            sales_int = int(sales_str)
            
            # 3. リストに追加する
            dates.append(date_str)
            sales.append(sales_int)
    
    # 出来上がったリストを確認
    print("日付リスト:", dates)
    print("売上リスト:", sales)
    

    【実行して確認する】

    ターミナルを開き、現在位置がプロジェクト直下(csv-sales-chart)であることを確認します。次のコマンドで main.py を実行します。

    PowerShell

    python src/main.py
    

    正しく実行されると、次の内容が表示されます。

    Plaintext

    日付リスト: ['2026-08-01', '2026-08-02', '2026-08-03', '2026-08-04', '2026-08-05']
    売上リスト: [120000, 135000, 98000, 151000, 168000]
    

    出力結果をよく観察してください。日付リストの要素には '2026-08-01' のように引用符が付いていますが、売上リストの要素には 120000 のように引用符が付いていません。これは、売上データが正しく「数値」としてPythonに認識されたことを意味します。

    【演習】

    完成した sales リストを使って、この5日間の「売上合計」と「売上平均」を計算してターミナルに表示してください。次の組み込み関数を使用します。

    ・sum(リスト) : リスト内の数値の合計を出す

    ・len(リスト) : リスト内のデータの件数を出す

    実行結果が次の形になるようにします。

    Plaintext

    売上合計: 672000
    売上平均: 134400.0
    

    【演習の解答】

    変更後の main.py です。(ファイルの末尾に追記します)

    Python

    import csv
    
    csv_path = "data/sales.csv"
    
    dates = []
    sales = []
    
    with open(csv_path, mode="r", encoding="utf-8", newline="") as csv_file:
        reader = csv.reader(csv_file)
        header = next(reader)
        
        for row in reader:
            date_str = row[0]
            sales_str = row[1]
            sales_int = int(sales_str)
            
            dates.append(date_str)
            sales.append(sales_int)
    
    print("日付リスト:", dates)
    print("売上リスト:", sales)
    
    # --- ここから追記 ---
    total_sales = sum(sales)
    count = len(sales)
    average_sales = total_sales / count
    
    print("売上合計:", total_sales)
    print("売上平均:", average_sales)
    

    プロジェクト直下から実行します。

    PowerShell

    python src/main.py
    

    実行結果です。

    Plaintext

    日付リスト: ['2026-08-01', '2026-08-02', '2026-08-03', '2026-08-04', '2026-08-05']
    売上リスト: [120000, 135000, 98000, 151000, 168000]
    売上合計: 672000
    売上平均: 134400.0
    

    【解答を一つずつ読み解く】

    売上の合計を計算する

    Python

    total_sales = sum(sales)
    

    sum() は、リストの中にある数値をすべて足し合わせる関数です。もし sales の中身が文字列のままだと、足し算ができずにエラーになります。事前に int() で数値に変換しておいたからこそ、ここで簡単に合計を出すことができます。

    データの件数を取得する

    Python

    count = len(sales)
    

    len() は、リストの中にいくつのデータが入っているかを数えます。今回は5日分のデータなので、count には 5 が入ります。

    平均を計算して表示する

    Python

    average_sales = total_sales / count
    

    合計金額をデータ件数で割ることで、平均を求めています。Pythonでは割り算に / 記号を使います。割り算の結果は、自動的に小数(Float)として扱われます。解答を閉じ、空のリストを作る、要素を取り出して変換する、リストに追加する、という順序を思い出しながら、もう一度入力して動きを確かめてください。

    【次回予告】

    次回の第10講では、いよいよMatplotlibの出番です。今回苦労して準備した dates(X軸用)と sales(Y軸用)の2つのリストをMatplotlibへ渡し、売上の推移を示す折れ線グラフを描画します。CSVファイルからグラフを作り出す、一連の流れが完成します。

    あなたへのおすすめ