![見出し画像](https://assets.st-note.com/production/uploads/images/110838205/rectangle_large_type_2_ea73bb53146e4e32eb952e6cc9036685.jpeg?width=800)
UiPath×PowerQuery×ChatGPTで最新データの考察をしてみよう
本記事は、2023年7月開催の「UiPathブログ 発信チャレンジサマー」の15日目のブログです。ブログの詳細、参加方法については以下のブログを参照ください。
https://note.com/shumpei_w/n/nd082bdf28853
②このブログ情報は、2023/7/15時点の情報です。
③UiPathはCommunity Edition、Versionは2023.6.1を使用しています。
本記事で紹介する主な内容
Webからデータ(csvのzipファイル)を取得
PowerQueryに最新データファイルパスを書き込んでクエリ更新
Excelの表をChatGPTに投げ、考察結果を得る
作成するワークフローの概要
公表されている男女賃金差異の最新データをもとに表とグラフを作成し、表をChatGPTに考察させるワークフローです。
クエリ、PowerPivot、PowerPivotグラフを設定済みのExcelを使用しています。
ChatGPTでの分析ではUiPathのInternalLabs.GPT.Activitiesに入っている『Ask GPT』アクティビティを使用しています。2023/7/15時点で公式サポートではありませんが、将来的に公式アクティビティ化予定のようです。Azure上に構築されたOpenAIリソースで動きます。
UiPathでChatGPTを使う方法や説明については、UiPath社の@Manabutechさんが丁寧に解説してくださっているブログがありますので、ご参照ください。
分析するデータ
女性の活躍推進企業データベースオープンデータを利用します。
利用時は女性の活躍推進企業データベースオープンデータ利用規約を順守しましょう。
完成イメージ
公表企業数推移、平均賃金差異の企業規模別と業種別のグラフと、ChatGPTによる考察を作成します。
ChatGPTによる考察は、グラフの下にあるセルに記載します。
![](https://assets.st-note.com/img/1689390157417-BMc2u1wiQI.png?width=800)
![](https://assets.st-note.com/img/1689390202220-FzJOVCSLbI.png?width=800)
![](https://assets.st-note.com/img/1689390243689-SXhFXYtH6g.png)
ワークフローの全体図
ワークフローの全体図はこちらです。
初期設定とオープンデータダウンロードは他のワークフローでも使いまわしている為、切り出し処理して都度呼び出しにしています。
![](https://assets.st-note.com/img/1689390643325-C1rxkZLuh8.png)
ワークフローの解説
初期設定
初期設定用のConfig.csvからDictionary型変数に値を格納しています。
使い回しxamlの為、今回のワークフローで使用しないデータも入っています。
今回使用するのは、集計ファイル、URL、GPTプロンプトフォルダ、生データフォルダの4つです。
見切れコードmemo
代入:Config初期化の右辺⇒New System.Collections.Generic.Dictionary(Of String, String)
代入:Dictionary型変数Configに格納し直し左辺⇒o_Config(CurrentRow("Item").ToString)
代入:Dictionary型変数Configに格納し直し右辺⇒CurrentRow("Value").ToString
![](https://assets.st-note.com/img/1689390967193-hdSYCqm9sc.png)
![](https://assets.st-note.com/img/1689391912115-HjS7uhnCC9.png)
プロンプトデータ テーブルを構築
ChatGPTへの質問と回答をまとめて入れるデータテーブルの空箱を作成します。
![](https://assets.st-note.com/img/1689391702463-mtB2Ibu8qr.png)
オープンデータをDL
全体版のzipをダウンロードし、zip解凍を行います。
見切れコードmemo
ダウンロードを待機:全体版 監視対象のフォルダ⇒System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Downloads")
代入:DLしたファイルのフルパスを取得:全体版左辺⇒tmpDLデータ(0).LocalPath
![](https://assets.st-note.com/img/1689392256388-ms7xT6y4yC.png?width=800)
クエリを更新
今回使用したデータのヘッダー名に重複がある為、UiPathの『CSVを読み込み』アクティビティではダウンロードしたデータをヘッダー付きで読込出来ませんでした。
そのため、全体的な処理速度も鑑み、データ整形はPowerQueryで行い、UiPathでは書込み・更新・読込のみを行っています。
(UiPath)ダウンロードしたファイルのフルパスを転記
(UiPath)今日日付を書込み
(PowerQuery)ダウンロードしたファイルを読込み
(PowerQuery)不要列の削除やデータ変換(文字⇒日付)
(PowerQuery)PowerPivotとPowerPivotを更新
(UiPath)PowerPivotをデータテーブルとして読込
また、データテーブルにGPT投入時不要な列(グラフの横軸100位置に線を引くための『合計/フィールド』列)がありますので、『データ テーブルをフィルター』アクティビティで削除しています。
![](https://assets.st-note.com/img/1689394184888-qdkxjSBoeG.png?width=800)
![](https://assets.st-note.com/img/1689394220467-l5u0WktPeu.png)
![](https://assets.st-note.com/img/1689394385442-NlDv4fo06X.png)
![](https://assets.st-note.com/img/1689394407069-vCakCNi33b.png)
![](https://assets.st-note.com/img/1689394346082-fJdxzMUixH.png?width=800)
表を文字列化
ChatGPTにデータテーブルを投入する為に、データテーブルを文字列化します。
![](https://assets.st-note.com/img/1689395762221-256BMehqTP.png)
プロンプトをデータテーブルに格納
プロンプトテキストファイルを読み込み、表文字列化データと共にプロンプトデータテーブルに格納します。
プロンプト文は、今回このように書いてみました。
公表企業数推移
あなたは優秀な人事アナリストです。
次の男女賃金差異の公表企業数経年データをもとに、公表企業数の増減理由を100文字以内で考察してください。
考察前提:
・数値の単位は『企業』
平均賃金差異推移_企業規模別
あなたは優秀な人事アナリストです。
男女賃金差異の企業規模別データをもとに、考察前提を踏まえて企業規模別の特色とその理由を、100文字以内で考察してください。
考察前提:
値は、男性賃金平均を100とした場合の女性賃金平均割合
値が100に近いほど、男女賃金差異が無い
平均賃金差異推移_業種別
あなたは優秀な人事アナリストです。
男女賃金差異の業種別データをもとに、考察前提を踏まえて、特色のある業種とその理由をステップバイステップで考察し、100文字程度に纏めてください。
考察前提:
値は、男性賃金平均を100とした場合の女性賃金平均
値が100に近いほど、男女賃金差異が無い
見切れコードmemo
テキスト ファイルを読み込み:公表企業数推移⇒Config("GPTプロンプトフォルダ")+"\公表企業数推移.txt"
データ行を追加:公表企業数推移⇒{"公表企業数推移", 公表企業数推移プロンプト, 公表企業数推移DTStr,""}
![](https://assets.st-note.com/img/1689395877278-2imx6WAtbA.png)
ChatGPTに投げる
プロンプトデータテーブルに格納したデータをもとに、ChatGPTに質問していきます。
Textが文字列化した表、Question Listがプロンプトテキストファイルから読み込んだ文です。
Question Listは配列なのでTextに対して複数のプロンプト文を設定できます。例:{"総合計は?","2022年までの累計公表数は?"}
『Ask GPT』の出力はList型で、格納されている順番(0スタート)と項目を指定して回答などを取得します。取得出来る項目は3つです。
question :今回の例ではプロンプトテキストファイルから読み込んだ文
answer :ChatGPTの回答
evidence:今回の例では文字列化した表
今回はプロンプト文は1つでanswerのみを取得しますので、
プロンプトデータテーブルに追加する『代入:回答をプロンプトDTに反映』アイティビティの処理は、右辺に『tmpGPT回答(0)("answer")』と記載します。
![](https://assets.st-note.com/img/1689396145808-jzDAChqI5w.png)
ChatGPTの回答をExcelファイルに書き込む
プロンプトデータテーブルから、ChatGPTの回答を各グラフの下にあるセルに転記します。
![](https://assets.st-note.com/img/1689397563468-tN5SpjzKT2.png)
今日日付の集計ファイルを作成
作業が完了したExcelファイル名に、本日日付を付け加えたファイルをコピー作成します。
見切れコードmemo
コピー先⇒system.io.path.GetDirectoryName(Config("集計ファイル"))+""+system.io.path.GetFileNameWithoutExtension(Config("集計ファイル"))+now.ToString("yyyyMMdd")+".xlsx"
![](https://assets.st-note.com/img/1689397774437-wQiil5zN1p.png)
まとめ
自己学習を兼ねて収集・分析しているデータを、作業効率化する為にこのワークフローを作成してみました。
今回実施したワークフローで得られたChatGPTの回答は以下の通りです。
公表企業数推移
2019年から2023年までの間に、男女賃金差異の公表企業数は4から4231まで急激に増加した。これは、政府が男女賃金差異を改善するために、企業に公表を義務付けたことによるものと考えられる。
平均賃金差異_企業規模別
10人未満の企業では男女賃金差異が最も少なく、5001人以上の企業では最も大きい。その理由は、小規模企業では男女間の差別が少なく、大規模企業では男女間の差別が多いため。
平均賃金差異_業種別
サービス業が最も男女賃金差異が少ない業種であることがわかりました。その理由として、サービス業は、男女間の専門性や能力の差が少ないため、賃金差異が少ない可能性があります。また、サービス業では、男女間の働き方の差が少ないため、賃金差異が少ない可能性もあります。
ChatGPTの回答が思ったようにうまく出てくれず、ワークフロー作成よりプロンプト文作成に時間を取られました。
公表企業数推移と平均賃金差異_企業規模別は正しく読み取ってくれていますが、平均賃金差異_業種別はイマイチの回答でした(最も男女賃金差異が少ない業種はサービス業ではなく、医療・福祉業)。
これは私のプロンプト文がよろしくなかった結果かと思いますので、今後はプロンプトの書き方も学んでいく必要があると痛感しました。
しかしながら、無料でOpenAI環境のChatGPTを使用でき、自動化への組み込みも簡単なUiPathは、ChatGPTを使用した業務効率化を探り、実装する良いツールなのではないでしょうか。
皆様も是非試してみてくださいね。
Have a nice Automation!🚀
この記事が気に入ったらサポートをしてみませんか?