대용량 CSV 앞부분 잘라 저장
설명
큰 CSV 파일에서 앞의 N줄만 떼어 가벼운 샘플 파일로 저장한다
필요 데이터
CSV / Excel 파일 1개 (실행 시 선택), 남길 줄 수
출력
앞 N줄만 담은 새 CSV 파일
필요 패키지
- pandas
태그
business, report
작성자
SDSL | MDS 1.0
큰 CSV 파일에서 앞의 N줄만 떼어 가벼운 샘플 파일로 저장한다
Saves the first N rows of a large CSV file as a lightweight sample
README
큰 CSV 파일에서 앞의 N줄만 떼어 가벼운 샘플 파일로 저장한다
CSV / Excel 파일 1개 (실행 시 선택), 남길 줄 수
앞 N줄만 담은 새 CSV 파일
business, report
SDSL | MDS 1.0
# MDS_TITLE: 대용량 CSV 앞부분 잘라 저장
# MDS_REQUIRES: pandas
# MDS_DESC: 큰 CSV 파일에서 앞의 N줄만 떼어 가벼운 샘플 파일로 저장한다
# MDS_DESC[en]: Saves the first N rows of a large CSV file as a lightweight sample
# MDS_TAGS: business, report
# MDS_INPUT: CSV / Excel 파일 1개 (실행 시 선택), 남길 줄 수
# MDS_OUTPUT: 앞 N줄만 담은 새 CSV 파일
# MDS_AUTHOR: SDSL
# MDS_VERSION: 1.0
def parse_row_count(text: str, fallback: int) -> int:
try:
n = int(str(text).strip())
except ValueError:
return fallback
return n if n > 0 else fallback
def save_head_subset() -> pd.DataFrame | None:
path = mIO.open_file_single(dialog_title='원본 파일 선택',
file_filter='데이터 파일 (*.csv *.xlsx *.xls);;모든 파일 (*.*)')
if path is None:
return None
n_rows = parse_row_count(mIO.input('남길 줄 수를 입력하세요 (기본 200)'), 200)
df_full = mIO.read_from_file(path)
if df_full is None:
mIO.print('파일을 읽지 못했습니다.')
return None
subset = df_full.iloc[:n_rows].copy()
save_path = mIO.save_file(initial_dir=os.path.dirname(path), dialog_title='저장할 위치 선택',
file_filter='CSV 파일 (*.csv)')
if save_path is None:
mIO.print('저장이 취소되었습니다.')
return subset
subset.to_csv(save_path, index=False, encoding='utf-8-sig')
mIO.print(f'{len(subset):,}줄을 저장했습니다: {save_path}')
return subset
result = save_head_subset()