pd.cut类别为plt.xticklabels

时间:2018-01-30 18:51:30

标签: python pandas matplotlib

我有一些数据,我正在使用pd.cut

对它们进行分类
import pandas as pd
import matplotlib.pyplot as plt

garbage = 50*np.random.rand(100)

g=pd.DataFrame(data=garbage,columns=['a'])
g['a_binned'] = pd.cut(g['a'],bins=np.arange(0,100,5),labels=False)
g['a_binned_labelled'] = pd.cut(g['a'],bins=np.arange(0,100,5),labels=True)

然后我分组并计算

g_binned=g.groupby(['a_binned'])['a'].count()

plt.bar(g_binned.index,g_binned.cumsum().values)

我希望我的xticklabels成为g['a_binned_labelled'].index值的字符串,例如'(10, 15]', '(25, 30]'

我想避免使用pandas绘图功能。

1 个答案:

答案 0 :(得分:2)

由于切割索引按升序排序,因此可以将条形图与数字范围进行对比,并将ticklabels设置为索引的值。这样可以确保正确排列钢筋。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

garbage = 50*np.random.rand(100)

g=pd.DataFrame(data=garbage,columns=['a'])
g['a_binned'] = pd.cut(g['a'],bins=np.arange(0,100,5), )
g_binned=g.groupby(g['a_binned'])['a'].count()


plt.bar(range(len(g_binned)),g_binned.cumsum().values)
plt.xticks(range(len(g_binned)), g_binned.index, rotation=90)

plt.gcf().autofmt_xdate(rotation=90, ha="center")
plt.show()

http://php.net/manual/de/function.get-browser.php