2016-04-11 6 views
1

[ここに画像の説明を入力してください] [1] [ここに画像の説明を入力してください] [2] 303カテゴリの14カテゴリのCSVファイルがあります。私がこれまでに悲しんでいたのは、各カテゴリーの合計を単独で見つける方法についてはあまり役に立ちませんでした。 14のカテゴリーは、age、gen、cpt、rbp、sc、fbs、rer、mhra、eia、 SD、SPSD、NMV、DT、HDCSVファイルで合計を取得する方法

import string 
with open("train.csv", "r") as f: 
    for hd in f.read():13 

最初の数行この

ABCDE F GHIJKLMN

63 1 1 145 233 1 2 150 0 2.3 3 0 6 0

通りです

67 1 4 160 286 0 2 108 1 1.5 2 3 3 2

67 1 4 120 229 0 2 129 1 2.6 2 2 7 1

+2

あなたはCSVファイルを意味すると思いますが、正しいですか? – idjaw

+0

はい私はCSVを意味しました – Dandy

+0

ファイルはどのように見えますか? –

答えて

0

することはできマップフロート転置合計(column_nameに、column_sum)のペアと辞書作り、各列の各行:あなたの入力サンプルについて

import csv 

with open("train.csv", "r") as f: 
    r = csv.reader(f) 
    # pull first row i.e A,B,C,D... to use ad the keys 
    keys = next(r) 
    # iterate ober the rows mapping to float and transpose 
    # with zip(*... so rows become columns, one per key 
    summed_dict = dict(zip(keys, map(sum, zip(*(map(float, row) for row in r))))) 

A,B,C,D,E,f,G,H,I,J,K,L,M,N 
63,1,1,145,233,1,2,150,0,2.3,3,0,6,0 
67,1,4,160,286,0,2,108,1,1.5,2,3,3,2 
67,1,4,120,229,0,2,129,1,2.6,2,2,7,1 

出力:

{'K': 7.0, 'D': 425.0, 'B': 3.0, 'G': 6.0, 'f': 1.0, 'N': 3.0, 'M': 16.0, 'C': 9.0, 'A': 197.0, 'E': 748.0, 'L': 5.0, 'H': 387.0, 'I': 2.0, 'J': 6.4} 

DictReaderを使用することはできますが、ここではDictReaderを使用することで大きな利点はありません。

import numpy as np 

# load array from csv 
arr = np.loadtxt('data.csv', dtype=float, delimiter=';', skiprows=0) 

n = -1 
# get n-th row by fany indexing 
row = arr[n,:] 
print row 
print np.sum(row) 

m = 2 
# get m-th col by fancy indexing 
col = arr[:,m] 
print col 
print np.sum(col) 

それはかなり自明です:

+0

ok sweetこれはキーを取得する方法を確認するのに役立ちます。= next(r)列Aで始まった後にコードを続けるのは正しいですか? – Dandy

+0

@Dandy、 'next(r)'ファイルを見ると、A、B、C、D、E、F、G、H、I、J、K、L、M、 /列、rの行の各行は63,1,145などの残りの行です。zip(* ...)は基本的に転置します。したがって、各キーが一致するように、それ以下の値の合計まで –

0

Pythonには本当に便利な「csv」モジュールがあります。

import csv 

with open("train.csv", "r") as f: 
    reader = csv.reader(f) 
    for row in reader: 
     # work on each row as a list 

行ヘッダーとしてCSVの最初の行を解析して、ヘッダに設定したキーを持つ辞書としてあなたに各行を与える便利DictReaderもあります。

データが簡単に使用できる形式になったので、合計は簡単です。

-1

numpyのは、あなたの友人かもしれません。詳細については:read the docs

+0

何がnumpyなのか分かりません。私はそれについて単純化するように言われましたが、私はそれを見てみると役に立つと思われます。 – Dandy

+0

csvファイルに格納されている値に対して数値演算を行いたい場合(カテゴリ/列合計を求めているので、これを仮定した)、numpyが行く方法です。基本的には、多次元の静的型付き配列を実装します。実際にはC言語で部分的に実装されているため、高速で静かです。 – rikisa

+0

@Dandy、numpyは標準ライブラリの一部ではありません。データの配列が大きい場合はnumpyが非常に効率的ですが300行のファイルに対しては純粋なpythonでも十分です。 –

関連する問題