pythonでExcelからTSVに変換してみた。
DataFrameでもできるのだけども、ストリーム系でないとメモリをめっちゃ食ってしまう。 ソース 37万件のデータで実施した場合、 ■今回のソースの場合 $ time python excel2tsv_e.py KEN_ALL.xlsx > ken_all2.txt real 0m38.720s user 0m38.614s sys 0m0.105s ■DataFrameを使った場合 $ time python excel2tsv_p.py KEN_ALL.xlsx real 0m47.467s user 0m47.094s sys 0m1.139s lxml速い。 startイベントでendイベントの関数を生成するの結構良いかも。 あと、4階層以下は都度都度メモリ解放しなくしてるのもうまく働いている。 DataFrameだと最大800Mまでメモリを使用するが、今回のだと50Mくらい。 for event, elem in parser.read_events(): if event == "end": yield event, elem, stack stack.pop() if 1 <= len(stack) <= 2: stack[-1].remove(elem) level -= 1 else: level += 1 stack.append(elem) yield event, elem, stack PR |
|
忍者ブログ [PR] |