データ共有の未来: 自治体のイベント情報をもっとプログラマーに優しく

ふと、普段働いているところのイベントをなんとなく知りたいと思いました。ホームページには一覧が公開されていました。

この自治体です。

www.city.nagoya.jp

ただ、情報の共有という観点からするとちょっとどうよというような内容のフォーマット。

オープン化を進めるならRSSとかXMLとかCSVで共有してくれてもいいじゃないの?とか思ったりしなかったり。つまりHTMLファイルでしか公開がされていないという不満です。入力データの形式は揃っていそうなので、入力側にはCMSが入っているんだろうな~と推測していますが、なんとなくデータの設計も微妙というか詰めきれていないような感じなんですよね。

というのも、内容を見てみると、「日付、曜日、URL、イベント名、ジャンル」という形式。ただ、せっかくのイベント情報を公開しているのにどこで行われいるのかわかるフィールドがないとかいうのは気になります。エリアが広いため、開催地が一箇所ではないこともあるからこんな感じにしたのかなと推測しましたけど、場所を軸にして検索ができないのはちょっと残念かな~。

せっかくの情報もこれだと使い道がない!俺がなんとかする!とかいう高尚な考えは持っていないですけど、うまく使えればもっと助かる人もいるんじゃないかなと思います。

今回はPythonBeautifulSouprequestsのライブラリを使用してこのHTMLファイルをスクレイピングしてCSVファイルにする練習をするという内容を書いてみようかなと思います。

続きを読む

Pythonでの多言語翻訳の探求

前回のエントリーでは音声ファイルからテキスト化を行いましたが、日本語音声から日本語テキストへの変換でした。実は英語の変換に関してはWhisperの解析時のオプション(task=”translate”)の追加を行うだけで行えるのですが、英語以外の言語に変換するにはどうすればと悩んでしましました。

英語だけでもいいじゃないかということもありますが、自分の住んでいる地域はブラジル(言語はポルトガル語)の方が結構いるので、そういう方々に向けて情報を出すのは比較的需要あるかな?ってことで調べてみました。

【参考】

外国人住民数を国籍別に見ると、ブラジルが60,397人で、全体の21.1%を占め、ベトナム49,719人(17.3%)、中国43,918人(15.3%)、フィリピン41,918人(14.6%)、韓国・朝鮮28,864人(10.1%)、ネパール12,844人(4.5%)と続いています。

https://www.pref.aichi.jp/soshiki/tabunka/gaikokuzinjuminsu-2022-12.html

続きを読む

Whisperを使ってYouTube字幕ファイルの作成がこれほど簡単だったなんて!

少し前のエントリでYouTubeから音声データをダウンロードするといった内容のことをやっていたのですが、それならその音声データをWhisperに入力し、生成された音声解析のテキストデータをYouTubeの字幕ファイルに変えてみたらどうなるかなと思っていました。Whisperのログ出力はほぼそのままでも字幕ファイルフォーマットであるSRTファイルに近い出力フォーマットになっているからです。

uepon.hatenadiary.com

ただ、そのまま取り出した文字データはタイムコードのないモノになるので、後で処理を行うと面倒なことになります。今回はWhisperを使用し、ログファイルとして出力されたデータをファイル化してYouTubeでも使用可能な字幕データにしてやろうという試みです。

続きを読む

日経Linux11月号に寄稿しました!おすすめPython小ネタを紹介!

日経Linux11月号が今月発売されています。今回もちょっとだけですが、記事を書かせていただいていたので、 発売されているところを見に行きました。書かせていただいていると、こういうのことが楽しかったりする😀

内容としては「お薦めコマンド&スクリプト」のPython部分を書かせていただいております。 自分はあまりPythonについては詳しくなかったのですが、この記事に合わせてかなり勉強をさせていただいたかなと思います。 これまでもPythonのプログラムを書くことはありましたが、人にコードが見られると思うと、それなりのレベルや、書き方にしないと恥ずかしいですし…

内容としては便利な小ネタということで以下のようなものになります。

  • WebPファイルからJPEGファイルへの変換
  • HEICファイルからJPEGファイルへの変換
  • Pythonクリップボードの連携
  • Slackへの投稿
  • Whisperによる音声解析
  • ChatGPT APIの使用

を書いています。他にも小ネタはあったのですが、その中でも使えそうな内容が採用となっています。Notionへのデータの格納なども書いてみたかった😂 今回の記事でかなりPythonについても書けるようになり初学者から初心者のレベルにはなれたかも。

PythonUbuntu 23.04からはPEP 668の影響によってすんなりpipが使えないとかいう罠もありましたが、なんとか完成までこぎつけました。 編集のご関係者の方々ありがとうございました。

おわりに

先日、X(旧Twitter)では次号1月号で休刊という情報がでていました。

今年に入ってからは何度か寄稿の機会をいただいていたのでとてもさみしいです。 これまでありがとうございました😢

CSVデータの入力ミスを瞬時に検出!pandasで欠損値をチェックする方法

先日大量のデータの入ったCSVファイルを渡されたのですが、処理を作ってもうまく処理できずエラーが発生してしまい、怒りが爆発してプログラムを見直していたのですが、最終的に判明したのはデータの入力なし・・・そんなことあるのかよ😢

そんな感じの悲劇が2度と起きないようにするための簡単コードをメモっておきます。

データの入力ミス(入力忘れ?)を検出するコード

CSVファイルを開いて各行をsplit()していくのもいいのですが、今回はpandasを使用しました。こっちのほうが記載が少ないですしね。ライブラリは以下のようにインストールしておきます。

$ pip install pandas

そして、カウントするプログラムは以下のような記述でOKです。CSVファイルの読み込み後にdata.descrive()を使用してもいいのですが、データ数が多いと見るだけでも大変なので、今回はデータのない箇所の数だけを返してもらうことにしました。

import pandas as pd

def calculate_missing_values(file_path):
    # ファイルを読込
    data = pd.read_csv(file_path)    
    # 各列の欠損値の数を計算
    missing_values_count = data.isnull().sum()
    return missing_values_count

おわりに

pandasは強力すぎて死ねる。未来に同じことが起きませんように…

/* -----codeの行番号----- */