这可能是一个简单的任务,但是我对使用python进行绘制并不熟悉,并且正在努力将逻辑转换为代码。我有如下两列。 0表示未搅动,1表示搅动。性别是对象列,搅动是类别列
gender|churned
--------------
male |0
male |1
female |0
female |1
female |1
male |1
我只是想要一个堆叠的条形图(如果不是正确的图形选择,请纠正我),在x轴(搅动列)上具有0和1,对于这2个类别的每一个,我都希望有一个堆叠的条形图与2每种性别都有不同的颜色,分别表示0岁以下(未搅拌)的男女总数和1岁以下(经搅拌)的男女总数。
我尝试过:
df.Churn.value_counts().plot(kind='bar')
它给了我0和1的总数,但我也需要除以性别。
希望我有道理
答案 0 :(得分:1)
您可以将其放在桌子上
import pandas as pd
df = pd.DataFrame({'gender':['male','male','female','female','female','male'],
'churned':[0,1,0,1,1,1]})
pd.crosstab(df['churned'],df['gender']).plot(kind="bar",stacked=True)
答案 1 :(得分:1)
如果要使用交互式版本,则可以使用hvplot:
import pandas as pd
import hvplot.pandas #noqa
# 1. CREATE DF:
churn = pd.DataFrame({"gender":["male","male","female","female","female","male"],
"churned":[0,1,0,1,1,1]})
churn
Out[2]:
gender churned
0 male 0
1 male 1
2 female 0
3 female 1
4 female 1
5 male 1
# 2. GROUP THE DATA BY "churned" THEN "gender":
plot_me = churn.groupby(["churned","gender"])[["gender"]].count().rename(columns={"gender":"count"})
plot_me
Out[3]:
count
churned gender
0 female 1
male 1
1 female 2
male 2
# 3. PLOT:
plot_me.hvplot.bar(stacked=True,color=["maroon","teal"],line_width=3,
line_color="black",height=350,width=500)
Out[4]: