06단계 · 실전으로 넘어가기
제출 파일 규격 직접 확인하기
`index=False` 를 빠뜨렸을 때 생기는 열을 눈으로 보고, 규격 위반을 스스로 찾는다.
먼저 알아볼게요
코드로 이동 ↓공식 가이드가 2유형에서 금지한 것들: 자동 생성되는 index 칼럼, 예측 결과 외의 칼럼, 지정되지 않은 파일명, 별도 디렉터리 지정.
to_csv("result.csv") 를 그냥 쓰면 인덱스가 이름 없는 첫 열로 저장된다. 다시 읽으면 Unnamed: 0 이라는 열이 생겨 있다. 눈으로 확인하면 두 번 다시 잊지 않는다.
index=False 를 주면 그 열이 사라진다. 제출 규격에 인덱스 열이 없다면 꼭 지정한다.
ID 열을 같이 낸 파일도 규격 위반이다. 발문이 "예측 결과 칼럼 1개" 라고 하면 정말 한 열만 낸다. 다만 발문이 ID 를 함께 요구하면 그때는 그 지시를 따른다 — 규칙은 발문이다.
가이드는 "답안은 여러 번 제출 가능하며, 마지막 제출된 코드로 생성된 CSV 파일이 채점 대상" 이라고 적고 있다. 마지막에 돌린 코드가 무엇이었는지가 곧 제출물이다.
이렇게 써요
import pandas as pd
pd.DataFrame({"pred": [1, 2]}).to_csv("demo.csv")
print(open("demo.csv").read())기억할 한 가지
index=False 를 빠뜨리면 Unnamed: 0 이 붙는다. 저장한 파일은 항상 다시 읽어서 확인한다.
직접 해보기
pred = [0.12, 0.85, 0.44] 로 ① index=False 없이 저장한 파일의 열 이름 ② index=False 로 저장한 파일의 열 이름 ③ 두 파일의 shape ④ ID 열을 같이 넣어 저장한 파일의 열 이름을 출력하세요.
내 코드 Python
Python 준비 중… 처음 한 번만 내려받아요
들여쓰기: Tab · 편집기에서 나가기: Esc 다음 Tab
실행 결과
실행하면 코드가 출력한 내용이 여기에 나타나요.
막혔을 때
풀이와 비교하기
내 코드와 한 줄씩 비교해 보세요. 풀이를 보는 것만으로 완료되지는 않아요.
import pandas as pd
pred = [0.12, 0.85, 0.44]
pd.DataFrame({"pred": pred}).to_csv("bad.csv")
pd.DataFrame({"pred": pred}).to_csv("result.csv", index=False)
print(pd.read_csv("bad.csv").columns.tolist())
print(pd.read_csv("result.csv").columns.tolist())
print(pd.read_csv("bad.csv").shape, pd.read_csv("result.csv").shape)
pd.DataFrame({"고객ID": ["C1", "C2", "C3"], "pred": pred}).to_csv("two.csv", index=False)
print(pd.read_csv("two.csv").columns.tolist())