2012-06-06 119 views
-3

我有一组数据,看起来像这样找到最小最大值和一列数据的平均值在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

我想TA在倒数第二列找到最小值,最大值和平均值。 林有点困惑如何使用拆分当列由空间和 - 分隔。 我图一次,我可以使用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来做到这一点。

+8

你确定'-'是分隔符而不是负号吗? –

+1

yep im positive – Rtrader

+2

供将来参考:如果您对某个问题改变了主意,请不要删除该问题。否则,未来的读者将不会知道答案所指的是什么。 – abought

回答

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) 
+0

你确定cols是列而不是行吗? – xvatar

+0

的cols只有一列......第二到最后一个 –

+0

+1好得多现在 – Levon

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))) 

将读取标准输入的文本做一样的东西。

相关问题