-4

現在、Python で大きな csv データセットをインポートしようとして失敗しています。基本的に、私は株式相場で作られた大きな csv ファイルを持っています (列ごとに 1 つの株があり、各株には配当を含む別の列があります)。私は csv モジュールを使用していますが、実際には、列が株式相場である np.array を取得できません。Python は行ごとに np.array を作成し、列ごとに np.array が必要です。どのようにできるのか??

助けてくれてありがとう!!

4

3 に答える 3

2

Pandasライブラリの使用をお勧めします。また、大きな csv ファイルを小さなチャンクで読み取ることもできます。ドキュメントの例を次に示します。

データ:

year indiv zit xit
0 1977 A 1.2 0.60
1 1977 B 1.5 0.50
2 1977 C 1.7 0.80
3 1978 A 0.2 0.06
4 1978 B 0.7 0.20
5 1978 C 0.8 0.30
6 1978 D 0.9 0.50

チャンク サイズを指定します (イテラブルを取得します)。

reader = read_table(’tmp.sv’, sep=’|’, chunksize=4)


for chunk in reader:
.....: print chunk

出力:

year indiv zit xit
0 1977 A 1.2 0.60
1 1977 B 1.5 0.50
2 1977 C 1.7 0.80
3 1978 A 0.2 0.06
year indiv zit xit
0 1978 B 0.7 0.2
1 1978 C 0.8 0.3
2 1978 D 0.9 0.5

注意!株式データをさらに操作する必要がある場合は、Pandas が最善の方法です。

于 2012-06-22T09:55:30.727 に答える
0

私は、csvファイルのパスを取得してdictのリストを一度に返す関数の小さな部分を作成しました。その後、リストを非常に簡単にループします。

def read_csv_data(path):
    """
        Reads CSV from given path and Return list of dict with Mapping
    """
    data = csv.reader(open(path))
    # Read the column names from the first line of the file
    fields = data.next()
    data_lines = []
    for row in data:
        items = dict(zip(fields, row))
        data_lines.append(items)
    return data_lines

これはあなたを助けるかもしれません

よろしく

于 2012-06-22T09:00:46.343 に答える
0

あなたが探しているのはndarray.shape機能ndarray.reshapeです。

http://www.scipy.org/Tentative_NumPy_Tutorial

それ以外の場合は、単にそのまま読んでから、次のように転置することができます

x = x.transpose() 

x は ndarray です。

http://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.transpose.html

これらの小さなことはすべて、通常はドキュメントにあります。最初にそれらを注意深く読むことをお勧めします。

于 2012-06-22T09:04:36.293 に答える