見出し画像

#37 品質リスクを分析する準備「データ・ラングリング」、チャレンジ AI×100業務(製造業)

データラングリング(またはデータマンジング)とは、生のデータを収集し、それを分析や機械学習モデルで利用可能な形式に変換・整形するプロセス全体を指します。

ラングリングが、AIと会話(プロンプト)によって実現すれば魅力的ですが*、実際の実務では、ほぼほぼ決まったcsvファイルの解析にとどまります。従って、数値に閾値を定め、OK or NGなどと変換できれば、まず第一歩ですが進むことができます。

*Exploratory, Inc.の「Exploratory」では可能です。
セミナー #145 - Exploratory v12 - パラダイムシフト with AI プロンプト

前回同様ChatGPTを会話しつつ、Pythonにてコードを生成し分析していきます。


*それでは、スタートです。
*執筆者は以下を参照してください。


使ったツール・準備したこと

  • ChatGPT 4o

  • Visual Studio Code環境下でのPython

やってみたこと|コード・ステップ紹介

実行した内容の簡単な流れ

ここでは、csvファイルを呼び出して、ある列(今回はY)に閾値を定め、小さい場合には「low」それ以外に「normal」とします。

元ファイルは以下。

元ファイル;lot, A, B, C, 及びYのデータ

プロンプトは下のようにしました。

データ・ラングリングをしたいのですが、csvファイルを読み取り、ある列の値が●●以下なら「low」それ以外は「normal」と列を加える操作のコードを生成してください。

次に、「閾値を設定するGUIを設定して」として追加しています
それぞれ、分析の対象を指定;ここではYに対して「57」を閾値にしています。
Y列の横に、value_level列が生成しています。

あるデータベースなど、特定のデータを解析する場合は決まったデータ変換なので上記でいいですが、使用シーン、データによってはExploratory, Inc.の「Exploratory」の価格は良心的なので時と場合によります。

今後の展開・アイデア

次回取り組みたいこと;

・Difyを触ります。

*今回のコードです。

import pandas as pd
import tkinter as tk
from tkinter import filedialog, simpledialog, messagebox

# --- GUIからしきい値と列を指定して処理する関数 ---
def process_csv_with_threshold():
    # ファイル選択ダイアログ
    file_path = filedialog.askopenfilename(title="CSVファイルを選択", filetypes=[("CSV files", "*.csv")])
    if not file_path:
        return

    # CSV読み込み
    df = pd.read_csv(file_path)
    df.columns = df.columns.str.strip()

    # 列名のリストを取得
    columns = df.columns.tolist()

    # 対象列を入力(ポップアップ)
    target_column = simpledialog.askstring("列名の入力", f"分類対象の列を指定してください(例: {columns[0]})")
    if target_column not in df.columns:
        messagebox.showerror("エラー", f"指定した列が見つかりません: {target_column}")
        return

    # しきい値を入力(ポップアップ)
    try:
        threshold = float(simpledialog.askstring("しきい値の入力", "lowとnormalを分ける数値しきい値を入力してください"))
    except:
        messagebox.showerror("エラー", "数値を正しく入力してください")
        return

    # 新しい列を追加
    df['value_level'] = df[target_column].apply(lambda x: 'low' if x <= threshold else 'normal')

    # 保存先パスの作成
    save_path = file_path.replace(".csv", "_with_level.csv")
    df.to_csv(save_path, index=False)

    # メッセージ表示
    messagebox.showinfo("完了", f"処理完了!ファイルを保存しました:\n{save_path}")

# --- GUIウィンドウの初期化 ---
root = tk.Tk()
root.withdraw()  # メインウィンドウは表示しない
process_csv_with_threshold()

いいなと思ったら応援しよう!