見出し画像

#39 Pythonで始める行列散布図、チャレンジ AI×100業務(製造業)

ヒストグラム、時系列、行列散布図、何かあったときに確認するグラフです。今日は、行列散布図を描画します。下は統計ソフトMinitabの行列散布図の説明です。


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


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

  • Visual Studio Code環境下でのPython

  • ChatGPT

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

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

ChatGPTに次の会話をしました。

csvファイルをよみとり、seaborn.pairplotを用いてデータの全体を俯瞰できるようにします。このとき、描画する因子はGUIで選択させてください。csvファイルの先頭行が因子の名前となっています。

いくつか会話を進め、因子を選択式にしてグラフを描画するようにしました。

A, B, C, 及びY4_変更を選んでいます。

上記のように、すべての組み合わせについて概観できます。ひとめで相関がありそうか、偏りがありそうか確認できるスグレモンです。

今後の展開・アイデア

次回取り組みたいこと;

・箱ひげ図を再度取り上げます。

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import tkinter as tk
from tkinter import filedialog, messagebox
import matplotlib
import matplotlib.font_manager as fm

# 日本語フォント設定(環境に応じて変更可能)
matplotlib.rcParams['font.family'] = 'MS Gothic'  # 例: Windowsの場合
matplotlib.rcParams['axes.unicode_minus'] = False

# ファイル選択ダイアログを表示
def load_csv():
    file_path = filedialog.askopenfilename(filetypes=[("CSV files", "*.csv")])
    if not file_path:
        return
    try:
        df = pd.read_csv(file_path, encoding='shift_jis')  # ★ encoding変更(日本語CSV対応)
        show_selector(df)
    except Exception as e:
        messagebox.showerror("エラー", f"CSVファイルの読み込みに失敗しました:\n{e}")

# チェックボックスで因子選択
def show_selector(df):
    selector_window = tk.Toplevel(root)
    selector_window.title("描画する因子を選択")

    label = tk.Label(selector_window, text="描画する因子を選んでください:")
    label.pack()

    var_dict = {}
    for col in df.columns:
        var = tk.BooleanVar()
        cb = tk.Checkbutton(selector_window, text=col, variable=var)
        cb.pack(anchor='w')
        var_dict[col] = var

    def on_ok():
        selected = [col for col, var in var_dict.items() if var.get()]
        if len(selected) < 2:
            messagebox.showwarning("警告", "2つ以上の因子を選んでください。")
            return
        selector_window.destroy()
        draw_pairplot(df[selected])

    ok_button = tk.Button(selector_window, text="描画", command=on_ok)
    ok_button.pack(pady=10)

# ペアプロットの描画
def draw_pairplot(df_selected):
    sns.pairplot(df_selected)
    plt.tight_layout()
    plt.show()

# メインウィンドウ
root = tk.Tk()
root.title("CSVペアプロットツール")
root.geometry("300x150")

label = tk.Label(root, text="CSVファイルを読み込んでください")
label.pack(pady=10)

load_button = tk.Button(root, text="CSVファイルを開く", command=load_csv)
load_button.pack(pady=10)

root.mainloop()

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