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

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

新規登録して質問してみよう
ただいま回答率
85.31%
Python

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

pandas

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

Q&A

解決済

2回答

2047閲覧

pandasのpivot_tableで列方向のみの小計を表示したい

koko39

総合スコア1

Python

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

pandas

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

0グッド

0クリップ

投稿2022/07/28 07:30

こんにちは。

pandasの機能であるpivot_tableを用いて、
小計を表示する際に、行方向の小計は表示させずに、列方向のみを表示させたいです。

margins=Trueとすると、行、列双方に表示されてしまうため、悩んでいます。

お手数ですが、ご回答いただけると幸いです。
よろしくお願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

Is it possible to exclude the total row (margins) from styling (subset) in a pandas pivot tableのとおりですが、以下のようにAll行を削除すればよいかと思います。
PerformanceWarning出ますが。

Python

1import pandas as pd 2import numpy as np 3 4df = pd.DataFrame({"A": ["foo", "foo", "foo", "foo", "foo", 5 "bar", "bar", "bar", "bar"], 6 "B": ["one", "one", "one", "two", "two", 7 "one", "one", "two", "two"], 8 "C": ["small", "large", "large", "small", 9 "small", "large", "small", "small", 10 "large"], 11 "D": [1, 2, 2, 3, 3, 4, 5, 6, 7]}) 12df = df.pivot_table(values='D', index=['A','B'], columns=['C'], aggfunc=np.sum, margins=True) 13df = df.drop(index='All', axis=0) 14print(df) 15""" 16C large small All 17A B 18bar one 4.0 5.0 9 19 two 7.0 6.0 13 20foo one 4.0 1.0 5 21 two NaN 6.0 6 22"""

投稿2022/07/28 08:17

can110

総合スコア38352

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

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

koko39

2022/07/28 08:39

早速のご回答ありがとうございます。 試してみましたところ、下記エラーが出てしまい、上手く進むことができませんでした。 KeyError: "['All'] not found in axis" 実際のコードは下記のように書いています。 どの部分を修正すべきでしょうか? df2 = df1.pivot_table(index="商談 所有者", columns= "計上Q", values="金額", aggfunc='sum', margins=True, margins_name='合計') df3 = df2.drop(index='All', axis=0) df4 = df3.sort_values('合計', ascending=False)
can110

2022/07/28 09:13

margins_name='合計'と明示的に指定しているので、それに合わせる必要があると思います。
koko39

2022/08/04 00:21

ありがとうございます。 無事に、実現できました!
guest

0

iloc[:-1] を指定するなど。

python

1import pandas as pd 2 3titanic = pd.read_csv('titanic.csv') 4 5df = pd.pivot_table(titanic, index='Survived', columns='Pclass', values='Age', 6 margins=True).iloc[:-1] 7 8print(df) 9 10# 11Pclass 1 2 3 All 12Survived 130 43.695312 33.544444 26.555556 30.626179 141 35.368197 25.901566 20.646118 28.343690

投稿2022/07/28 08:14

melian

総合スコア21118

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

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

koko39

2022/07/28 08:40

早速ありがとうございます。 下記のようにしましたところ、無事、列方向のみの小計を表示することができました。 df2 = df1.pivot_table(index="商談 所有者", columns= "計上Q", values="金額", aggfunc='sum', margins=True, margins_name='合計').iloc[:-1]
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問