1

600,000 をはるかに超えるエントリを持つファイルがあります。それは基本的に含まれています:

user1 choice1
user1 choice2
user2 choice3
user2 choice1
.
.
.
.
user400000 choice60

通常の方法 (以下を参照) で辞書を作成しようとすると、idle が応答しなくなります。

d = {}
with open("file.txt") as f:
    for line in f:
       (key, val) = line.split()
       d[key] = val

この大きなエントリのファイルから、簡単かつ迅速に操作できるリスト/辞書が必要です。それを得る最も効率的な方法は何でしょうか?

4

1 に答える 1

1

pandasこの量のデータを簡単に操作できます。userデータは、スカラー データ ポイントが関連付けられた一連のラベルです。

import pandas as pd
s = pd.read_csv('file.txt', sep=' ', header=None, index_col=0, squeeze=True)

この命令はpandas、ファイル データを Series オブジェクトにロードするように要求します。

  • 列はスペースで区切られています ( sep=' ')
  • ファイルにはタイトル ヘッダーがなく、最初の行は既にデータです ( header=None)
  • 最初の列をインデックスとして日付を操作したい ( index_col=0)
  • デフォルトでpandasは、オブジェクトを構築しDataFrameますが、データの単一列が含まれている場合は、Series代わりに ( squeeze=True)を要求できます。

sSeries、データへのアクセスに使用できるようになったユーザー ラベルでインデックス付けされたオブジェクトです。

In [37]: s.head()
Out[37]: 
0
user0    104106
user1     31024
user2     82993
user3    211414
user4    499070
Name: 1

In [38]: s['user3']
Out[38]: 211414

600000 行あるので、'file.txt'読み込みに約 1 秒かかりましたs。次の dict のようなアクセスsは即時です。

于 2013-03-19T12:20:15.950 に答える