我如何计算文件中大于或等于某个数字的数字的百分比

How can i calculate the percentage of a number greater or equal to a certain number from a file

我有一个用逗号分隔的 CSV 文件。我需要读取文件,确定哪些行包含需要高于给定数字(比如 711)的数字,并计算符合条件的数字的百分比。

到目前为止我的代码如下:

myfile = open('3517315a.csv','r')

myfilecount = 0

linecount = 0

firstline = True

for line in myfile:
    if firstline:
        firstline = False
        continue
fields = line.split(',')

    linecount += 1
    count = int(fields[0])
    colour = str(fields[1])
    channels = int(fields[2])
    code = str(fields[3])
    correct = str(fields[4])
    reading = float(fields[5])

print( 'percentage of numbers greater than or equal to 711 is %d:')

我不知道如何设置条件然后计算百分比。

您可以使用 awk 命令来完成:-

cat 3517315a.csv | awk -F ',' 'BEGIN{count=0;total=0;}{total++;if(>=711)count++;}END{print 100*count/total}'

解释:-

awk -F ',' - 指定字段分隔符

BEGIN{count=0;total=0;} - 第一次初始化变量。

{total++;if(>=711)count++;} - 对文件中的每一行执行。每行增加总计,只有那些> = 711.

增加计数

END{print 100*count/total} - 在解析完所有行后执行。 Percentage=count*100/total

假设您只对第一个字段(count)计数感兴趣,那么代码可以是这样的:

MAGIC_NUMBER = 711

counter = 0
myfile = open('3517315a.csv', 'r')

myfile.readline()  # Skip the first line

for i, line in enumerate(myfile, 1):
    count = int(line.split(',')[0])

    if count >= MAGIC_NUMBER:
        counter += 1

percentage = float(counter) / i * 100
print('%3.2f%% of numbers is >= %d' % (percentage, MAGIC_NUMBER))

您可以使用 enumerate 自动获取数字序列,在这种情况下,从 myfile 中读取每个 line,从 1 开始。

因为我们只对第一个字段感兴趣,并且我们知道 split 方法 returns 一个列表,所以我们只取第一个元素(索引 0)。我们将这样的数字转换为数字(int)。

然后你需要根据给定的条件计算这些数字。

一旦我们处理了文件,i 保存最后读取的行数。所以我们可以计算百分比。请注意其中一个数字中 float 的使用。那就是告诉运算符 / 我们想要一个 float 作为结果。