質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.36%
コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

2141閲覧

python pandas.pivot_tableにキャプションを付けたい

mogutera

総合スコア3

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/08/26 15:16

前提・実現したいこと

pythonでwebスクレイピングした情報をもとに、ピボットテーブルを作成し、
自身のサイトにそのテーブルを載せることを目的としたプログラムを作成しています。

その前段として、リスト形式のデータからピボットテーブルを作り、
htmlを作成することまでできたのですが、そのテーブルにキャプションを付けられず困っています。

アドバイス頂戴できると幸いです。

発生している問題・エラーメッセージ

性別 女 男
果物
みかん NaN 4.0
りんご 6.0 3.0
レモン 5.0 NaN

というテーブルの上に「果物一覧」というキャプション(タイトル)が表示されてほしいのですが、
何も表示されません

該当のソースコード

import pandas as pd

a=["りんご","みかん","レモン","りんご"]
b=["男","男","女","女"]
c=[3,4,5,6]
df= pd.DataFrame({"果物": a, "性別" :b,"個数":c})
print(df.pivot_table(values = "個数", index = "果物", columns = "性別"))
df_pivot=df.pivot_table(values = "個数", index = "果物", columns = "性別")

df_pivot.style.set_caption("果物一覧") #←この行で作成したピボットテーブルに\キャプション(表タイトル)がつくという認識なのですが。。。
print(df_pivot)
html=df_pivot.to_html()

text_file = open(r"C:\MypythonScript\index.html","w")
text_file.write(html) #←この行で作成したHTMLを開いてもやはりキャプションはついていません
text_file.close()

試したこと

.style.set_captionを用いてキャプションを付けられるという認識なのですが、うまくいかず詰まっております。
エラーは特に出ていません。

何卒よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

style.set_captionメソッドで設定されたキャプションを含めたHTMLを生成するには、従来のto_htmlではなく、キャプションを設定済みのスタイルに対してstyle.renderメソッドを使います

Styler Object and HTML

The above output looks very similar to the standard DataFrame HTML representation. But the HTML here has already attached some CSS classes to each cell, even if we haven’t yet created any styles. We can view these by calling the .render() method, which returns the raw HTML as string, which is useful for further processing or adding to a file - read on in More about CSS and HTML.

キャプションを設定したスタイルは、style.set_captionの返り値として得られるので、これを保存しておかないといけません。
その他のスタイル(背景色など)を追加設定する際にも、「今までの設定が行なわれたスタイル」に対して新たなスタイルを設定するメソッドを実行し(チェーン可能)、返り値を保存する必要があります。

Python

1import pandas as pd 2 3a = ["りんご", "みかん", "レモン", "りんご"] 4b = ["男", "男", "女", "女"] 5c = [3, 4, 5, 6] 6 7df = pd.DataFrame({"果物": a, "性別": b, "個数": c}) 8print(df.pivot_table(values="個数", index="果物", columns="性別")) 9df_pivot = df.pivot_table(values="個数", index="果物", columns="性別") 10 11style = df_pivot.style.set_caption("果物一覧") 12html = style.render() 13print(html) 14 15with open("sample_style.html", "w", encoding="utf-8") as text_file: 16 text_file.write(html)

style.renderで得られる文字列は(CSSを記載するための)style要素とtable要素です。

サンプル画像

投稿2021/08/26 22:31

Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mogutera

2021/08/28 05:03

迅速な回答ありがとうございます! キャプションを付けられました! 詰まっていたので助かりました・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問