如何从csv文件计算字符串的最小值?

问题描述 投票:1回答:2

我是Python的初学者,我想知道如何计算csv文件中的最小值/最大值,平均值,中值。注意,不使用csv模块或任何排序。我只想使用'阅读/打开文件'方法。

所以在输入代码来读取文件后,这就是我写的(我只想读取文件的第二列):

with open("data.csv", "r") as x:
            second = []
            for line in x:
                spl = [float(data.split(',')[1]) for data in x]
                second.append(spl[0:6])
            print(second)

            lowest = min(second)
            print(lowest)

当我执行此操作时,Python打印出两个语句(第二列,就像我想要的那样)但打印出来,例如[x, y, z]而不是实际计算最小值。

当我尝试省略float行中的spl = [...]部分时,Python只执行相同的操作,而不是['x','y','z'](带引号)。

python python-3.x csv
2个回答
0
投票

您只需要将一个项目附加到second,如果您只想要第二个项目([... for data in x]),则不需要在浮动周围使用[1]

with open("data.csv", "r") as x:
            second = []
            for line in x:
                spl=float(line.split(',')[1])
                second.append(spl)
            print(second)

            lowest = min(second)
            print(lowest)

输出:

$ ./minVal.py
[124.0, 32.0, 663.0, 3.0, 6234.0, 73.0, 7.0]
3.0

0
投票

(我需要)列的最小值,最大值


要在csv文件中查找列的minmax,而不使用任何导入,您可以尝试:

with open("stack_csv_max_val.csv", "r") as f:
    s = f.readlines()

ls =  [x for x in [x.strip().split(",") for x in s]]
results = {}
for l in ls:
    ll = [float(x) for x in l]
    for f in range(0, len(ll)):
        if not f in results:
            results[f] = {"min": 1000000, "max": 1}
        if ll[f] > results[f]['max']:
            results[f]['max'] = ll[f]
        elif ll[f] < results[f]['min']:
            results[f]['min'] = ll[f]

print(results)
# print(results[3]) # min/max of column 4

即:yahoox

file.csv

即输出:

1,6,8,10
2,19,56,45
3,6,9,11
5,6,9,22

笔记:

  1. 我确信没有进口就有更简单的方法,这只是一种方法。
  2. 上面的代码假设csv中的所有数字都是{0: {'max': 5.0, 'min': 1}, 1: {'max': 19.0, 'min': 6}, 2: {'max': 56.0, 'min': 8}, 3: {'max': 45.0, 'min': 10}}
  3. > 0
© www.soinside.com 2019 - 2024. All rights reserved.