← .mpy 공유

대용량 CSV 앞부분 잘라 저장

큰 CSV 파일에서 앞의 N줄만 떼어 가벼운 샘플 파일로 저장한다

English

Saves the first N rows of a large CSV file as a lightweight sample

실행 결과 미리보기가 없는 스크립트입니다

README

대용량 CSV 앞부분 잘라 저장

설명

큰 CSV 파일에서 앞의 N줄만 떼어 가벼운 샘플 파일로 저장한다

필요 데이터

CSV / Excel 파일 1개 (실행 시 선택), 남길 줄 수

출력

앞 N줄만 담은 새 CSV 파일

필요 패키지

  • pandas

태그

business, report

작성자

SDSL | MDS 1.0

Source · 40줄
# 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()