首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >引用分组列作为pyplot中的x轴

引用分组列作为pyplot中的x轴
EN

Stack Overflow用户
提问于 2018-08-27 15:49:00
回答 1查看 135关注 0票数 1

我有一个如下结构的数据帧:

代码语言:javascript
复制
custid  province    year    features... label
123     AB          2005    ...         0
124     ON          2006    ...         1
...
999     QC          2012    ...         1

最后一列是标签/目标。

我有一个lambda函数:

代码语言:javascript
复制
def churn_per_feature(x):
    d = {}
    d['churn_count'] = (x['label'] == 1).sum()
    d['cust_count'] = x['custid'].nunique()
    d['churn_rate'] = d['churn_count'] / float(d['cust_count'])
    return pd.Series(d, index = ['churn_count', 'cust_count', 'churn_rate'])

我对两个变量provinceyear进行了分组

代码语言:javascript
复制
churn_per_province_year = df.groupby(['province', 'year']).apply(churn_per_feature)

我正在尝试pyplot,这是一个带有线条的单一图表,其中x轴是years,每一条线代表province (到目前为止,我只选择了4个客户数量最多的省份,所以它不在循环中):

代码语言:javascript
复制
plt.plot(years, churn_per_province_year[churn_per_province_year['province'] == 'ON']['cust_count'])
plt.plot(years, churn_per_province_year[churn_per_province_year['province'] == 'AB']['cust_count'])
plt.plot(years, churn_per_province_year[churn_per_province_year['province'] == 'BC']['cust_count'])
plt.plot(years, churn_per_province_year[churn_per_province_year['province'] == 'QC']['cust_count'])
plt.show()

我不知道如何引用years部件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-27 16:12:17

你想要下面这样的东西吗?

代码语言:javascript
复制
df.groupby(['year', 'province']).apply(churn_per_feature)['cust_count'].unstack().plot(legend=True)

使用matplotlib plt.plot()

代码语言:javascript
复制
churn_per_province_year = df.groupby(['year', 'province']).apply(churn_per_feature).reset_index()
#from matplotlib import pyplot
#years = range(2005, 2019) # add the right range here
plt.plot(years, churn_per_province_year[churn_per_province_year['province'] == 'ON']['cust_count'], label='ON')
plt.plot(years, churn_per_province_year[churn_per_province_year['province'] == 'AB']['cust_count'], label='AB')
plt.plot(years, churn_per_province_year[churn_per_province_year['province'] == 'QC']['cust_count'], label='QC')
plt.legend()
plt.show()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52034841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档