我编写了一个python脚本来计算文件中项目的最小值、最大值和平均值。 但是程序在几百行之后运行得越来越慢。我可以让perl非常快地完成同样的事情,但是我想学习Python中正确的方法。有什么办法加快速度吗?在
import sys
import re
filename = sys.argv[1]
resultFile = open(filename, 'r')
netTbl = {}
count = 0;
# Target file line example: "itemA: 0.110"
matchLine = re.compile( r"(.*):\s+([0-9\.]+)" )
for line in resultFile:
result = matchLine.match(line);
if( result ) :
count +=1
if( count%10000 == 0 ): print str(count) + ":" + str(len(netTbl))
name = result.group(1)
value = result.group(2)
if( netTbl.has_key(name) ):
( minVal, maxVal, avgVal, numOfInsts ) = netTbl[name]
if( maxVal < value ): maxVal = value
if( minVal > value ): minVal = value
avgVal += value
numOfInsts += 1
netTbl[name] = ( minVal, maxVal, avgVal, numOfInsts)
else:
netTbl[name] = (value, value, value, 1)
输入文件如下所示
^{pr2}$我知道答案了。我忘了把价值投给浮动。所以绳子越来越大了。更正代码
#value = result.group(2)
value = float(result.group(2))
我建议使用pandas进行统计计算,以下是工作示例:
产出量为:
^{pr2}$Pandas使用简单的SQL-like-group-by语法,因此它易于使用且计算速度快
相关问题 更多 >
编程相关推荐