【问题标题】:Cross tab with mean of one column具有一列平均值的交叉表
【发布时间】:2021-08-06 02:54:47
【问题描述】:

使用 Pandas 和 Matplotlib,如何使用两列的交叉表制作条形图,一列只是平均值?这是我的数据集的示例:

score    lunch    setting
  70       N         Sub
  69       N         Sub
  62       Y         Urb
  78       N           R
  60       Y           R
  58       Y         Urb
  80       N         Sub
  75       N         Urb
  70       N           R
  70       N         Urb
  69       N         Sub
  70       N         Urb

我想做的是得到

import pandas as pd
import matplotlib.pyplot as plt


df = pd.read_csv("my file path")

pd.crosstab(df["score"], df["lunch"]).plot(kind="bar", figsize=(8,2))

plt.show()

#pd is pandas and df is my data frame

“分数”列是所有分数的平均值,而不是单个分数。

在运行plt.show() 之后,这是我得到的情节:

我想要的是有两个附加的条形图,其中 Y 作为午餐的平均得分,'N' 和午餐的平均得分,'Y' 值。

我试过了

df_grouped = df.groupby(["lunch"])["score"].mean()
df_grouped.plot(kind="bar", figsize=(7,2)

这看起来不错,只是我希望能够获得图例并将两个条并排。这是先分组后的样子:

我想知道是否可以先使用crosstab 而无需分组?我需要保留图例,并且还需要并排放置两个条。

我的想法是这样的:

pd.crosstab(df["score"].mean(), df["lunch"]).plot(kind="bar",figsize=(6,3))

使用crosstab 获取每顿午餐的平均值。

【问题讨论】:

    标签: python pandas dataframe matplotlib


    【解决方案1】:

    试试to_frame

    df.groupby('lunch')['score'].mean().to_frame().T.plot.bar()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-09
      • 1970-01-01
      • 1970-01-01
      • 2017-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多