如何解决带有两行的Pandas dataframe Plotly折线图
我有一个如下的pandas数据框,我想用这些数据生成一些图表。 “名称”列是帐户的名称,“数字”列是每个计数下的用户数,而月份列是每个帐户在每个月的登录时间。
Acc User Jan Feb Mar Apr May June
Nora 39 5 13 16 22 14 20
Bianca 53 14 31 22 21 20 29
Anna 65 30 17 18 28 12 13
Katie 46 9 12 30 34 25 15
Melissa 29 29 12 30 10 4 9
1st:我想监视1月到5月的登录趋势。一行显示了比安卡的登录名,另一行显示了其他人的登录名。
2nd:我想监视从一月到五月的登录百分比变化。一行说明了Bianca的登录百分比变化,另一行说明了其他所有人的登录百分比变化。
感谢您的时间和帮助。我是初学者。我对此表示感谢!非常感谢!
解决方法
我建议最好的分组方法是使用分类法。 pct_change不是直接的聚合函数,因此要获取它要花费更多的精力。
import io
import matplotlib.pyplot as plt
df = pd.read_csv(io.StringIO("""Acc User Jan Feb Mar Apr May June
Nora 39 5 13 16 22 14 20
Bianca 53 14 31 22 21 20 29
Anna 65 30 17 18 28 12 13
Katie 46 9 12 30 34 25 15
Melissa 29 29 12 30 10 4 9"""),sep="\s+")
# just setup 2 plot areas
fig,ax = plt.subplots(1,2,figsize=[20,5])
# want to divide data into 2 groups
df["grp"] = pd.Categorical(df["Acc"],["Bianca","Others"])
df["grp"].fillna("Others",inplace=True)
# just get it out of the way...
df.drop(columns="User",inplace=True)
# simple plot where function exists directly. Not transform to get lines..
df.groupby("grp").sum().T.plot(ax=ax[0])
# a bit more sophisticated to get pct change...
df.groupby("grp").sum().T.assign(
Bianca=lambda x: x["Bianca"].pct_change().fillna(0)*100,Others=lambda x: x["Others"].pct_change().fillna(0)*100
).plot(ax=ax[1])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。