2017-11-15 6 views
0

1 백만 개의 문자열 데이터를 파일에 쓰고 파이썬 gZip 압축을 사용합니다. 크기는 2GB이고 크기는 250-300MB로 줄이고 싶습니다. ?파이썬 라이브러리를 사용하여 2GB에서 300MB까지 압축하는 방법

더 압축하여 300MB로 가져 오는 방법이 있습니까?

도움을 주시면 감사하겠습니다.

감사합니다.

+3

압축 된 gzip 데이터가 2GB (압축되지 않은 데이터가 다소 더 높음을 의미)를 말하고 있습니까? 나는 gzip보다 나은 크기의 범용 압축 알고리즘을 알고 있지 않지만 특정 데이터는 더 압축하기 위해 악용 될 수있는 속성을 가질 수 있습니다. – chepner

+0

무손실 압축에는 한계가 있습니다. gzip을 제대로 사용했다면 압축 할 수 없을 것입니다. 가장 빠른 프로파일에서도 최상의 압축률에 대한 압축비는 1 : 8이 아닙니다. –

+0

이론적으로 정보를 8의 다른 요소로 축소하는 것이 가능하다고 생각하는 이유는 무엇입니까? 데이터 손실을 기꺼이 받아 들일 의향이 있습니까? 테스트에서는 데이터의 섀넌 엔트로피를 계산할 수 있습니다. 이렇게하면 가능한 한 압축 측정 값을 얻을 수 있습니다. – Prune

답변

2

gzip 및 기타 알고리즘이 압축 전에 데이터를 사전 처리하는 것을 도와 줄 수 있습니다.

예를 들어 이미지가있는 경우 원시 픽셀 데이터를 압축하는 대신 현재 픽셀과 이전 픽셀 간의 차이를 압축 할 수 있습니다.

문자열 데이터를 압축하는 대신 데이터 자체에 대한 지식을 사용하기 전에 사전 처리를 시도하십시오.

문자 사이의 델타 만 계산하면 안됩니다. 분산을 줄이기 위해 항목을 정규화하여 (불필요한 문자를 제거하고, 마지막 문자와 끝 사이의 공백, 불필요한 공백 등을 시도하십시오.)

문자열 데이터가 필드로 구성된 경우 (일반적으로 그렇습니다) 작동하는 또 다른 기술은 행 대신 열을 압축하는 것입니다. 칼럼 데이터는 분산이 적고 gzip은이를 쉽게 활용합니다.

달성하기 매우 힘들 것입니다 압축 300M에 2기가바이트 에서 압축 데이터를가는 명심하십시오, 당신은 사용할 수하기 위해 압축 해제 한 후 데이터를 처리해야 할 수도 있습니다.

+0

여분의 공간을 모두 제거했으며 테스트 데이터에서 값을 요구하지 않았습니다. 샘플 코드를 업데이트했습니다. –