PythonでExcel操作:数値データをもとにカテゴリ変数データの列を作る

勉強系(Python/Excel/統計学/その他)

全体まとめページは↓より。

やりたいこと

・気温の数値データを読み込んで、気温の範囲ごとにカテゴリを付与する。

フォルダ構成

VSCodeで実行するときはprg配下を開いてpyファイルを作り実行する。

実装

★部分が今回のポイント。

import os
import openpyxl
from operator import itemgetter

#辞書リストの作成関数
def make_shipment(sh):
    shipment_list = []
    for row in sh.iter_rows():
        if row[0].row == 1:
            header_cells = row
        else:
            row_dic = {}
            for v, k in zip(header_cells, row):
                row_dic[v.value] = k.value
            shipment_list.append(row_dic)
    return shipment_list

#ファイル名を入力させる
print("ファイル名を入力:")
filename = input()

#読み込みファイルパスを作成
infile_path = os.path.join("..\indata" , filename)

#読み込みファイルからオブジェクトを生成
iwb = openpyxl.load_workbook(infile_path)
ish = iwb.active

#出力ファイルオブジェクトを生成
owb = openpyxl.Workbook()
osh = owb.active

#出力ファイルパスを作成
outfile_path = os.path.join("..\outdata", filename)

#辞書リストを作成
shipment_list = make_shipment(ish)

#★カテゴリ変換
for dic in shipment_list:
    if dic["気温"] < 0:
        dic["暑さ"] = "すずしい"
    elif 0 <= dic["気温"] < 25:
        dic["暑さ"] = "すずし~い"
    elif 25 <= dic["気温"] < 35:
        dic["暑さ"] = "あつ~い"
    else:
        dic["暑さ"] = "あつい"

#転記先ヘッダ処理
list_row = 1
osh.cell(list_row,1).value = "index"
osh.cell(list_row,2).value = "気温"
osh.cell(list_row,3).value = "暑さ"

#転記処理
for dic in shipment_list:
    list_row += 1
    osh.cell(list_row,1).value = dic["index"]
    osh.cell(list_row,2).value = dic["気温"]
    osh.cell(list_row,3).value = dic["暑さ"]

#ファイルを保存
owb.save(outfile_path)

出力結果

実装で指定した範囲通りに「暑さ」列にカテゴリが付与されている。

以上

タイトルとURLをコピーしました