ホームページ > バックエンド開発 > Golang > golang で大きなファイルを効率的に処理する方法

golang で大きなファイルを効率的に処理する方法

藏色散人
リリース: 2021-05-12 11:52:57
転載
2355 人が閲覧しました

次のチュートリアル コラムでは、golang による大きなファイルの効率的な処理_Pandas を使用して大きなファイルを分割して処理する方法を紹介します。 Pandas を使用して大きなファイルをチャンクで処理する問題: 今日、Kuaishou のユーザー データを処理しているときに、約 600M の txt テキストに遭遇しました。sublime で開くとクラッシュしました。 pandas. read_table() で読み取るのに 2 分近くかかりましたが、最終的に開いてみると、約 3,000 万行のデータが見つかりました。まだオープンしたばかりなので、どれだけ大変かわかりません。

解決策: ドキュメントを調べました。ファイルを読み取るこのタイプの関数には 2 つのパラメーターがあります:

chunksize

iterator

原理は次のとおりです。ファイルデータは一度にメモリに読み込まれるのではなく、複数回読み込まれます。 1. ファイルをチャンク単位で読み取るためにチャンクサイズを指定する

read_csv と read_table には、チャンク サイズ (毎回読み取る行数) を指定し、反復可能な TextFileReader オブジェクトを返す chunksize パラメーターがあります。

table=pd.read_table(path+'kuaishou.txt',sep='t',chunksize=1000000)
for df in table:
    对df处理
    #如df.drop(columns=['page','video_id'],axis=1,inplace=True)
    #print(type(df),df.shape)打印看一下信息
ログイン後にコピー

ここでファイルを再度分割し、個別の処理のためにいくつかのサブファイルに分割しました (はい、to_csv にはチャンクサイズ パラメーターもあります)

2. iterator=True

を指定します。

iterator=True は TextFileReader オブジェクトも返します。

reader = pd.read_table('tmp.sv', sep='t', iterator=True)
df=reader.get_chunk(10000)
#通过get_chunk(size),返回一个size行的块
#接着同样可以对df处理
ログイン後にコピー

この側面での pandas ドキュメントの内容を見てみましょう。

以上がgolang で大きなファイルを効率的に処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート