Skip to content
Twitter
edu-IT Practical Labo
【名古屋】
edu-IT Practical Laboedu-IT Practical Labo
  • Home
  • Blog
  • Services
    • Programming Typing
    • Basic WEB-TECH Lesson
    • IT-SKILL Training
  • Contact
 
  • Home
  • Blog
  • Services
    • Programming Typing
    • Basic WEB-TECH Lesson
    • IT-SKILL Training
  • Contact

PySimpleGUIでGUIツール作成~Plotlyで月間支出グラフを出力してみよう

You are here:
  1. Home
  2. edu-IT
  3. PySim…
8月32022
edu-ITPython

Pythonを使ったグラフ表示の方法として、matplotlibやフレームワークなどを使ったことがある方もいらっしゃると思います。データを視覚化することで現状の課題に対するフィードバックがしやすくなる為、前向きにデータ活用していきたいものですよね。導入作業を繰り返し行うことで、周囲に合意を得られる形で情報が共有され、実際に導入実績につながるということもあるのかもしれません。

今回は、GUIツールで「取り込んだcsvファイルを操作し、PDFファイルでグラフ表示する」方法について確認していきます。ライブラリには

GUI:PySimpleGUI
グラフ表示:Plotly
PDF出力:kaleido  を使用します。

 
ライブラリを用いてデータを読み書きしたり、グラフを出力したり、PDF出力するといった具合に、使用用途に合わせて組み合わせて実装していけると良いですよね。

・添付資料のダウンロードはこちらから

 

Contents

  • 1 はじめに
  • 2 PySimpleGUIの画面レイアウト作成
  • 3 Pythonでファイル読み込み処理を実装する
  • 4 Pandasとは?
  • 5 Pythonでグラフ表示~ Plotlyライブラリの基礎
  • 6 問題 :Plotlyの基本①~折れ線グラフの書き方を理解する
  • 7 問題 :Plotlyの基本②~棒グラフの書き方を理解する
  • 8 問題 :Plotlyの基本③~円グラフの書き方を理解する

はじめに

 
添付資料にある「ExpenseList.csv」を基にグラフ表示してみたいと思います。
 
ExpenseList.csv



 



 

PySimpleGUIの画面レイアウト作成

 
それでは、PySimpleGUIライブラリを使ってGUIツールの画面レイアウトを作成していきましょう。

問題:サンプルコードを実行して画面レイアウトを作成

 
以下のサンプルのように(PySimpleGUIの基礎解説の参考サイトや他のWebサイトを参考にしながら)csvファイルを読み込む画面レイアウトを作成してみましょう。

 

【参考サイト】:PySimpleGUIの使い方についての基礎解説
http://www.k-techlabo.org/blog2/?page_id=1481

 

・インストール
pipというPythonのパッケージ管理ツールを使って、「PySimpleGUI」をインストールします。

※Pythonインストール時に標準で入っているパッケージ以外をインストールする場合、
「pip install パッケージ名」のコマンドで、ローカル環境のPowerShellにてインストールをします。

 

 pip install PySimpleGUI

 

 
▷サンプルコード(画面レイアウト作成): layout_PySimpleGUI.py

import PySimpleGUI as sg

layout = [
   [sg.Text("ファイル"), sg.InputText(), sg.FileBrowse('ファイル選択', key="inputFilePath")],
   [sg.Text(" ↓↓PDFにてグラフを表示:")],
   [sg.Button('グラフ出力')]
]
window = sg.Window("ファイル読込", layout)

# イベントループ
while True:
    event, values = window.read()                                                                                                                       
    if event == sg.WIN_CLOSED:                                                                                                                      
        break                                                                                                                                                              
elif event == 'グラフ出力':
        # 処理の内容を記載
        sg.popup('処理内容の実装前')     

window.close()

 

Pythonでファイル読み込み処理を実装する

 


 

Pandasとは?

 
Pandasとは、Pythonでデータ処理をするために作られた高機能なライブラリのことで、代表的な使い方としてSeriesやDataFrameを使ったデータの処理方法があります。

 Pandasを利用するには、以下のようにインポートを行います。Asキーワードを使用してpdで呼び出せるようにします。

In

import pandas as pd

▷使用例

# 1次元データの利用
ser = pd.Series( [10, 20, 30, 40] )
ser

# 2次元データの利用
df = pd.DataFrame( [10, “a”, True], 
[20, “b”, False],
[30, “c”, False],
[40, “d”, True] )
df

csvやExcelのデータを読み込んだり、列や行を削除したり、フィルターをかけて抽出をしたりといったExcelやデータベース言語のSQLでできることがPandasの機能にはあります。

 

Pythonでグラフ表示~ Plotlyライブラリの基礎

 
次に、グラフ描画するにあたって、使用するライブラリの基礎を押さえておきましょう。

 
・Plotly とは?

・インタラクティブな可視化ができるライブラリ
・「Plotly express」というPlotlyのラッパーを使うと、より簡潔な方法でデータ可視化

 
 今回は、「Plotly express」を使って、折れ線グラフ、棒グラフ、円グラフを描画する例をみていきます。

 

問題 :Plotlyの基本①~折れ線グラフの書き方を理解する

 

 ExpenseList.csvのに各月(AccountDateごと)の支出合計額の推移をPlotly expressを利用して、折れ線グラフで表示してください。

作業の際、PDF出力する為に「pip install kaleido」を実施してください。

【書式】:折れ線グラフ(Plotly express)

import plotly.express as px
px.line(対象のデータフレーム, title=’AccountDateごとの支出’)

 

▷使用例

import PySimpleGUI as sg
import pandas as pd
import plotly.express as px

layout = [
   [sg.Text("ファイル"), sg.InputText(key='-file-'), sg.FileBrowse('ファイル選択',
key="inputFilePath",target='-file-')],
   [sg.Text(" ↓↓ PDFにてグラフを表示:")],
   [sg.Button('グラフ出力')]
]

window = sg.Window("ファイル読込", layout)

# イベントループ
while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED:
        break
    elif event == 'グラフ出力':
        # ファイルパスを取得
        f = values['-file-']
        
        # pandasでcsvファイルの内容を読み込む
        # csvファイルの、1列目にAccountDate, 2列目にExpenseItem, 3列目にMemo, 
4列目にWithdrawalAmountが入っているとする
        df = pd.read_csv(f, encoding='SHIFT_JIS')
        # WithdrawalAmount列を数値変換する
        df['WithdrawalAmount'] = df['WithdrawalAmount'].apply(lambda x: x.replace(',', '')).astype('int')

        #作成したデータフレームを基にグラフを作成
        df2 = df[['AccountDate','WithdrawalAmount']].groupby('AccountDate').sum(numeric_only=True)
        print(df2)

        #折れ線グラフを作成
        fig = px.line(df2, title='AccountDateごとの支出')
        fig.show()
        #出力内容をPDFでグラフ表示(kaleidoライブラリ)
        fig.write_image("./test.pdf")

window.close()

 

問題 :Plotlyの基本②~棒グラフの書き方を理解する

 

前の問題のグラフ表示方法を参考にして
ExpenseList.csvの支出カテゴリごとの合計額を
Plotly expressを利用して、棒グラフで表示してください。

【書式】:棒グラフ(Plotly express)

import plotly.express as px
px.bar(対象のデータフレーム, title=’支出カテゴリごとの費用’)

 


 

問題 :Plotlyの基本③~円グラフの書き方を理解する

 
 前の問題のグラフ表示方法を参考にして
 ExpenseList.csvの支出カテゴリごとの合計費用の割合について
 Plotly expressを利用して、円グラフで表示してください。

【書式】:棒グラフ(Plotly express)

import plotly.express as px
px.pie(対象のデータフレーム, values=’WithdrawalAmount’, names=’ExpenseItem’)

 

 
====================================
業務でPythonを使ってツールを作ったり、自動化処理を記述したりする機会がある方もいらっしゃると思います。自身のPCでVisual Studio Codeを使って簡単に今回のサンプルを試すことができますので、この機会にPythonに触れる時間を作っていただけると嬉しい限りです。

以上となります。

Category: edu-IT, PythonBy semi3del2022年8月3日Leave a comment
Share this post
Share with Google+Share with FacebookShare with Twitter

Author: semi3del

Post navigation

PreviousPrevious post:Beautiful Soupでスクレイピング~Yahooニュースの見出しとURLの内容を取得してみようNextNext post:Pythonで学び直すアルゴリズムの基礎①~フローチャートと代表的なソートを理解しよう

Related Posts

CodeSandboxでReactのTodoリストを作成してみよう
2025年3月31日
Pythonライブラリ「Scrapy」でスクレイピング~Webサイトからデータを取得してみよう
2025年1月27日
はじめてのLambda~関数のサンプルを作ってみよう
2024年9月18日
GitHub Actions入門~Cloud9でGitHub ActionsのHelloWorldを実行してみよう
2023年11月28日
Web APIをPythonで使ってみる~Fast APIの基礎
2023年9月25日
FigmaからReactのコード生成するプラグインを使ってUIコンポーネントを作成してみよう
2023年7月4日

コメントを残す コメントをキャンセル

Your email address will not be published. Required fields are marked *

Post comment

最近の投稿
  • はじめてのPower Automate for Desktop~フローデザイナーでの基本操作を確認してみよう
  • CodeSandboxでReactのTodoリストを作成してみよう
  • Pythonライブラリ「Scrapy」でスクレイピング~Webサイトからデータを取得してみよう
  • CodeSandboxでReactのフォーム部品を操作してみよう
  • はじめてのLambda~関数のサンプルを作ってみよう
アーカイブ
  • 2025年6月
  • 2025年3月
  • 2025年1月
  • 2024年11月
  • 2024年9月
  • 2024年8月
  • 2024年6月
  • 2024年4月
  • 2024年1月
  • 2023年11月
  • 2023年9月
  • 2023年7月
  • 2023年5月
  • 2023年3月
  • 2023年1月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年6月
  • 2022年5月
  • 2022年3月
  • 2022年1月
  • 2021年11月
  • 2021年9月
  • 2021年7月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年1月
  • 2020年11月
  • 2020年9月
  • 2020年6月
  • 2020年4月
  • 2020年3月
  • 2020年2月
  • 2017年7月