2016-04-12 4 views
-2

CSVファイルに14列(AN)があります心臓病の兆候がある患者数(303件)が列14にあります(N)0以上のものは病気の患者とみなされ、0のものは健康です。私はこれまでの私のコードに持っているものからCSV列を分割して0の数を見つける方法

は(csvファイルでの作業、これが初めてです。この(私はおそらく私がミスを犯した場合ので、私を修正してください間違ってこれを行うよりも、より多くの午前知っている) あるので、裸ください。私と一緒に)

import csv 
import math 
with open("train.csv", "r") as f: 
#HP is healthy patient IP is ill patients 
    for c in f.read(): 
     chars.append(c) 
num_chars = len(chars) 
num_IP = 0; 
num_HP = 0; 
for c in chars: 
    if c > 0: 
     num_IP += 1 
    if c <=0: 
     num_HP += 1 
+0

なぜあなたはcsvモジュールをインポートしますが、使用していませんか? –

+0

'f.read()14' ??? ...これはあなたのcsvファイルの列14を読むと思いますか? –

+0

申し訳ありませんが、脳が少し揚げられています。私はこのコードを入力しました。私はこのコードを入力しました.CSIモジュールのように間違いがたくさんありました。私は、私が立てていたコード。それは似ていますが。 – Dandy

答えて

1

これはそれを行う必要があります。

#turn csv files into a list of lists 
with open('train.csv') as csvfile: 
    reader = csv.reader(csvfile, delimiter=',') 
    csv_data = list(reader) 

#count the amount of patients with heart problems 
count = 0 
for row in csv_data: 
    try: 
     if (row and int(row[13]) > 0): 
      count += 1 
    except IndexError: 
     print("could not find the heart diseases status for the row" + str(row)) 

print("the amount of patients with heart disease is " + str(count)) 
+0

私はそれを試してみたときに "TypeError:リストのインデックスが範囲外です。何をすればいいのですか? デリミタはどうですか? – Dandy

+0

ほとんどのCSVファイルはカンマを使って各行を区切ります。 CSVファイルで指定する必要があります。エラーが発生した場合は、14列未満の行があることを意味します。これらのエラーを無視するように答えを更新します。 –

+0

@Dandy Pythonでのインデックス作成は0ベースであることに注意してください。必要なフィールドが列番号14(1から数えて)であれば、Pythonでは 'row [13] 'となります – Marius

関連する問題