HOME >> 鉄道模型実験室 > Pythonを触ってみよう まず基礎から 

鉄道模型実験室 No.215  Pythonを触ってみよう まず基礎から 

 先回報告した様に、「EXCELのマクロが機能しない」(2022/6/13)をきっかけとし、80の手習いとしてPython を使ったプログラムが完成した。 そして、この言語に興味を抱いたので、改めて基礎から触ってみることにした。

 勉強? 再就職用? いやいや興味の範疇である。 このため、触る という表現にしている。

 

  .

  

■ なぜ、今 Python ?

 最初に、なぜこのPython と言うプログラミング言語に興味を抱いたのかを説明しておこう。

  1. 孫の大学生の学習科目を聞いたときに、プログラミング言語としてPython を学ぶとのことであった。 理系と言えば FORTRAN と思っている年代物の小生は、時代の差を感じた。 今、プログラミングの主流はてPython なのだ。
  2. RaspberryPi を触ったときに、この Python を使っていたのだ。 知らないうちに触っていたのである。
  3. 最近では、EXCEL のマクロの代わりとして、この Python を使ったのだ。 ネットでもマクロの代わりとして推奨されているし、実際に応用してみて、簡単に実施できたことを実感している。
  4. Arduino や PIC 用の制御用プログラムと違って、文字言語を自由に取り扱うことが出来る。 これは、30年程前に、サーバーサイドプログラム用として、少し、Perl に触れたことがあるので、その用途を理解しているのだ。 WEBサイトの情報をいじることが出来そうと感じたのである。
  5. あれこれのプログラム言語を触ってきたが、今だにオブジェクト指向という概念を理解していないのである。 この際、じっくりと勉強(?、いや、触って)みよう。
  6. ただ単に本を読んでも頭の中を通り抜けるだけである。 応用問題に取り組むことによって理解を実感するのである。 後期高齢者の勉強法としてはこれが一番である。
  7. テーマとしては、以前から気にしていたコロナの市内発生患者数の推移を解析できないだろうかと考えている。 これを応用問題とすることにしよう。 発生患者数はネット上で公開されている。

■ 教則本の設定

 以前、購入していた初心者向けの書籍をじっくりと読むことにした。 株式会社翔泳社から出版されている三谷純氏の「Python ゼロからはじめるプログラミング」、2021年5月初版である。 

 

 この書斎の内容として、目的とするオブジェクト指向という概念を丁寧に説明されていることに目がとまったのである。 さらに、第7章の発展と応用の中に、テキストファイルの読み書き、データの集計とグラフ描画、画像処理、Webスクレイピングと言った内容が紹介されており、応用問題に取り組むきっかけになりそうであったのだ。

 要点を忘れないようにメモ書きとしてルーズリーフに書込み、自由に編集できるようにフォルダに収めている。 関連するネット情報も印刷してファイルリングしている。

     ************************************************************************

 最初に、関心のあったオブジェクト指向の説明から読み始めた。 その前の部分は、もう知っているぞ! との思いだったのでパスしたのであるが、説明を読んで行くうちに前に戻る必要があった。 多くの部分が知らないことだらけであり、Python 独自の表現が有ったりしたのである。

 飽きっぽい性格なので、一気に読進むことが出来なかった。 結局、およそ3週間も掛けて踏破出来た。 でも、頭の中にはどれだけ残っているのか心配であるが、必要に応じて読み返せばよいのである。 読んだことがあるという記憶だけでよいのだ。

 

  .

■ 応用問題への挑戦

 読み込んだ知識を実感するために、応用問題に取り組んだ。 それは、コロナに関する市内発生患者数について、サイトで公開されているデータをもとに、自分が欲しいと思っている日ごとの推移グラフに展開することである。

  ****************************************

 市のウエブサイトにて、右のようなデータをPDFファイルとして公開されています。 このデータは、公表日、年代、性別、症状等などが一人ずつ表示されています。 以前は軽症か、無症状か、感染場所などが記されていたが今は表示されていません。

 自分として興味があるのは、年代別の発生件数の推移なのです。 結果から紹介しましょう。 下のグラフが解析結果です。

  .

 

 

 

● グラフから読み取れること

 グラフを見ての通り、10歳未満と10歳代の人の発生状態が、日々の変化に大きくかかわっていることが分かります。 これは、幼稚園と小学校での感染者が、今回の流行の主流であることを意味しています。

 市のホームページでも年代別の割合を第7波分をまとめて円グラフで示していましたが、期間ごとの割合でも、その傾向は理解できます。 しかし、こうやって日ごとの推移をグラフに示すと、より鮮明に理解できると思います。 幼稚園や小学校で感染し、家庭内で家族に広めるというパターンが、第7波の特徴なのでしょうか。

 

 

 

■ 解析方法

 教則本の最終章で紹介されていた「Webスクレイピング」による解析方法でチャレンジしようとしました。 これは、ホームページを記述しているHTMLファイルを取込んで、その内容を分析していく手法です。 HTMLによる記述は、このホームページ作成時に用いている言語なので、その内容は理解しています。 意気込んで取り組んだのですが、対象のページがPDFファイルでしたので、このWebスクレイピング手法では対応できませんでした。 がっくりです・・・・・・・・・・・。

  ***************************************

 そこで、PDFファイルのデータをコピー/ペーストによってメモ帳に写し、データ処理の第一歩と説明されているテキストファイルの読み書きの方法を参考にしました。

 手順を紹介します。

  1. ブラウザでPDFファイルを開き、データ部分をコピーする。
  2. メモ帳を開き、ペーストする。
  3. データ以外の部分(項目名の欄など)を削除して整える。
  4. 日付部のデータをもとに日ごとのデータをコピーし、新しいメモ帳にペーストして日毎のデータファイルを作成する。
  5. このファイルをPythonの作業用フォルダに集める。
  6. 右のプログラムを走らせて、プリントアウトされた日毎の集計データを集計用のメモ帳にペーストして行く。
  7. 完成した集計用メモ帳にて、半角空白をコンマに置換して保存。
  8. このコンマ区切りのデータファイルをEXCELにて読み込む。
  9. グラフ作成を実施。

 完成した集計用メモ帳のデータを下に示す。

  .

 

 

 

 

 

(注意) 上記のPython に記述において、34行と35行の間は、図として示せるように改行を入れていますが、実際には改行を入れていません。 エラーとなってしまいます。

  *****************************************

 当初は、一行ごとのデータをリストとして読み込み、日付毎に分類し上で、年代別の集計を実施しようとしたのですが、なかなかうまく行きませんでした。

 あれこれトライした結果、教則本の例題がヒントになり、年代欄の記述だけに注目してカウントしていけば良いことに気が付きました。 このため簡単な記述で目的を達成することが出来ました。

 でも、事前の処理が面倒ですね。

 

■ まとめ

 この教則本を読み解くことによって、長年疑問に思ってきたオブジェクト指向と言う考え方を理解することが出来ました。 そして、Python と言うプログラム言語の取扱い方も少し習得できたようです。

 昨日、書店にて新しい書籍を発見し購入しました。 SBクリエイティブ社の「Python 自動化仕事術」です。 著者は永井雅明氏です。 内容の中でPDF編集という項目が目に入ったからでした。 Excelの自動化、デスクトップの自動化、Webの自動化、メールの自動化など、他の項目にも注目です。

 まず、PDFの自動化から読み解いて、上記の手順をさらに自動化させる目標が浮かんできました。 さてさて、どうなることやら!

ページトップへ戻る  .


 2022/7/29