我如何计算文件中大于或等于某个数字的数字的百分比
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
作为结果。
我有一个用逗号分隔的 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
作为结果。