For循环读取Python中的多个.csv文件
我开始使用Python,这里有以下问题For循环读取Python中的多个.csv文件,python,for-loop,standard-deviation,Python,For Loop,Standard Deviation,我开始使用Python,这里有以下问题 计数+=1和其他几行的缩进错误 不扫描目录中的所有.csv文件。当我运行这个脚本时,它只在第一列显示一个.csv文件的输出,而不是多个.csv文件的输出。我使用的for循环命令一定有问题 我需要取文件中每行的标准偏差,取每个文件中所有行的标准偏差的平均值 #!/usr/bin/env python import os print "Filename, Min, Max, Average, Mean of Std" for file in os.list
#!/usr/bin/env python
import os
print "Filename, Min, Max, Average, Mean of Std"
for file in os.listdir("."):
if not file.endswith(".csv"):
continue
csv = open(file)
sum = 0
diff = 0
std = 0
sumstd = 0
count = 0
min = 0
max = 0
for line in csv.readlines():
x = line.split(",")
time = x[0]
value = float(x[1])
sum += value
if value > max:
max = value
if 0 < value < min:
min = value
count += 1
avg = sum / count
import math
count +=1
diff += (value - avg)**2
std = math.sqrt (diff / (count+1)-1)
sumstd += std
meanstd = sumstd/count
print file + "," + str(min) + "," + str(max) + "," + str(avg) + "," + str(meanstd)
#/usr/bin/env python
导入操作系统
打印“文件名、最小值、最大值、平均值、标准平均值”
对于os.listdir(“.”)中的文件:
如果不是文件.endswith(“.csv”):
继续
csv=打开(文件)
总和=0
差异=0
标准=0
sumstd=0
计数=0
最小值=0
最大值=0
对于csv.readlines()中的行:
x=行分割(“,”)
时间=x[0]
值=浮动(x[1])
总和+=值
如果值>最大值:
最大值=最大值
如果0<值<最小值:
最小值=值
计数+=1
平均值=总和/计数
输入数学
计数+=1
差值+=(值-平均值)**2
标准=数学sqrt(差异/(计数+1)-1)
sumstd+=std
平均标准=总和标准/计数
打印文件“+”、“+str(最小值)+”、“+str(最大值)+”、“+str(平均值)+”、“+str(平均值))
如果您的问题格式不正确,您可能会在csv.readlines()中的行中有一个从
开始的额外空间:
。额外的空间将解释缩进错误。至于其他方面,您需要修改您的格式,以便我们提供帮助。Python依赖于空格,所以请确保它保持完整。如果您的问题格式不正确,您可能会在csv.readlines()中的行中有一个从开始的额外空格:
。额外的空间将解释缩进错误。至于其他方面,您需要修改您的格式,以便我们提供帮助。Python依赖于空格,因此请确保它保持完整。您使用了sum
作为变量名,但这将隐藏内置的sum
函数。自然不鼓励隐藏内置组件
import math
的缩进程度仅与csv.readlines()中的行缩进程度相同:
,因此for
循环的主体以前一行结束。建议导入的位置在脚本的开头,就像您使用import os
所做的那样if file.endswith(".csv"):
continue
因此,它将跳过名称以“.csv”结尾的文件。你不是说:
if not file.endswith(".csv"):
continue
请注意,这是区分大小写的
顺便说一下,建议使用CSV
模块读取CSV文件您使用了
sum
作为变量名,但这将隐藏内置的sum
函数。自然不鼓励隐藏内置组件
import math
的缩进程度仅与csv.readlines()中的行缩进程度相同:
,因此for
循环的主体以前一行结束。建议导入的位置在脚本的开头,就像您使用import os
所做的那样if file.endswith(".csv"):
continue
因此,它将跳过名称以“.csv”结尾的文件。你不是说:
if not file.endswith(".csv"):
continue
请注意,这是区分大小写的
顺便说一下,建议使用CSV
模块读取CSV文件我做了改变。非常感谢。你知道为什么我在计算标准偏差的平均值时,计数+=1总是出错吗?我做了那个改变。非常感谢。你知道为什么我在计算标准偏差的平均值时,计数+=1会出现错误吗?