본문 바로가기

csv

커진 CSV를 gzip으로 압축하기, 얼마나 줄고 압축한 채로 바로 읽을 수 있을까? 로그나 내역 데이터를 CSV로 쌓다 보면 파일이 수십 메가바이트까지 불어납니다.텍스트라 압축이 잘 먹는데, 그렇다고 매번 압축을 풀었다 다시 읽자니 번거롭습니다. 그래서 두 가지가 궁금해집니다. gzip으로 묶으면 얼마나 줄고, 압축을 풀지 않은 채로 바로 읽을 수는 없을까? 테스트 했습니다. 결론부터 말하면 CSV는 gzip으로 4배 넘게 줄고,압축을 풀지 않고도 그대로 읽을 수 있습니다.실제 데이터로 확인해 보겠습니다. 20만 행 CSV로 압축률을 재 봤습니다도시, 상태, 금액처럼 반복되는 값이 섞인 20만 행짜리 CSV를 만들어일반 저장과 gzip 저장을 나란히 비교했습니다. 측정 환경은 윈도우 11, 파이썬 3.14.3, pandas입니다.저장 방식용량원본 대비일반 CSV (.csv)7.5 MB.. 더보기
CSV를 열었더니 주소 뒷부분이 옆 칸으로, 값 속 쉼표 때문에 열이 밀리는 문제 이름과 주소가 잘 정리돼 있던 CSV를 프로그램으로 읽었더니,주소 한 칸이 두 칸으로 쪼개지면서 그 뒤 금액까지 줄줄이 옆으로 밀려 버리는 경우가 있습니다.데이터는 멀쩡한데 표만 어긋난 것처럼 보입니다. 범인은 대개 값 안에 들어간 쉼표입니다. CSV는 쉼표로 칸을 나누는 형식이라,주소나 회사명처럼 값 자체에 쉼표가 들어 있으면그 지점에서 칸이 하나 더 생겨 버립니다. 실제로 재현하고 바로잡아 보겠습니다. 이런 데이터에서 문제가 생깁니다id, name, address, amount 네 칸짜리 CSV를 예로 들겠습니다.그런데 주소 값 안에 상세 번지를 쉼표로 붙여 놓았습니다.id,name,address,amount1,김민수,서울시 강남구 역삼동, 123-4,500002,이서연,부산시 해운대구 우동, 5-6.. 더보기
수백만 행 CSV를 pandas로 읽는 게 느릴 때, 읽기 속도를 끌어올리는 방법 수십 메가바이트가 넘는 CSV를 pd.read_csv로 불러올 때마다몇 초씩 기다리게 되면, 분석을 반복할수록 그 시간이 쌓입니다. 그런데 같은 파일이라도 읽는 방법을 조금만 바꾸면 훨씬 빨라집니다.무엇을 바꾸면 얼마나 빨라지는지 실제로 재 봤습니다.100만 행 CSV로 방법을 비교했습니다id, 도시, 금액 등 6개 열에 100만 행,약 40MB짜리 CSV를 만들어 네 가지 방법으로 읽어 시간을 쟀습니다. 측정 환경은 윈도우 11, 파이썬 3.14.3, pandas와 pyarrow입니다.각 방법을 여러 번 실행해 가장 빠른 값을 적었습니다.읽는 방법시간기본 대비기본 read_csv1.01초기준dtype 지정0.85초1.2배 빠름usecols로 필요한 3열만0.71초1.4배 빠름engine="pyarrow.. 더보기
CSV를 UTF-8로 저장하는 법, 엑셀과 메모장과 파이썬에서 각각 동료에게 받은 CSV를 웹 업로드 양식에 올렸더니 "UTF-8로 저장해서 다시 올려 주세요"라는 안내가 떴습니다. 분명 엑셀에서 멀쩡히 열리던 파일인데, 시스템이 요구하는 인코딩이 따로 있는 상황입니다.이럴 때 필요한 건 한 가지입니다. 파일을 UTF-8로 다시 저장하는 것. 도구마다 방법이 조금씩 다르고, 같은 UTF-8이라도 두 종류가 있어 헷갈리기 쉽습니다. 메모장, 엑셀, 파이썬 순으로 가장 빠른 길을 정리하고, 두 종류의 UTF-8 차이를 실제 바이트로 확인해 보겠습니다. 먼저 알아둘 것: UTF-8은 사실 두 종류입니다저장 옵션에서 흔히 보이는 이름이 UTF-8과 UTF-8 (BOM 포함)입니다. 둘의 실제 내용은 거의 같고, 차이는 파일 맨 앞에 붙는 3바이트짜리 표식 하나뿐입니다. 이 표식.. 더보기