0
2

More than 1 year has passed since last update.

CSVファイルを開いてグラフ表示するGUIアプリを作ってみた!

Last updated at Posted at 2023-07-15

PythonとTKinterを使い、CSVファイルをグラフ表示するGUIアプリを作ってみました。ファイルはダイアログで選択できるように作っています。

アプリの機能

INPUTボタンを押すことで、CSVファイルを選択できます。

選択したCSVファイルをグラフで表示します。

画面下のボタンを押すことで、表示されたグラフの画像を保存できます。

用意するもの

サンプルとなるCSVファイルを作成し、ホームディレクトリに保存します。

sample.csv
名前,身長,体重
山田,170.2,56
吉川,158.7,89
佐藤,168.9,46

pandasをインストールしておきます。

pip install pandas

アプリのコード

以下のコードを実行することで、INPUTボタンが表示され、CSVファイルを選択できるようになります。グラフは画像として、アプリとは別に表示されます。画像の画面を閉じることで、何度でもCSVファイルを選択し、グラフを表示できます。

※フォントはLinux Ubuntuで使われる「Noto Sans CJK JP」を指定してありますが、別のフォントに変更できます。

csv-graph.py
# coding: utf-8

import os

# tkinterのインポート
import tkinter as tk

# CSVファイルのインポート
import csv

import tkinter.filedialog

import pandas as pd
import matplotlib.pyplot as plt

import seaborn as sns
sns.set(font=["Noto Sans CJK JP"])

# 関数の定義

def dialog():

    # ファイル選択ダイアログの表示
    file_path = tkinter.filedialog.askopenfilename()

    if len(file_path) != 0:
        # ファイルが選択された場合

        df = pd.read_csv(file_path)
        #print(df)
        df.plot.barh()
        plt.show()
    

### GUI ###
# ウインドウの作成
root = tk.Tk()
# ウインドウのサイズ指定
root.geometry("300x120")

# ボタン作成
run_button = tk.Button(root, text = "INPUT", command = dialog)

# ボタンの位置を指定
run_button.place(x = 110, y = 60)

# ウインドウ状態の維持
root.mainloop()

グラフの種類を変える

今回作成したアプリでは、「横棒グラフ」(水平棒グラフ)で表示するように設定してありますが、グラフの種類はもちろん、変更可能です。変更方法は以下の通り。

グラフを表示する・折れ線グラフにする

df.plot()

※何も設定しないと折れ線グラフになります。

横棒グラフにする

df.plot.barh()

縦棒グラフにする

df.plot.bar()

円グラフにする

pie.plot()

その他のカスタマイズ

そのほか、グラフのタイトル、ラベル、フォント、フォントのサイズ、縦軸の範囲、カラーなどを変更できます。詳しくは以下のサイトを参考にしてください。

Python データ分析 グラフ http://www.dicre.com/python/graph.html

データフレームからのグラフ作成|キータ@python/データ分析の修行 https://note.com/super_yes_man/n/nf2b61bc57f59

なお、今回CSVファイルをグラフ化するにあたって、pandas (matplotlib)を利用しています。より詳しくカスタマイズしたい人はpandasを検索して調べてみてください。

データベース SQliteからグラフ表示する

データベース SQliteを利用してグラフを表示させることもできます。PythonとTKinterで作ったコードをそのまま利用します。

用意するもの

データベースのファイル

例:TEST.db

データベースのテーブル

例:persons (TEST.dbに作ったテーブルのデータ)

アプリの機能

DATAボタンを押すと、指定したデータベースのテーブル データをグラフで表示します。

アプリのコード

data.py
# coding: utf-8

import sqlite3

import os

# tkinterのインポート
import tkinter as tk

# CSVファイルのインポート
import csv

import tkinter.filedialog

import pandas as pd
import matplotlib.pyplot as plt

import seaborn as sns
sns.set(font=["Noto Sans CJK JP"])

# データベースの情報
dbname = "TEST.db"
conn = sqlite3.connect(dbname)
cur = conn.cursor()

# 関数の定義
def database():
    df = pd.read_sql('SELECT * FROM persons', conn)
    #print(df)
    df.plot.barh()
    plt.show()

### GUI ###
# ウインドウの作成
root = tk.Tk()
# ウインドウのサイズ指定
root.geometry("300x120")

# ボタン作成
run_button = tk.Button(root, text = "DATA", command = database)

# ボタンの位置を指定
run_button.place(x = 110, y = 60)

# ウインドウ状態の維持
root.mainloop()

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2