【数据处理】pandas数据处理优化方法小结

数据处理时使用最多的就是pandas库,pandas在数据处理方面很强大,集成了数据处理和数据可视化。

pandas的可视化使用的是matplotlib。

 

回到主题

问题1:

计算数据的某个字段的所有值,对其字段所有值进行运算

处理的字段数据为时间戳,需要计算该时间戳距离现在的时间,单位为天。

 

一般方法:

使用现在的时间戳减去整个字段的值,得到距离现在的秒数,最后换算成天。

teble.loc[:,'test'] = (1540281246 - table['test'])/(3600*24)

 

优化方法:

先使用pandas的时间处理方法,把时间戳转化为时间字符串

然后使用datetime库获取当前时间,最后减去生成的时间字符串。

table['test'] = pd.to_datetime(table['time'],unit='s')
table['test'] = (datetime.datetime.now() - table['test']).dt.days

改优化方法处理速度为一般方法的两倍。

 

优化思路:

数据处理时尽量避免在字段上直接进行运算,每次运算的运算代价极为昂贵。

pandas字段整体数据运算处理慢,应该避免。

 

问题2:

根据字段的类别,计算其类别对应的某个字段的值的总和。

 

一般方法:

使用for对类别进行遍历,每次遍历都计算类别对应某字段的和。

for i in table1.index.values:
    table2.loc[i,'class'] = int(table1.loc[i,'value'].sum())

 

优化方法:

使用pandas的groupby方法对类别进行归类,然后计算总和。

table.groupby('class',as_index = False)['value'].sum()

 

优化思路:

数据处理时尽量避免使用for等遍历计算与赋值操作,这种操作极为消耗内存资源和计算资源。

尽量使用pandas内置的方法。

 

问题3:

计算数据表中几个字段的和,生成新字段。

 

一般方法:

for i in Table.index.values:
    Table.loc[i,'t'] = Table.loc[i,'t1']+Table.loc[i,'t2']+Table.loc[i,'t3']

 

优化方法:

Table['t'] = Table['t1'] + Table['t2'] + Table['t3']

 

优化思路如问题2所述

 

总结

  • 数据处理是尽量避免遍历、列运算等等操作,可以使用其他方法代替。
  • 多使用pandas内置的方法,这些方法使用简单,性能好,减少代码量。
  • 寻找pandas方法,可以经常去pandas官方文档看看,熟悉所有数据操作方法。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值