查找从CSV文件Python生成的列表的最小值和最大值

时间:2014-09-19 17:56:48

标签: python list csv max min

我试图找到CSV文件的每一行的MIN和MAX值,并将它们附加到列表中的下一个位置,位置5和6.我已设法计算平均值,将其附加到第四个位置然后输出这个从最高到最低,我正在努力找出如何找到每行的MAX和MIN值,所以我可以做同样的事 - 从最高到最低。原始CSV的格式为:Fred,56,78,99,每个用户都在新行上。

任何帮助都会受到赞赏。

import csv
import operator

sample  = open("sampleData.txt", "r")

csv1 = csv.reader(sample, delimiter = ',')

sort = sorted(csv1,key=operator.itemgetter(0))

for i in range( 0, len(sort)):
    sort[i].append((int(sort[i][1]) + int(sort[i][2]) + int(sort[i][3])) / int(len(sort[i])-1))   
sort = list(reversed(sorted(sort,key=operator.itemgetter(4))))
for i in range( 0, len( sort ) ):
print(sort[i][0], round(sort[i][4]))

1 个答案:

答案 0 :(得分:0)

import csv

sample  = open("sampleData.txt", "r")
csv1 = csv.reader(sample, delimiter = ',')

sorted_list = []

for line in csv1:
    print '-- ORIG:', line
    tmp = sorted( [int(i) for i in line[1:]], reverse=True )  # eg: [99,78,56]
    stat_list = [round(sum(tmp)/float(len(tmp)), 2), min(tmp), max(tmp)]
    sorted_list.append( [line[0]] + tmp + stat_list )

for s in sorted_list: print '** NEW: ', s # has ['Fred',99,78,56,78.0,57,99]

您可以使用/修改快速&上面的脏解决方案注意:

  1. 结果是一个列表,其中数字转换为整数。
  2. 计算平均值需要float() - 只需在分母上进行就足以使整个结果成为浮点数。
  3. 列表推导是很好的快捷方式,有效避免循环。
  4. numpy 模块具有内置mean()函数(以及许多其他函数),这些函数非常有用且速度很快,尤其适用于大型数组。
  5. OUTPUT(添加空格)

    • ORIG:[' Fred',' 57',' 78',' 99']
    • ORIG:[' Wilma',' 96',' 4',' 105']
    • ORIG:[' Bar',' 23',' 88',' 65']

      < / LI>
    • 新:[&#39;弗雷德&#39;,78,57,78.0,57,99]

    • 新:[&#39; Wilma&#39; 96,96,4,68.33,4,105]
    • 新:[&#39; Bar&#39;,88,65,23,58.67,23,88]