2017-09-28 16 views
-1

私の仕事は、.csvファイルを読み込み、データの4番目の列の平均を取って、1月の8番目のデータ(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のインデックスに項目がないためです。平均と合計を計算する前に、レコードリストの長さを印刷するprint文を挿入してみてください。 – ShreyasG

答えて

-1

私はあなたがしようとしたものを理解していれば、レコードはデータの要素である、したがって、記録[3]とレコードは、[7]は存在しません。記録していないデータの第4列と第8列の要素を要約したいとします。

私は別のアドバイスがあります:非常に強力で高速なpandasライブラリのread_csvメソッドを使用できます。 1行でデータをダウンロードし、numpyライブラリの合計関数を使用します。

関連する問題