반응형

CSV 파일을 읽어 순서 유지한채 무작위 샘플링하여 2개의 CSV 파일로 저장하는 예제입니다. 

Pandas를 사용하여 구현하였습니다.




테스트에 사용한 CSV 파일입니다.  주의할점은 csv 파일에 필드를 설명하는 헤더가 꼭 있어야 합니다. 여기에선 typeA, typeB입니다.  

 

typeA, typeB
AA1,BB1
AA2,BB2
AA3,BB3
AA4,BB4
AA5,BB5
AA6,BB6
AA7,BB7
AA8,BB8
AA9,BB9
AA10,BB10
AA11,BB11
AA12,BB12
AA13,BB13
AA14,BB14
AA15,BB15
AA16,BB16
AA17,BB17
AA18,BB18
AA19,BB19
AA20,BB20
AA21,BB21
AA22,BB22
AA23,BB23
AA24,BB24
AA25,BB25




실행 후, 다음 2개의 파일로 분리되었습니다.

 

typeA, typeB
AA1,BB1
AA3,BB3
AA5,BB5
AA6,BB6
AA7,BB7
AA8,BB8
AA11,BB11
AA13,BB13
AA15,BB15
AA20,BB20
AA22,BB22
AA25,BB25
typeA, typeB
AA2,BB2
AA4,BB4
AA9,BB9
AA10,BB10
AA12,BB12
AA14,BB14
AA16,BB16
AA17,BB17
AA18,BB18
AA19,BB19
AA21,BB21
AA23,BB23
AA24,BB24




사용한 전체 코드입니다. 

 

import pandas as pd


filepath = 'test.csv'


# CSV 파일을 로드합니다.
df_data = pd.read_csv(filepath)


# 50% 비율로 샘플링한 후, 인덱스 컬럼을 기준으로 정렬합니다.
# 인덱스 정렬은 Pandas에 로드될때 자동으로 생성되며 csv 파일로 저장시 제거하도록 설정합니다.
df_file1 = df_data.sample(frac=0.5, random_state=2022).sort_index()

# df_file1에 없는 로우(row)만 df_file2에 포함되도록 합니다.
df_file2 = df_data.drop(df_file1.index)

# csv 파일로 저장합니다.
df_file1.to_csv('file1.csv', sep=',', na_rep='NaN', index = False)
df_file2.to_csv('file2.csv', sep=',', na_rep='NaN', index = False)



반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.

도움이 되셨다면 토스아이디로 후원해주세요.
https://toss.me/momo2024


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts