我是编程新手。 请帮我完成以下任务。 我有一个未知行的csv数据。但每行的元素数量与以下相同:
Right \FR\Window open\Start 16.9 11.2 18.2
Right \FR\Window open\Start 16.5 11.7 17.5
Right \FR\Window open\Start 16.9 11.7 18
Right \FR\Window open\End 7.61 1.76 8.37
Right \FR\Window open\End 7.3 1.74 8.6
Right \FR\Window open\End 7.64 2.45 8.43
Right \FR\Window close\Start 13 8.2 14.4
Right \FR\Window close\Start 12.9 7.55 14.5
我想计算具有相同字符串\FR\Window open\Start
和\FR\Window open\End
的行的平均值,依此类推。
谢谢
答案 0 :(得分:0)
您可以使用python中的csv模块从csv文件中获取数据,如下所示:
int j=0,input,tot=5;
for(j=0; j+tot<22; j=j+input)
{
printf("j=%d tot=%d\n",j,tot);
printf("Enter next card\n");
scanf("%d",&input);
}
将此逗号分隔的example.csv与您的数据一起使用
import csv
start_values = {'col3':[], 'col4':[], 'col5':[]}
end_values = {'col3':[], 'col4':[], 'col5':[]}
with open('example.csv', newline='') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
if row['col2'] == '\FR\Window open\Start':
start_values['col3'].append(float(row['col3']))
start_values['col4'].append(float(row['col4']))
start_values['col5'].append(float(row['col5']))
if row['col2'] == '\FR\Window open\End':
end_values['col3'].append(float(row['col3']))
end_values['col4'].append(float(row['col4']))
end_values['col5'].append(float(row['col5']))
csvfile.close()
print('Start average for col3: {:.2f}, col4: {:.2f}, col5: {:.2f}'.format(sum(start_values['col3'])/len(start_values['col3']), sum(start_values['col4'])/len(start_values['col4']), sum(start_values['col5'])/len(start_values['col5'])))
print('End average for col3: {:.2f}, col4: {:.2f}, col5: {:.2f}'.format(sum(end_values['col3'])/len(end_values['col3']), sum(end_values['col4'])/len(end_values['col4']), sum(end_values['col5'])/len(end_values['col5'])))
这个程序将每一行读入一个字典以便于访问,正如你在ifs中看到的那样寻找开始和结束(col1,col2,col3,col4,col5
Right,\FR\Window open\Start,16.9,11.2,18.2
Right,\FR\Window open\Start,16.5,11.7,17.5
Right,\FR\Window open\Start,16.9,11.7,18
Right,\FR\Window open\End,7.61,1.76,8.37
Right,\FR\Window open\End,7.3,1.74,8.6
Right,\FR\Window open\End,7.64,2.45,8.43
Right,\FR\Window close\Start,13,8.2,14.4
Right,\FR\Window close\Start,12.9,7.55,14.5
)。然后,它会使用各自的值填充if row['col2'] == '\FR\Window open\Start':
和start_values
词典。最后这些词典将如下所示:
end_values
上面的那个是{'col3': [16.9, 16.5, 16.9, 13.0, 12.9], 'col4': [11.2, 11.7, 11.7, 8.2, 7.55], 'col5': [18.2, 17.5, 18.0, 14.4, 14.5]}
。 “开始”行中的每列数字都整齐地打包到列表中。然后你需要做的只是start_values
并且你的平均值,使用String.format整齐地格式化为2位小数。
您可以在official documentation上了解有关使用CSV文件的详情。 here是格式化字符串的便捷指南!