python多进程groupby reset_index的注意点

1:在Python中,一个比较大的数据,从float64转成float32的时候,会有数值的变化

>>> import pandas as pd
>>> 
>>> a = pd.DataFrame()
>>> a['key'] = [998899663]
>>> print(a)
         key
0  998899663
>>> a['key'] = a['key'].astype('float32')
>>> print(a)
           key
0  998899648.0

在数据算法中,如果key是一个特征也就无所谓了,一点精度。但是key要是进行merge的字段的就危险了,所以慎用

但是int转换的时候,int8 16 32 64,只要数值大小在对应的范围里,就不用担心会造成精度问题

2:python多进程groupby的注意点

def muti_row(indexes,indexes_name,i,size):
    data_groupby = data.groupby(['item_id'], as_index=False)['uid'].agg({'photo_user_count': 'count'})
    return data_groupby 
    
def muti_row_1(indexes,indexes_name,i,size):
    data_groupby = data.groupby(['item_id'], as_index=False)['uid'].agg({'photo_user_count': 'count'}).reset_index(drop=True)
    return data_groupby 
    
   
##开启多线程
...
p.close()
p.join()
print('feature finish')
data_groupby = pd.concat([i.get() for i in res])
data_groupby_1 = pd.concat([i.get() for i in res])


muti_row、muti_row_1虽然只有.reset_index的区别,但是会造成最终的data_groupby_1比data_groupby多一个index字段

所以要注意了

 

 

 

你可能感兴趣的:(机器学习)