によって大きなCSVファイルを凝縮だから私がどのように見えるで働いているcsvファイル:ソート/複数の列
Date Time, SegmentID, indicatorvalue
2016-12-01T00:00:00Z 147649 1
2016-12-01T00:01:00Z 147649 0
2016-12-01T00:02:00Z 147649 1
... ... ...
2016-12-01T00:23:00Z 2938733 0
電気ショック療法。
私が望むのは、すべてのセグメントのリストにそれを凝縮させ、そのセグメントのエントリのうちどれくらいの数がインジケータの値を持つかをパーセンテージ(AM/IP/PM/OP )
例:
segmentID, Time Period, Percentage
147649 AM 78
147649 IP 100
147649 PM 60
147649 OP 30
243546 AM 79
243546 IP 98
... ... ...
私の試みは、各セグメントのために、それが持っていた後、一度、一日の4回の指標の割合の累計を保つなるように、ループのために設定しました新しいセグメントIDに変更されたことが検出されました。これらの値は文字列に追加されます。
問題は、セグメントIDが順序付けられておらず、同じsegmentIDに対して複数のエントリが存在することです。 SegmentIDでファイルを注文しようとしましたが、ファイルが非常に大量です。別のアプローチに関する提案はありますか?
EDIT:自分のコメントを削除した 誰かが私のコードは、現在、研究のビットの後ので、私は、パンダを使用する必要があることを掲示:
import numpy as np
import pandas as pd
df=pd.read_csv("data.csv",sep=",",index_col="Segment ID",usecols=["Segment ID","Date Time","indicatorvalue"])
df['Date Time'] = ['AM' if '06' <= x[11:13] < '10'
else 'IP' if '10' <= x[11:13] < '16'
else 'PM' if '16' <= x[11:13] < '19'
else 'OP' if '19' <= x[11:13] or x[11:13] < '06'
else 'Error' for x in df['Date Time']]
は今、私はちょうどで行を凝縮する方法を作業する必要がありますそれらの「指標値」を平均化しながら、「Date Time」および「SegmentID」のエントリを複製します。
どのように大規模ですか? –
約3.5GB、何行が何百万もあるかわからない –
どのくらいのメモリが利用可能で、どれくらいのセグメントが必要ですか? –