2017-09-28 157 views
-1

我的任务是读取一个.csv文件,取第四列数据的平均值,并在一月份取第八列数据的总和,即csv文件的第13-31行。这是我现在的代码;它不断告诉我索引超出了第11行和第12行的范围,怎么回事?还有,在我的代码中还有什么不对吗?python列表索引超出范围?

file = open("citi_bike.csv", 'r') 
data = [] 
for line in file: 
    parts = line.strip().split() 
    data.append(parts) 

def print_detail(data): 
    avg = 0 
    total = 0 
    for record in data: 
     avg += float(record[3]) 
     total += float(record[7]) 
    avg /= len(data) 
    print("\nThe following data is from " + data[0][0] + " to " + data[-1][0]) 
    print'\naverage miles:',(avg) 
    print'\ntotal number of pass purchased:',(total) 

print_detail([r for r in data if r[0].split('/')[0]=='1']) 
+1

这可能是因为记录中的索引3和7没有项目。在计算平均值和总数之前,尝试插入打印语句以打印记录列表的长度。 – ShreyasG

回答

-1

如果我明白你已经试过做什么,那么记录就是数据的一个元素,因此record [3]和record [7]不存在。你想总结第四和第八列数据中没有记录的元素。

我有另一个建议:你可以使用熊猫库的read_csv方法,它非常强大和快速。在一行中,您下载数据,然后使用numpy库的sum函数。