我是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']
(带引号)。
您只需要将一个项目附加到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
(我需要)列的最小值,最大值
要在csv文件中查找列的min
和max
,而不使用任何导入,您可以尝试:
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
笔记:
{0: {'max': 5.0, 'min': 1},
1: {'max': 19.0, 'min': 6},
2: {'max': 56.0, 'min': 8},
3: {'max': 45.0, 'min': 10}}
> 0