

実現したいこと  
pythonでcsvファイルを読み込んだ後、E列だけを取り出して、その数値を１０以上で場合分けし、E列の１０以上の数値がいくつあるかを数えられるようなものを作りたいと考えております。

問題点  
pythonでcsvファイルの読み込みには成功したものの、列単体だけの読み込みがうまくいきません。  
また、for文で場合分けした後１０以上の数値がいくつあるのかを数える作業がうまくいきません。その際はsumを使用したらよいのか、counterでカウントしたらよいのか教えていただきたいです。

どうかよろしくお願いします。


CC BY-SA 4.0
2019-10-25T07:12:26.587
59964
2019-10-25T09:10:22.033
36312
question
python csv
pythonでExcelのcsvファイルの読み取りについて


後々何かに加工するのでなければ、列単体で取り出すより、各行からその都度取り出した方が早そうです。

例えばこんな`data.csv`ファイルがあるとします。

[code]

    0,1,2,3, 4,5,6,7,8,9
    0,1,2,3,40,5,6,7,8,9
    0,1,2,3, 4,5,6,7,8,9
    0,1,2,3,14,5,6,7,8,9
    0,1,2,3, 4,5,6,7,8,9
    0,1,2,3,10,5,6,7,8,9
    0,1,2,3, 4,5,6,7,8,9
    0,1,2,3,24,5,6,7,8,9
    0,1,2,3, 4,5,6,7,8,9
    0,1,2,3,34,5,6,7,8,9
    
[/code]

こうしたプログラムで10以上の数値をカウントできます。

[code]

    import csv
    
    csvdata = []
    with open('data.csv', mode='r', encoding='shift_jis') as fp:
        csvdata = list(csv.reader(fp))
    
    ge10count = 0
    for row in csvdata:
        colE = int(row[4])
        if colE >= 10:
            ge10count += 1
    
    print(ge10count)
    
[/code]

後で何かに加工するので抽出しておきたい場合は、こちらの記事を参考に。  
[Pythonで二次元配列の中の各要素のn番目だけを取り出して、要素として並べたい](https://ja.stackoverflow.com/q/47331/26370)

読み込んだ後のプログラムを以下のようにします。

[code]

    columnE = [row[4] for row in csvdata]
    
    ge10count2 = 0
    for strE in columnE:
        colE = int(strE)
        if colE >= 10:
            ge10count2 += 1
    
    print(ge10count2)
    
[/code]


CC BY-SA 4.0
2019-10-25T08:55:25.533
59973
2019-10-25T09:10:22.033
2019-10-25T09:10:22.033
26370
26370
59964
answer