分箱操作后,每个区间的个数自动排序了,如何得到不排序的结果

最近在研究动作编码随工时的变化规律,通过对时间进行分箱操作,以一个小时为一个区间,计算每一个小时某一个动作出现的次数。通过cut函数,得到的结果是按照所有子区间出现的动作次数从大到小排序的。但是个人希望是看到动作出现频率随着工时变化的趋势,按照时间区间从小到大排序的结果。不知如何修改能实现预期的结果呢?

  代码如下:

`import matplotlib.pyplot as plt
import pandas as pd
data=pd.read_csv(r'D:/gaosheng/sany_work/multi-model/190904pro_environment1_2019/20190904181402.csv', encoding = 'gb2312')

df=data.loc[(data['action_code(动作编码)']>63)&(data['action_code(动作编码)']<128)]
bins = range(3628,5718,1)

time = df['total_worktime(总工作时间)']
val = pd.cut(time, 2090)

a = val.value_counts()
b = range(0,2090,1)

ax=plt.subplot(111)
ax.set_xlabel('total_worktime')
ax.set_ylabel('action_code')
ax.set(title='20190904181402')
plt.scatter(b,a)`

sitp_gs
讨论数量: 1

我也遇到了这个问题,答主是用的value_counts()统计的个数吧,这个怎么改进我不知道,但是我用了一下df.grouoby('col').apply(lambda x:x.count()),即用apply函数就可以成功按照区间大小排序(而不是按照频数排序),前提:先将目标列按照大小排序后再分箱pd.cut,再用groupby和apply

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!