ギョウザとシュウマイと統計データ
ギョウザ日本一
テレビなどで餃子の年間支出額日本一は、浜松か宇都宮かそれとも鹿児島かというのをよくやっているかと思います。2024年度は、浜松市が日本一に輝きました。
宇都宮に行った時、街中で食べた餃子はすごく美味しく、お腹がいっぱいにもかかわらず、帰りの駅で餃子をまた食べてしまうくらいでした。宇都宮が上位にはいるのも納得です。きっと浜松や鹿児島の餃子もとても美味しいのだと思います。
この日本一を決める元となっているデータは、総務省が発表している家計調査です。このデータの中には、ギョウザだけでなく様々な品目が扱われており、690項目x52都市(県庁舎在地+政令都市)についての統計データが含まれています。
ギョウザのデータを見ていたら、自分が住んでいる都市や他の品目について調べてみたくなり、簡単に見れる簡易なツールを Python + ChatGTP で作ってみました。
Python x ChatGPT
ツールは、品目をリストから選ぶと、その横に棒グラフで各都市の消費金額を表示してくれるというものです。
コードは、ほぼ ChatGPT に作ってもらいました。すごい時代になったものです。日本語で「こんなの作って」というだけで作ってくれます。
修正は必要でしたが、追加機能も日本語でお願いすると、喜んで!とすぐに作ってくれます。工数がとか文句の一つも言いません。
使ったプロンプト
ChatGPTにお願いした内容です。このくらいの文書で、ほぼ完成品を作ってくれました。
Pythonで次の条件に従ったGUIアプリケーション(main.py)を作ってください:
# 概要
- tkinterを使ってGUIを作成する
- matplotlibを使って棒グラフを表示する
# 詳細
- a401.csv を読み込む
- 1列目と2列目をインデックスにしてpandasのDataFrameを作成する
- データは数値として読み込む
- インデックスのうち2番目の値(階層インデックスの下層)をListboxで左側に表示する
- Listboxの項目を選択すると、該当する行のデータを抽出して右側に棒グラフとして描画する
- 棒グラフは値の降順で並べる
コードの修正
ChatGPTが書いてくれたコードを実行すると、リストボックに表示された項目を選ぶと、それに合わせて右側にグラフを表示してくれます。意図どうりの動作をしています。
最初のコードは文字化けをしていたので、ChatGPTに修正をお願いしまたのですが、うまく動作しません。そのため、これは手動で修正しまいた。
すると今度は、都市名のラベル文字が画面からはみ出てたので、ChatGPTに修正の依頼。
グラフのX軸のラベルの文字が半分画面の外に出て見えません
また、文字フォントが大きく、隣同士の文字が重なり合っています。
きちんと見えるように修正してください
改善はしたのですが、いまいちだったので、ChatGPTの修正を参考に手直しで見た目を修正しました。
このように、ChatGTPに気になるところの修正案を出してもらい、手動で微修正を行うということを繰り返し、完成させました。
ChatGPTのあるある
- 面倒なアルゴリズムを代わりに考えてくれる
- いろんな関数、引数を使いこなしている
- コードが動かないときもある
- エラーが出たとクレームを入れると、こう修正すれば大丈夫ですと自信ありげに言ってくるが、また動かない
シュウマイ日本一
さっそく、出来たツールで、気になっていたシュウマイを調べてみました。
シューマイ日本一を見ると、ダントツで横浜市です。横浜市民は、平均的な都市の2倍、那覇市の8倍シューマイ食べてることになります。また、2〜7位も関東圏の都市です。崎陽軒王国ですね。
551がんばれ。
python基本コマンドをまとめた本です。
Discussion