🗜️
10万行のCSVをソートすると、圧縮率が6倍になった。
ソートされたデータに最適な圧縮方法ってあるかも
CSV(例はカラム一つなんでCSVとは言い難いですが)をソートすると圧縮率が高くなります。
次のコードを実行して、7zip にすると
import pandas as pd
import numpy as np
import random
n = 10000 * 10
f = open('random_100k.txt','w')
for i in range(n):
f.write(str(random.randint(1,n)) + '\n')
f.close()
df=pd.read_csv('random_100k.txt',header=None)
df.set_axis(['Value'],
axis='columns', inplace=True)
df.sort_values('Value').to_csv('random_100k_sorted.txt',header=None,index=False)
ファイル名 | 元のファイルサイズ | 圧縮 |
---|---|---|
random_100k.txt | 689KB | 253KB |
random_100k_sorted.txt | 689KB | 43KB |
ソートした場合は圧縮が大きいです。ソートすると順番がかわるので意味がないというという意見もあるでしょう。時系列データだったらどうでしょうか? 時系列でソートして、もとの順番が保持されていなくても良いかもしれません。
Discussion