在python中找到一列数据的最小值和平均值

时间:2012-06-06 16:35:26

标签: python

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

  

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来做到这一点。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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)))  

将读取stdin文本以执行相同的操作。