【Python】CSVをHTMLに変換する方法

こんにちは。のっくんです。

csvファイルをHTMLに変換する方法について紹介します。

使用するcsvファイル

使用するcsvファイルは、前回の記事

https://ymgsapo.com/scraping_soccer_ranking

で取得したサッカーのランキング表にしましょう。

中身は以下の通り。

このデータをHTMLに出力して見やすくしたり、順位によって背景色が変わるようにしたいと思います。

その前に、、

よく見ると、1列目と最後の列のデータがありませんね。

ネットからスクレイピングしてくると、画像などが入っていた箇所が空欄になってしまいます。

HTMLに出力する前にこのような列は削除しましょう。

pandasを使う

pandasを使って空欄が入った列を削除してみます。

to_html_pandas.py

read_csvでランキング表を読み取っています。

データが読み取れなかった箇所は欠損値(NaN)として扱われます。

このNaNが1つでも入った列を削除するには、dropnaを使っています。

axis=1というのは、列を削除するという意味です。

how=”any”は、1つでもNaNがあったら削除するという意味です。

いい感じに整理されました。

HTMLに変換する

pandasの便利なところは、HTMLに変換する関数があることです。

先ほどのコードを拡張してみます。

to_html_pandas.py

html_stringには、HTMLを表示するときに必要な基本的な<head>や<body>を入れています。

to_html関数の中では、スタイルシートのクラス名(mystyle)を指定したり、インデックスは読み込まないようにしています。

コードを実行するとHTMLファイルが出力されるので、ブラウザ開くと、、、

見やすくなりました。

使用したスタイルシートも載せておきます。

mystyle.css

nth-child(行番号)で行の背景色を変更しています。

上位2チームは緑、下位2チームは赤にしています。

(Jリーグではそれぞれ自動昇格圏、自動降格圏と呼ばれます。)

tr:hoverを指定し、表にマウスポインタを置くと背景がシルバーになるようにしています。

実際のページはこちら:

Soccer Talk

以上。