在Python中求平均正数和平均负数
In Python, find average positive number and average negative number
我想求正数时的平均数,负数时求平均数。
import csv
totalCount = 0
numberOfPositives = 0
with open('Weather30States.csv', 'r') as file1:
val = list(csv.reader(file1))[2]
val1 = val[0:4]
with open('FL%.csv', 'r') as file2:
reader = csv.reader(file2)
reader.next() # this skips the first row of the file
# this iteration will start from the second row of file2.csv
conditionMet = False
for row in reader:
if conditionMet == True:
if float(row[0].strip('%')) > 0: # change > to >= if you want to count 0 as positive
print "FA, 1",row[0],',', ','.join(row[1:5]) # print 1 if positive
numberOfPositives += 1 # add 1 to numberOfPositives only if positive
else:
print "FA, 0",row[0],',', ','.join(row[1:5]) # print 0 if not positive
totalCount += 1 # add 1 to totalCount regardless of sign
conditionMet = False # or break if you know you only need at most one line
if row[1:5] == val1:
conditionMet = True
print 'Total Count =', totalCount
print 'Percentage of Positive numbers =', numberOfPositives * 100./totalCount, '%'
我是 Python 和 Excel 的新手,我不知道在哪里或如何做。
更新
我想要这部分行[0]的平均值:
with open('FL%.csv', 'r') as file2:
reader = csv.reader(file2)
reader.next() # this skips the first row of the file
# this iteration will start from the second row of file2.csv
conditionMet = False
for row in reader:
if conditionMet == True:
if float(row[0].strip('%')) > 0: # change > to >= if you want to count 0 as positive
print "FA, 1",row[0],',', ','.join(row[1:5]) # print 1 if positive
numberOfPositives += 1 # add 1 to numberOfPositives only if positive
else:
print "FA, 0",row[0],',', ','.join(row[1:5]) # print 0 if not positive
totalCount += 1 # add 1 to totalCount regardless of sign
conditionMet = False # or break if you know you only need at most one line
if row[1:5] == val1:
conditionMet = True
您可以边走边收集正值和负值,然后在最后取平均值。
from numpy import mean
neg_vals,pos_vals = [],[] #Two empty lists to add values into
#Your code goes here ... ... ... ...
if float(row[0].strip('%')) > 0: # change > to >= if you want to count 0 as positive
print "FA, 1",row[0],',', ','.join(row[1:5]) # print 1 if positive
numberOfPositives += 1 # add 1 to numberOfPositives only if positive
pos_vals.append(float(row[0]))
else:
print "FA, 0",row[0],',', ','.join(row[1:5]) # print 0 if not positive
neg_vals.append(float(row[0]))
#Rest of with open as file2
neg_mean = mean(neg_vals)
pos_mean = mean(pos_vals)
您可能需要格式化行[0](看起来您通常会从中删除“%”)。
这段代码的工作原理是在列表出现时将正值和负值添加到列表中。在循环结束时,您取两个列表的平均值。根据您希望代码的弹性,您可能需要包含一个没有正值或没有负值的测试用例。
我想求正数时的平均数,负数时求平均数。
import csv
totalCount = 0
numberOfPositives = 0
with open('Weather30States.csv', 'r') as file1:
val = list(csv.reader(file1))[2]
val1 = val[0:4]
with open('FL%.csv', 'r') as file2:
reader = csv.reader(file2)
reader.next() # this skips the first row of the file
# this iteration will start from the second row of file2.csv
conditionMet = False
for row in reader:
if conditionMet == True:
if float(row[0].strip('%')) > 0: # change > to >= if you want to count 0 as positive
print "FA, 1",row[0],',', ','.join(row[1:5]) # print 1 if positive
numberOfPositives += 1 # add 1 to numberOfPositives only if positive
else:
print "FA, 0",row[0],',', ','.join(row[1:5]) # print 0 if not positive
totalCount += 1 # add 1 to totalCount regardless of sign
conditionMet = False # or break if you know you only need at most one line
if row[1:5] == val1:
conditionMet = True
print 'Total Count =', totalCount
print 'Percentage of Positive numbers =', numberOfPositives * 100./totalCount, '%'
我是 Python 和 Excel 的新手,我不知道在哪里或如何做。
更新
我想要这部分行[0]的平均值:
with open('FL%.csv', 'r') as file2:
reader = csv.reader(file2)
reader.next() # this skips the first row of the file
# this iteration will start from the second row of file2.csv
conditionMet = False
for row in reader:
if conditionMet == True:
if float(row[0].strip('%')) > 0: # change > to >= if you want to count 0 as positive
print "FA, 1",row[0],',', ','.join(row[1:5]) # print 1 if positive
numberOfPositives += 1 # add 1 to numberOfPositives only if positive
else:
print "FA, 0",row[0],',', ','.join(row[1:5]) # print 0 if not positive
totalCount += 1 # add 1 to totalCount regardless of sign
conditionMet = False # or break if you know you only need at most one line
if row[1:5] == val1:
conditionMet = True
您可以边走边收集正值和负值,然后在最后取平均值。
from numpy import mean
neg_vals,pos_vals = [],[] #Two empty lists to add values into
#Your code goes here ... ... ... ...
if float(row[0].strip('%')) > 0: # change > to >= if you want to count 0 as positive
print "FA, 1",row[0],',', ','.join(row[1:5]) # print 1 if positive
numberOfPositives += 1 # add 1 to numberOfPositives only if positive
pos_vals.append(float(row[0]))
else:
print "FA, 0",row[0],',', ','.join(row[1:5]) # print 0 if not positive
neg_vals.append(float(row[0]))
#Rest of with open as file2
neg_mean = mean(neg_vals)
pos_mean = mean(pos_vals)
您可能需要格式化行[0](看起来您通常会从中删除“%”)。
这段代码的工作原理是在列表出现时将正值和负值添加到列表中。在循环结束时,您取两个列表的平均值。根据您希望代码的弹性,您可能需要包含一个没有正值或没有负值的测试用例。