2017-12-12 5 views
-1

私はちょうどpythonを使い始めました。私はこれに走ったときしかし、私は、二つの異なる配列をプロットすることで遊んでました:csvファイルの行からプロットするために空の配列を追加しますか?

Traceback (most recent call last):
name = row[0] File

"C:/Users/me_irl/PycharmProjects/untitled/lo", line 10, in

IndexError: list index out of range

さて、私は、Webソリューションを探してますがパンダを試した後、genfromtxt()と私には知られず、他のモジュールを洗い上げてきました私は解決策を見出していません。ここで

import numpy as np 
import matplotlib.pyplot as plt 
import csv 
import scipy 
player_name = [] 
player_picks = [] 
with open('C:\exercise.csv') as csvfile: 
    readCSV = csv.reader(csvfile, delimiter= ',') 
    for row in readCSV: 
     name = row[0] 
     picks = row[1] 

     player_name.append(name) 
     player_picks.append(picks) 

print(player_name) 

csvファイルの一部です:

ここに私のコードは、参考のために、不完全とはいえ、だ

Salah,94%

Morata,66%

Elliot,64%

Kane,58%

Hazard,52%

de Gea,50%

私は何をすべき?誰かが、私が学んでいないものを使用しないで簡単な回避策を提示することはできますか?

編集:それを考え出してください。 csvにアクセスする際にいくつかの問題がありました。そして、いいえ、空白行はありませんでした。今、player_namesとplayer_picksをプロットしようとしています。誰にも感謝してくれてありがとう。たくさん学んだ。

+1

csvファイルが貼り付けたとおりの場合は、ファイル内の空白行を考慮する必要があります。 – chrisz

+0

おそらくcsvファイルに空白行があります。 –

答えて

2

ファイルに存在する空白行を考慮していません。ラインがコンテンツを持っているかどうかを確認するためのチェックに追加します。

import numpy as np 
import matplotlib.pyplot as plt 
import csv 
import scipy 
player_name = [] 
player_picks = [] 
with open('C:\exercise.csv') as csvfile: 
    readCSV = csv.reader(csvfile, delimiter= ',') 
    for row in readCSV: 
     if len(row) >= 2: 
      name = row[0] 
      picks = row[1] 

      player_name.append(name) 
      player_picks.append(picks) 

print(player_name) 
+0

'もし'行が十分でないかもしれません。 'len(row)> = 2'を実行しなければならないかもしれません。 – roganjosh

+0

@roganjosh良い点。 – chrisz

+0

も、未加工の接頭辞なしのバックスラッシュで完全なパスを使用しません。 –

0

問題は、あなたがアイテム0とCSV行の1にアクセスしようとするこれらの線で

name = row[0] 
picks = row[1] 

文から生じます。少なくとも2つの項目がない場合は、エラーIndexError: list index out of rangeが表示されます。

+0

これは実際に私が苦労していたものに最も近いです。以来、csvへのアクセスは停止されました。アクセスするファイルがないため、行が不足しています。 –

関連する問題