Upgrade to Pro — share decks privately, control downloads, hide ads and more …

生成AIを活用した初学者向けPython講座

Avatar for Soogie Soogie
September 18, 2025

 生成AIを活用した初学者向けPython講座

StaPy#117 PyConJP2025プロポーザル落選祭り での発表

Avatar for Soogie

Soogie

September 18, 2025
Tweet

More Decks by Soogie

Other Decks in Programming

Transcript

  1. 自己紹介 • 定年間近の事務系サラリーマン 主なツール:Excel • Python歴11年の独学趣味プログラマー • お仕事でもPythonでデータ分析 • PyConJP2016,2018,2021,2024登壇

    今年は落ちました • Python Boot Camp TA ☓ 5回 行けるところなら行く • Python関連書籍を中心に出版前レビューx20冊超 依頼は断らない • 最近は生成AIに頼りがち
  2. 受講対象 • 全職種 • ただし、Pythonの基礎を学んだことがある人 ◦ Pythonコードの説明しないので、読んだこともない人はお断り ◦ 独学OK、本読んで挫折OK、学生時代に習ったけど忘れたOK ◦

    他言語の経験ある人ならYouTube動画ちょっと見ればOK • これからPython学びたい人向けには別途入門講座やるよ →30人(某社従業員の約5%、なぜかエンジニアも数名)が応募
  3. 事前準備 • 某社はIT部門が管理しやすいように全員のPCが同スペックのWindowsマシン • ただしソフトをインストールするには事前申請と審査、そしてIT部門に 作業してもらう必要がある • まずIT部門に根回し ◦ 30人くらい一気に申請が来るので覚悟しといてね

    ◦ 申請者にインストールするのは同じソフト(Python3.13とVSCode) ◦ 受講者に配布する手順書も事前共有 • 受講者には申請書の書き方と手順書を伝授 (プロキシ設定のせいで全員必ずひっかかるpipエラーの回避方法含む)
  4. 生成AIにスクリプトを書いてもらうには(座学) • 要件を具体的に伝える ◦ プログラムは要するに「入力」「処理」「出力」 ◦ 「分析したい」→「〇〇列の人数、平均、SDを算出したい」「AとBの相関を調べたい」 ◦ 入力、出力は文字で説明するよりサンプルファイルを添付すると早い ◦

    過剰に複雑なスクリプトが返ってくることがあるので初心者向けにシンプルに、とつける • いきなり理想形ではなく必要最小限から ◦ 処理をさらに「入力」「処理」「出力」に分解して小分けにする ◦ 複雑なものを最初から作ろうとすると、うまくいかなかったり直したいときにお手上げ ◦ 最初にコア部分を完成させて、徐々に便利にしていく ◦ もちろん簡単なものなら一発で書いてもOK
  5. 生成AIを使ってPython文法を復習しよう(実習) 1. Pythonで1から100までの数字を足す、初心者が文法の復習をするのにお勧めのプログ ラムを1つだけ書いてください 2. forループってなんでしたっけ。あと、どうしてこれが1から100までの合計になるの か(101までじゃないのか)を詳しく教えてください 3. 3の倍数だけを足すように修正してください 4.

    今度は3の倍数のときにFizz、5の倍数のときにBuzz、両方の倍数のときにFizzBuzz、 いずれでもないときに元の数字を出力するように書き換えてください 5. 続いて、FizzBuzzを関数にして、1から100の数字のFizzBuzzの結果を印字するプログ ラムに書き換えてください
  6. 生成AIを使ってPython文法を復習しよう(実習) 1. Pythonで1から100までの数字を足す、初心者が文法の復習をするのにお勧めのプログ ラムを1つだけ書いてください 2. forループってなんでしたっけ。あと、どうしてこれが1から100までの合計になるの か(101までじゃないのか)を詳しく教えてください 3. 3の倍数だけを足すように修正してください 4.

    今度は3の倍数のときにFizz、5の倍数のときにBuzz、両方の倍数のときにFizzBuzz、 いずれでもないときに元の数字を出力するように書き換えてください 5. 続いて、FizzBuzzを関数にして、1から100の数字のFizzBuzzの結果を印字するプログ ラムに書き換えてください 6. Pythonの基本的なデータ型について教えてください 7. リスト型について、特に操作方法を詳しめに教えてください
  7. お勧めセットの中身 分類 ポイント パッケージ名 データ分析定番 データ分析のスターターキット pandas, numpy, jupyterlab, tqdm

    統計処理・機械学習 機械学習・統計分析の三種の神器 scipy, statsmodels, scikit-learn Excel操作 Excelファイル処理の三種の神器 xlrd, openpyxl, xlwings グラフ・可視化 データ分析結果をビジュアル化 matplotlib, plotly 簡易Webアプリ作成 データ分析と親和性が高いWebアプ リ作成ツール streamlit コードフォーマッター Pythonスクリプトを読みやすく自動成 型 black, isort, jupyterlab-code-formatter
  8. 実習の前に(座学) • 実習では面倒な形のExcelファイルを読み込む • 要件の書き方振り返り ◦ 「入力」「処理」「出力」を具体的に ◦ 処理は小分けに •

    最初からすごいのを作ろうとするとハマるリスクが増大 ◦ 元のファイルをそのまま読み込みたい ◦ 読み込むファイルをUIで選びたい ◦ 集計内容や集計列をUIで指定したい ◦ 集計結果をいい感じに整形してパワポに貼り付けたい →全部できるっちゃできる。でもハマる • コア(集計)処理だけにする ◦ ファイルは扱いやすい形に手で加工してから読み込む
  9. VS Codeのセットアップ(実習) 1. D:¥Home¥ai-lessonというフォルダを作る 2. そこに「import this」だけ書かれたzen_of_python.pyをコピー 3. 作成したフォルダをVS Codeで開き、zen_of_python.pyを開く

    4. VS CodeがPython拡張を入れるようお勧めしてくるので入れる 5. zen_of_python.pyを実行してみる これで全員が新規スクリプトをコピペして実行する環境が完成
  10. Excelファイルを読み込む(実習) あなたは優秀なPythonプログラマーです。 以下の要件を満たすPythonスクリプトを書いてください # 要件 - 添付したsample2.xlsxを読み込む - 列ごとの解答人数と、回答の平均値を算出する -

    集計結果は、質問、人数、平均値の3列にしてresult.xlsxとして出力 # 注意事項 - 初心者にもわかりやすくシンプルな設計にする - 適切なコメントをつける - スクリプトの解説をつける 入力 処理 出力
  11. 複数のシートを1つにまとめる(実習) # 要件 - 添付した複数シート.xlsxを読み込む - 「サマリ」シート以外のすべてのシートを読み込む (データ行数がすべて等しいはず) - 読み込んだデータを横に並べて1人1行のデータを作る

    (氏名でマッチングせず単純に横に並べる) - 各シート共通仕様 - 1行目は読み込まない - 2行目が列名。2行目に値がないときは3行目が列名 - データは4行目以降 - シートを識別するため列名末尾にシート名をつける 例(氏名_1回目) - 結合したデータを「シート結合結果.xlsx」として保存する 入力 処理 出力
  12. 複数のファイルを1つにまとめる(実習) # 要件 - dataフォルダ(サブフォルダ含む)の回答ファイルをすべて読み込む - 回答ファイルは添付した「回答(ここに名前).xlsx」と同じレイアウト - 回答ファイルのK列にQで始まる設問ID、L列に回答(1~4またはブランク) -

    読み込んだファイルの回答をまとめて回答一覧を作る - 回答一覧のレイアウトは「ファイル名、社員番号、氏名、設問ID、Q1~Q40」 - 出来上がった回答一覧は「回答一覧.xlsx」というファイル名で出力する 入力 処理 出力