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

版权声明:本文为博主原创文章,转载请在文章开头注明出处,作者:ChenVast;原文链接: https://blog.csdn.net/ChenVast/article/details/83339236

数据处理时使用最多的就是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官方文档看看,熟悉所有数据操作方法。

猜你喜欢

转载自blog.csdn.net/ChenVast/article/details/83339236