はじめに
Pythonを用いて、データフレームの読み込み、および可視化を行うヘルパー関数を作成しました。データ分析においてはコンソールで確認すればよいので必要ないのですが、記事作成にあたり少し見栄えの良いものが欲しかったため作成しました。
目次
GUI で DataFrame を表示する関数
この関数はデータフレームを視覚的に表示するためのものです。
ソースコード
from tkinter import ttk
import customtkinter as ctk
def df_viewer(df):
"""
DataFrame を GUI ウィンドウに表示する関数。
Args:
df (pd.DataFrame): 表示するデータフレーム
"""
# 外観設定(ダーク/ライトモード & テーマカラー)
ctk.set_appearance_mode("System") # "Dark", "Light", "System"
ctk.set_default_color_theme("blue")
# メインウィンドウの作成
root = ctk.CTk()
root.title("DataFrame Viewer")
root.geometry("800x500") # ウィンドウサイズを設定
# メインフレームの作成
frame = ctk.CTkFrame(root)
frame.pack(fill="both", expand=True, padx=10, pady=10)
# DataFrame を表示する Treeview(テーブル)を作成
tree = ttk.Treeview(frame, columns=list(df.columns), show="headings")
# 列ヘッダーの設定
for col in df.columns:
tree.heading(col, text=col) # ヘッダー名を設定
tree.column(col, width=150, anchor="center") # 列幅を設定
# データフレームの行をテーブルに追加
for row in df.itertuples(index=False):
tree.insert("", "end", values=row)
# 縦スクロールバーの追加
scrollbar = ctk.CTkScrollbar(frame, command=tree.yview)
tree.configure(yscrollcommand=scrollbar.set) # スクロールバーを有効化
# Grid を使ってレイアウト調整
frame.grid_rowconfigure(0, weight=1)
frame.grid_columnconfigure(0, weight=1)
# 各ウィジェットをグリッドに配置
tree.grid(row=0, column=0, sticky="nsew")
scrollbar.grid(row=0, column=1, sticky="ns")
# ウィンドウを閉じたときに次の処理へ進む
def on_closing():
root.quit() # `mainloop()` を終了し、次の処理へ
root.destroy() # ウィンドウを閉じる
root.protocol(
"WM_DELETE_WINDOW", on_closing
) # 閉じるボタン(×)を押したときの処理を設定
# ウィンドウを表示(閉じるまで処理を一時停止)
root.mainloop()
処理の概要
このスクリプトは以下の流れで処理を行います。
customtkinter
を使用して GUI ウィンドウを作成。- DataFrame の内容を
Treeview
ウィジェットに表示。 - スクロールバーを追加し、大量のデータにも対応。
- ユーザーがウィンドウを閉じるまでデータを表示。
外観の設定
ctk.set_appearance_mode("System") # "Dark", "Light", "System"
ctk.set_default_color_theme("blue")
set_appearance_mode("System")
により、OS の設定に応じたダーク/ライトモードを適用。set_default_color_theme("blue")
で GUI の基本色を青系統に設定。
メインウィンドウの作成
root = ctk.CTk()
root.title("DataFrame Viewer")
root.geometry("800x500")
CTk()
を用いてメインウィンドウを作成。title("DataFrame Viewer")
でウィンドウのタイトルを設定。geometry("800x500")
でウィンドウサイズを 800×500 ピクセルに指定。
Treeview(テーブル)の作成
tree = ttk.Treeview(frame, columns=list(df.columns), show="headings")
Treeview
を使用して、DataFrame を表形式で表示。columns=list(df.columns)
で DataFrame の列名を取得し、列として設定。show="headings"
により、デフォルトのツリー構造を無効化し、ヘッダーを表示。
データの挿入
for row in df.itertuples(index=False):
tree.insert("", "end", values=row)
itertuples(index=False)
により、DataFrame をタプル形式で取得。tree.insert("", "end", values=row)
で各行のデータをテーブルに追加。
ウィンドを閉じる処理
def on_closing():
root.quit()
root.destroy()
root.protocol("WM_DELETE_WINDOW", on_closing)
on_closing()
関数を作成し、ウィンドウを閉じる際の処理を定義。root.protocol("WM_DELETE_WINDOW", on_closing)
で閉じるボタン (×
) を押した際にon_closing()
を実行。
.pkl ファイルをオブジェクトとして読み込む関数
ソースコード
この関数は、指定された .pkl
ファイルを開き、その中のオブジェクトを復元するシンプルな処理を行います。
import pickle
from pathlib import Path
def pkl_opener(file_path):
"""
指定した .pkl ファイルを読み込み、オブジェクトとして返す関数。
Args:
file_path (str): .pkl ファイルのパス
Returns:
object: 読み込まれたオブジェクト(失敗時は None)
"""
try:
path = Path(file_path)
if not path.exists():
raise FileNotFoundError(f"ファイルが見つかりません: {file_path}")
with path.open("rb") as f:
data = pickle.load(f)
print(f".pkl ファイルが正常に読み込まれました (データ型: {type(data)}).")
return data
except Exception as e:
print(f"エラーが発生しました: {e}")
return None
処理の概要
この関数は .pkl
ファイルを読み込み、保存されているオブジェクトを返します。
pickle
を使用して.pkl
ファイルをバイナリモードで開く。pathlib
を利用してファイルの存在を確認し、適切なエラーハンドリングを実施。- 読み込んだオブジェクトの型を出力し、返す。
- 失敗時はエラーメッセージを出力し、
None
を返す。
pathlib と pickle を使用して .pkl
ファイルを読み込む
path = Path(file_path)
if not path.exists():
raise FileNotFoundError(f"ファイルが見つかりません: {file_path}")
with path.open("rb") as f:
data = pickle.load(f)
Path(file_path)
を使用して、.pkl
ファイルのパスをオブジェクトとして扱う。open("rb")
により、バイナリモードで.pkl
ファイルを開く。pickle.load(f)
でファイル内のデータを復元。
オブジェクトの型を確認する処理
print(f".pkl ファイルが正常に読み込まれました (データ型: {type(data)}).")
return data
print()
で読み込み成功のメッセージとオブジェクトの型を出力。return data
で復元したオブジェクトを返す。
エラーハンドリングと例外処理
except Exception as e:
print(f"エラーが発生しました: {e}")
return None
return None
でエラー時は None
を返す。
try-except
ブロックを使用して、エラーが発生した場合に適切に処理。
print(f"エラーが発生しました: {e}")
でエラーメッセージを出力。
処理の概要
この関数は以下の流れで処理を行います。
- 指定した
.pkl
ファイルをpandas
で読み込む。 - 読み込み成功時は DataFrame を返し、エラーハンドリングを実施。
- 読み込み失敗時はエラーメッセージを出力し、
None
を返す。
pandas を使用して .pkl
ファイルを読み込む
df = pd.read_pickle(file_path)
pd.read_pickle(file_path)
を使用して、指定した.pkl
ファイルを読み込む。.pkl
ファイルは Python のオブジェクトを保存・復元できるバイナリ形式のファイル。
正常に読み込まれた場合の処理
print(".pkl ファイルが正常に読み込まれました。")
return df
print()
で読み込み成功のメッセージを出力。return df
で読み込んだ DataFrame を返す。
エラーハンドリング
except Exception as e:
print(f"エラーが発生しました: {e}")
return None
try-except
ブロックを使用して、エラーが発生した場合に適切に処理。print(f"エラーが発生しました: {e}")
でエラーメッセージを出力。return None
でエラー時はNone
を返す。
コメント