【发布时间】: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