プログラミング初心者です.
現在,pythonを用いてcsv形式のデータの分析を行っております.
前提として,csv,numpy,pandasなどのモジュールを使用しないプログラムを組んでおります.
idの数分だけ配列を宣言し,idごとにデータを配列に格納した後,idごとのvalueの平均値を求めるというプログラムを作成したのですが,
以下のようにとても長いプログラムになってしまいました.
プログラムを簡略化する方法があればご指摘いただきたいです.
特に知りたい点は,配列や変数の宣言をループ処理を用いて行うことは可能なのか,
また,いくつかの配列に関して一括でループ処理を行うことは可能なのかという点です.
よろしくお願いします.
(プログラムの後にデモのファイルを記しました.)
PYTHON
1filepath = 'demo.csv' 2 3with open(filepath,) as f: 4 data2=[] 5 for line in f: 6 line = line.replace('\n','') 7 data = line.split(',') 8 data2.append(data) 9id1=[] 10id2=[] 11id3=[] 12id4=[] 13id5=[] 14 15for i in data2: 16 if i[1] =='1': 17 id1.append(i) 18 19for i in data2: 20 if i[1] =='2': 21 id2.append(i) 22 23for i in data2: 24 if i[1] =='3': 25 id3.append(i) 26 27for i in data2: 28 if i[1] =='4': 29 id4.append(i) 30 31for i in data2: 32 if i[1] =='5': 33 id5.append(i) 34sum1=0 35sum2=0 36sum3=0 37sum4=0 38sum5=0 39 40for i in id1: 41 sum1= int(i[2]) + sum1 42ave1=sum1/len(id1) 43 44for i in id2: 45 sum2= int(i[2]) + sum2 46ave2=sum2/len(id2) 47 48for i in id3: 49 sum3= int(i[2]) + sum3 50ave3=sum3/len(id3) 51 52for i in id4: 53 sum4= int(i[2]) + sum4 54ave4=sum4/len(id4) 55 56for i in id5: 57 sum5= int(i[2]) + sum5 58ave5=sum5/len(id5) 59 60print(ave1) 61print(ave2) 62print(ave3) 63print(ave4) 64print(ave5)
idは1から5の乱数,valueは10から20の乱数で作成しました.
no,id,value
1,1,16
2,1,20
3,4,11
4,3,15
5,3,18
6,2,16
7,1,14
8,4,15
9,2,10
10,2,19
11,2,11
12,5,14
13,1,19
14,4,10
15,5,18
16,2,10
17,2,11
18,2,10
19,2,12
20,3,14
21,5,14
22,4,11
23,2,11
24,1,14
25,2,12
26,1,17
27,2,13
28,4,12
29,1,20
30,1,11
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/29 13:36