-3

我有一组看起来像这样的数据

201206040210 -3461.00000000 -8134.00000000 -4514.00000000 -4394.00000000 0 201206040211 -3580.00000000 -7967.00000000 -4614.00000000 -7876.00000000 0 201206040212 -3031.00000000 -9989.00000000 -9989.00000000 -3419.00000000 0 201206040213 -1199.00000000 -6961.00000000 -3798.00000000 -5822.00000000 0 201206040214 -2940.00000000 -5524.00000000 -5492.00000000 -3394.00000000 0

我想取倒数第二列并找到最小值、最大值和平均值。当列由空格和 - 分隔时,我对如何使用拆分有点困惑。我想一旦我这样做了,我就可以使用 min() 和 max 函数。我已经写了一个 shell 脚本来做同样的事情

#!/bin/ksh
awk '{print substr($5,2);}' data' > /data1
sort -n data1 > data2
tail -1 data2
head -1 data2
awk '{sum+=$1} END {print "average = ",sum/NR}' data2

我只是不确定如何在 python 中执行此操作。谢谢

编辑:决定使用 numpy 来做到这一点。

4

2 回答 2

4
with open("filename") as f:    
    cols = [float(row.split("-")[-2]) for row in f.readlines()]
print min(cols), max(cols), sum(cols) / len(cols)
于 2012-06-06T16:39:04.823 回答
0

这样做:

with open('rows.txt', 'r') as f:
    col=[float(row.split("-")[-2]) for row in f]

print 'min: {} max: {} avg: {}'.format(min(col),max(col),sum(col)/float(len(col)))  

输出:

min: 3798.0 max: 9989.0 avg: 5681.4

如果你想阅读标准输入,这个:

import sys

col=[float(row.split("-")[-2]) for row in sys.stdin]

print 'min: {} max: {} avg: {}'.format(min(col),max(col),sum(col)/float(len(col)))  

将读取标准输入文本来做同样的事情。

于 2012-06-06T17:02:03.913 回答