선택 참고 실습 · 기존 CSV/DataFrame 과정

아래의 교시·시간·제출 안내는 기존 실습을 재현하기 위한 기록입니다. 현재 9주차의 공통 과제나 제출·귀가 조건으로 적용하지 않습니다. 필요한 개념과 코드를 찾아 활용하세요. 현재 9주차 1교시: AI와 데이터 프로젝트 시작하기 →

공공데이터 / CSV / pandas / DataFrame

참고 실습 3: 나만의 문화공간 CSV 만들기

내가 정한 지역과 종류로 문화공간을 골라 CSV로 저장합니다. 파일을 다시 읽고 검사한 뒤 노트북과 결과 CSV를 제출합니다.

9주차3교시기본 50분개인 실습

실제 데이터로 완성하는 나의 문화공간 목록

오늘의 학습 목표

  • 자신의 지역·종류·방문 목적에 맞는 후보 목록을 만듭니다.
  • to_csv의 index와 encoding 옵션을 설명하고 결과를 저장합니다.
  • 저장한 CSV를 다시 읽어 확인하고 노트북과 함께 제출합니다.

교안과 노트북을 함께 보는 방법

노트북 하나를 세 교시 동안 이어서 사용합니다. 셀 번호는 제목의 번호이며 실행 버튼 옆의 실행 횟수와 다릅니다. 교안의 코드는 해당 셀의 설명입니다. 같은 코드를 새 셀에 덧붙이지 말고 번호가 같은 기존 셀을 실행하세요.

지금 실행할 범위
교시노트북 위치끝났을 때 보일 결과
1교시셀 1준비 완료와 입력 파일명
2교시셀 2~7전체 → 마포구 → 마포구 도서관
3교시셀 8~11나의 후보 → 새 CSV → 다시 읽기 → 검사

각 단원은 실행 절차 뒤에 개념 풀이, 실제 데이터 도해, 예상과 결과를 비교하는 연습이 이어집니다. 먼저 기존 셀의 결과를 확인하고, 설명을 읽으며 그 결과가 나온 이유를 짚어 보세요. 읽기용 예시 코드는 새 셀에 추가하지 않습니다.

0-5분 · 공통 예제에서 나의 목록으로

2교시에는 마포구의 도서관을 같은 코드로 골랐습니다. 이번에는 자기 지역·시설 종류·방문 목적으로 후보 목록을 만들고 CSV로 저장합니다. 공통 예제는 그대로 두고 selected라는 별도 표에 나의 결과를 담습니다.

실행 위치: 같은 노트북의 셀 8 → 9 → 10 → 11. 런타임을 다시 시작했다면 셀 1~7을 먼저 실행합니다.

조건 선택 → CSV 저장 → 다시 읽기 → 검사 → 두 파일 제출

노트북을 처음 여는 경우에는 실습 노트북을 Colab에 업로드하고, 1교시의 준비 절차부터 진행합니다.

개인 실습의 완료 기준
항목확인할 것
개인 선택자치구 1개, 종류는 전체 또는 1개. 실제 후보 시설명과 목적 작성
출력8개 열, 1행 이상의 CSV
검사원본 보존, 선택 조건과 저장 내용 일치
제출실행 결과가 담긴 .ipynb + 결과 .csv

목표 달성형 개인 실습

자동 검사 PASS와 두 파일 제출이 확인되면 필수 실습이 끝나며 즉시 귀가할 수 있습니다. 작업 속도와 남은 시간은 평가에 반영하지 않습니다. 선택 확장은 추가 점수나 귀가 조건에 포함하지 않습니다.

공통 예제를 내 문제에 적용한다는 것

공통 예제에서는 모두 같은 조건을 사용했으므로 결과도 비교하기 쉬웠습니다. 개인 실습에서는 지역과 종류가 달라질 수 있지만 읽기·선택·저장·확인의 구조는 유지됩니다. 코드를 새로 많이 쓰는 것보다 입력값이 달라졌을 때 어느 부분이 바뀌고 어느 부분은 그대로인지 이해하는 것이 목표입니다.

예를 들어 마포구 도서관 목록을 만들던 코드에서 지역을 종로구로 바꾸면 대상 시설이 달라집니다. 조건 선택의 원리와 출력할 8개 항목은 그대로입니다. 같은 방법으로 다른 질문에 답할 수 있다는 점이 프로그램을 재사용하는 이유입니다. 이번에는 자신이 설명할 수 있는 질문 하나에 이 방법을 적용합니다.

전체 표에서 두 갈래로 이어지는 결과
공통 출발점 · places

모든 자치구의 시설
8개 데이터 열
셀 5에서 준비

2교시의 예제

마포구 → 도서관
mapo_libraries
같은 과정과 결과를 함께 확인

3교시의 개인 적용

내 지역 → 내 종류
selected
나의 목적에 맞는 후보와 이유

개인 실습은 places에서 새로 시작합니다. 마포구만 남은 표 안에서 다른 지역을 찾지 않습니다.

기억할 점 개인 적용에서는 입력과 판단을 바꾸되, 이미 확인한 실행 순서를 이어 씁니다.

후보 목록이 답할 질문을 구체적으로 정하기

“좋은 문화공간을 찾는다”는 목적만으로는 어떤 행이 좋은지 계산할 기준이 없습니다. 이번 데이터로 표현할 수 있는 지역과 종류를 먼저 정하고, 실제 시설 중 관심이 가는 후보를 고릅니다. 그리고 그 후보를 어떤 활동에 활용하고 싶은지 문장으로 설명합니다.

개인적인 목적은 다양해도 됩니다. 조용히 책을 읽을 곳, 공연을 살펴볼 곳, 동네 문화시설을 폭넓게 조사할 목록처럼 출발점을 정합니다. 다만 조용함이나 현재 공연 여부처럼 이 표에 직접 없는 속성을 이미 검증한 사실처럼 쓰지 않습니다. 목록을 얻은 뒤 확인할 내용으로 분리하면 질문이 더 정확해집니다.

목적을 조건과 확인 질문으로 나누기
방문·조사 목적이번 코드에 넣을 조건후보를 고른 뒤 확인할 것
작업 후 읽을 책을 찾을 장소마포구 / 도서관방문할 날짜의 운영시간과 이용 방식
종로구 문화시설의 종류를 폭넓게 탐색종로구 / 전체관심 후보의 실제 프로그램과 비용
집 근처 공연 공간 후보 정리자신의 자치구 / 공연장현재 일정·예약 가능 여부·이동 경로

기억할 점 조건으로 고르는 사실과 나중에 확인할 기대를 구분하면 선택 이유가 구체적이 됩니다.

시작 전 메모 · 오늘 만들 파일의 한 문장 설명

먼저 예상: 완성한 CSV를 친구에게 보내면서 어떤 파일이라고 설명할 건가요?

  1. 지역과 종류를 포함해 “어떤 기록을 모은 파일인지” 적습니다.
  2. 그 목록이 필요한 자신의 목적을 적습니다.
  3. 이번 표로 확인하지 못하는 정보 하나를 덧붙입니다.

관찰할 것: 최종 결과를 설명할 문장이 셀 8의 조건과 연결되는지 확인합니다.

다음 단계로 가기 전: 기존 셀의 값은 바꾸지 않습니다.

풀이와 확인 기준

“마포구에 등록된 도서관 후보 목록이며 작업 후 방문할 곳을 찾기 위한 자료다. 운영시간은 따로 확인한다”처럼 범위를 정할 수 있습니다.

셀 8 실행 후 실제 시설명 하나를 추가하면 selection_reason에 쓸 구체적인 설명이 됩니다.

5-18분 · 셀 8: 나의 지역과 종류 고르기

자기 지역을 고르려면 마포구만 남은 표에서 출발하면 안 됩니다. 모든 자치구가 있는 places에서 다시 고릅니다. 지역을 먼저 선택하고, 종류가 전체가 아니면 그 결과에서 종류를 한 번 더 선택합니다. 2교시와 같은 순서입니다.

지역을 바꾸면 어떤 행이 남을까?

2026-10-21 원본에서 8개 열을 추출한 미리보기입니다. 지역과 종류를 골라 조건에 맞는 시설을 확인하세요. 입력할 지역·종류를 미리 골라 보고, 아래 셀 8의 두 변수에 옮겨 적습니다. 이 화면을 바꾸어도 Colab 코드는 자동으로 바뀌지 않습니다.

내 후보 목록의 조건

미리보기를 불러오는 중입니다. 아래의 코드 실습은 미리보기 없이도 진행할 수 있습니다.

미리보기를 불러오는 중입니다. 아래의 코드 실습은 미리보기 없이도 진행할 수 있습니다.
# 셀 8에서 바꿀 두 값
district = "마포구"
category = "전체"

선택 결과의 앞 8행 · 전체 결과는 Colab에서 확인
원본 인덱스문화시설명주제분류자치구무료구분

노트북 셀 8 · 나의 방문 후보 선택

수정할 것: district와 category를 고르고 실행합니다. 실제 후보를 본 뒤 selection_reason을 고쳐 다시 실행합니다.

성공 확인: 내 지역·종류에 맞는 후보가 1행 이상 보이고 선택 이유에 실제 시설명이 들어 있습니다.

셀 8의 코드 · 같은 번호의 기존 셀을 실행하세요.

셀 8의 코드 · 같은 번호의 기존 셀을 실행하세요.
district = "마포구"
category = "전체"
selection_reason = "EDIT: 방문 후보 시설명과 이 목록을 만든 이유"

selected = places.loc[places["자치구"] == district].copy()
if category != "전체":
    selected = selected.loc[selected["주제분류"] == category].copy()
print(f"전체 {len(places)}행 → 선택 {len(selected)}행")
display(selected)

개인 조건을 입력값으로 바꾸기

2교시에는 코드 안의 마포구·도서관을 고정했습니다. 여기서는 그 자리를 district와 category라는 변수로 바꿉니다. 6주차의 입력값에 따라 결과가 달라지는 방식과 연결됩니다. 코드를 이해하면 실제 목록에 없는 값을 입력했을 때도 원인을 찾을 수 있습니다.

셀 8의 코드 읽기
표현하는 일출력 또는 다음 단계
district지역 조건의 값"종로구"처럼 실제 자치구 표기를 넣습니다.
category종류 조건의 값"전체"는 추가 종류 조건을 적용하지 않는 약속입니다.
selected = places.loc[...]전체 시설 표에서 내 지역을 선택공통 예제의 마포구 결과에 갇히지 않습니다.
if category != "전체":선택한 종류가 전체가 아닐 때만 실행들여쓴 다음 줄이 이 조건에 속합니다.
selected = selected.loc[...]방금 고른 지역 안에서 종류를 선택이번에는 같은 이름에 더 좁아진 결과를 받습니다.
selection_reason목적과 실제 시설을 설명하는 문장필터 연산에는 쓰이지 않으며 선택의 이유를 전달합니다.

기억할 점 조건은 코드로, 이유는 문장으로 남깁니다. 이유에 쓴 요구가 실제 조건에 반영되어 있는지도 대조합니다.

  1. district에 자치구 이름, category에 종류를 적고 셀 8을 실행합니다. 종류는 미리보기의 실제 선택지를 참고합니다.
  2. 출력에서 시설 하나를 고릅니다. 0행이면 종류를 전체로 바꾸거나 자치구 이름을 확인합니다.
  3. selection_reason에 실제 시설명과 목적을 적고 셀 8을 다시 실행합니다. 예: “마포중앙도서관을 작업 후 책을 읽을 장소의 후보로 골랐다.”
지역이나 종류가 친구와 같아도 될까?

같아도 됩니다. 자신의 목적과 실제 후보를 연결해 설명하면 됩니다. 예시 문장을 복사하기보다 본인의 방문 목적을 적습니다.

왜 if category != "전체"가 있을까?

“전체”를 고르면 종류를 제한하지 않고 지역만 선택합니다. 도서관 등 특정 종류를 고르면 조건을 한 번 더 적용합니다. 이 분기는 앞에서 배운 if를 활용하는 제공 코드입니다.

무료구분이 무료면 모든 전시도 무료일까?

시설 분류와 개별 프로그램의 비용은 다를 수 있습니다. 오늘 만든 표는 후보 목록이며 방문 전 운영시간·비용을 시설 홈페이지에서 확인합니다.

전체라는 선택지는 데이터 값이 아니라 코드의 약속이다

자치구와 주제분류에는 원본이 제공한 실제 값이 들어 있습니다. 하지만 category의 전체는 “주제분류 값이 전체인 시설을 찾는다”는 뜻이 아닙니다. 종류 조건을 생략하겠다는 입력값입니다. 그래서 if category != "전체"라는 분기가 있습니다.

category가 전체이면 지역 선택만 실행되고, 도서관이면 지역 결과 안에서 도서관 조건을 추가로 실행합니다. 둘 다 selected에 결과가 남으므로 뒤의 저장 셀은 같은 방식으로 실행할 수 있습니다. 입력에 따라 처리 과정 일부가 달라도 결과의 형식을 일정하게 유지하는 구조입니다.

종류 입력에 따라 갈라지는 셀 8
공통 · 지역 먼저

places에서 district와 같은 자치구를 선택
selected에 보관

category가 전체

추가 종류 조건을 건너뜀
그 지역의 모든 종류 유지

category가 특정 종류

선택한 지역 안에서 종류 비교
더 좁힌 결과를 selected에 다시 보관

전체는 이 코드에서 정한 조작 값입니다. 원본 주제분류에 전체라는 기록이 있다는 의미가 아닙니다.

기억할 점 입력값이 원본의 값인지, 프로그램 동작을 정하는 약속인지 구분합니다.

비교 실습 · 지역을 고정하고 종류만 바꾸기

먼저 예상: 마포구에서 종류를 전체 → 도서관으로 바꾸면 무엇이 유지되고 무엇이 줄어들까요?

  1. 셀 8에서 district = "마포구", category = "전체"로 실행해 행 수와 후보 하나를 메모합니다.
  2. 지역은 유지하고 종류만 "도서관"으로 바꾸어 실행합니다.
  3. 비교가 끝나면 자신의 최종 지역·종류를 선택하고 실제 시설명과 목적을 적습니다.

관찰할 것: 보관본은 55행 → 5행, 열은 8개 그대로입니다. 더 좁은 목록이 자신의 목적에 맞는지도 판단합니다.

다음 단계로 가기 전: 최종 조건과 selection_reason을 확정해 셀 8을 다시 실행한 뒤 셀 9~11로 진행합니다.

풀이와 확인 기준

종류 조건을 추가하면 조건을 만족하지 않는 기록이 빠집니다. 마포구라는 지역 조건은 유지됩니다.

5행이 55행보다 무조건 좋은 결과는 아닙니다. 문화공간을 폭넓게 찾는 목적이라면 전체 목록이 더 적절할 수도 있습니다.

결과가 적다고 더 좋은 목록은 아니다

조건을 추가하면 목록은 좁아지지만 자신의 목적에 더 적합해지는지는 별도 판단입니다. 도서관을 찾는다면 도서관 조건이 도움이 됩니다. 동네 문화공간의 다양한 종류를 살펴보려면 같은 조건이 필요한 후보를 제외할 수도 있습니다. 선택 이유에는 줄어든 행 수보다 그 조건을 정한 목적을 적습니다.

한 번에 여러 조건을 바꾸면 무엇 때문에 결과가 달라졌는지 알기 어렵습니다. 비교할 때는 지역을 고정하고 종류만 바꾸거나, 종류를 고정하고 지역만 바꿉니다. 7주차 이미지 실습에서 크기나 회전값을 하나씩 바꾸며 효과를 비교한 것과 같은 방식입니다.

한 요소를 바꾼 비교를 기록하는 틀
기록할 항목첫 번째 실행두 번째 실행
지역마포구마포구 · 유지
종류전체도서관 · 변경
보관본 결과55행 × 8열5행 × 8열
판단 질문다양한 시설을 볼 수 있는가?도서관을 찾는 목적에 더 가까운가?

기억할 점 같은 조건을 유지한 부분과 바꾼 부분을 함께 기록해야 비교의 근거가 생깁니다.

선택 이유에는 실제 출력의 증거를 넣는다

selection_reason은 컴퓨터의 필터 조건으로 사용되지 않습니다. 자신이 왜 그 결과를 만들었는지 설명하는 글입니다. “마포구를 골랐다”만 쓰면 코드의 입력을 반복한 것이고, “좋아 보여서 골랐다”만 쓰면 어느 시설과 어떤 목적이 연결되는지 알 수 없습니다.

출력에서 시설명 하나를 정확히 읽고, 자신의 활동 목적을 연결합니다. 예를 들어 마포중앙도서관을 책을 읽을 장소의 후보로 골랐다고 쓰면 출력의 시설과 이유가 연결됩니다. 그 시설이 현재 늦게까지 운영한다거나 반드시 조용하다는 정보는 아직 확인하지 않았으므로 단정하지 않습니다.

설명을 구체적으로 만드는 방법
초안부족한 정보보완 방향
마포구를 골랐다.목록이 필요한 목적과 실제 후보무엇을 위해, 어떤 시설을 후보로 보았는지 추가
좋은 도서관이 많아서 골랐다.좋다는 기준과 확인한 근거지역·종류 조건과 출력의 시설명을 근거로 설명
마포중앙도서관을 작업 후 책 읽을 장소의 후보로 골랐다.실제 방문을 위한 운영 정보후보 선택 이유로 사용하고 운영시간은 따로 확인

기억할 점 조건·실제 시설명·자신의 목적을 연결하고, 확인하지 않은 운영 정보는 구분합니다.

0행 결과를 만났을 때 질문을 되짚기

0행은 Python이 실행되지 않았다는 뜻이 아닙니다. 실행은 되었지만 현재 표에서 조건을 만족하는 기록을 찾지 못했다는 결과일 수 있습니다. 자치구 표기 오류, 실제로 없는 종류 조합, 이미 좁힌 표에서 다시 다른 지역을 찾는 문제를 구분합니다.

먼저 미리보기의 실제 자치구와 종류 표기를 확인합니다. 다음으로 종류를 전체로 두어 지역 조건만 확인합니다. 지역만으로는 기록이 나오는데 종류를 추가하면 0행이라면 해당 조합이 이 파일에 없는지 살펴봅니다. “그 지역에는 그런 시설이 하나도 없다”는 일반적 결론까지 바로 확장하지 않습니다.

판단 연습 · 0행을 고치려면?

먼저 예상: 선택 결과가 비었을 때 원본에 임의의 시설 한 줄을 추가해 제출해도 될까요?

  1. 조건 문자열의 표기와 출발 표 places를 확인합니다.
  2. 종류를 전체로 두어 지역 조건을 먼저 확인합니다.
  3. 실제 기록이 있는 조건 중 자신의 목적에 맞는 조합을 다시 고릅니다.

관찰할 것: 원본을 바꾸는 대신 입력과 질문을 점검하여 실제 기록으로 결과를 만듭니다.

다음 단계로 가기 전: 최종 조건과 이유를 셀 8에 남겨 다시 실행하고 셀 9부터 저장합니다.

풀이와 확인 기준

이번 과제는 실제 원본에서 조건에 맞는 행을 선택하는 작업입니다. 가상의 기록을 추가하면 선택 결과가 원본과 일치하지 않습니다.

0행은 탐색의 정보로 받아들이되, 최종 결과는 실제 방문 후보가 있는 1행 이상의 목록으로 확정합니다.

18-28분 · 셀 9: 다른 이름으로 CSV 저장하기

화면에 보이는 selected는 메모리의 표입니다. to_csv를 실행하면 파일 패널에 남는 CSV가 됩니다. 변수명과 파일명은 다른 역할을 합니다. 원본과 다른 이름으로 저장해 다시 시작할 기준을 남깁니다.

노트북 셀 9 · 새 CSV 저장

수정할 것: 학번·이름은 셀 1에서 설정합니다. 저장 코드는 그대로 실행합니다.

성공 확인: 저장 완료와 week09_학번_이름_places.csv 파일명이 표시되고 파일 패널에 파일이 생깁니다.

셀 9의 코드 · 같은 번호의 기존 셀을 실행하세요.

셀 9의 코드 · 같은 번호의 기존 셀을 실행하세요.
output_filename = f"week09_{student_id}_{student_name}_places.csv"
output_path = Path(output_filename)
assert output_path.resolve() != source_path.resolve(), "원본과 다른 파일명을 사용하세요."
selected.to_csv(output_path, index=False, encoding="utf-8-sig")
print("저장 완료:", output_filename)

표를 파일로 내보내는 호출

읽을 때는 파일 위치를 read_csv에 전달했습니다. 저장할 때는 선택한 표의 to_csv 메서드에 출력 위치를 전달합니다. 어느 객체의 메서드를 호출하는지에 따라 저장되는 내용이 달라지므로 앞의 변수 이름부터 읽습니다.

셀 9의 코드 읽기
표현하는 일출력 또는 다음 단계
f"week09_{student_id}_{student_name}_places.csv"중괄호 안의 값을 파일명에 넣음학번과 이름이 바뀌면 출력 파일명도 달라집니다.
Path(output_filename)파일 경로를 나타내는 값으로 준비source_path와 구분한 출력 경로입니다.
selected.to_csv(...)selected의 현재 내용을 CSV로 기록df.to_csv로 바꾸면 전체 표를 저장하게 됩니다.
index=False행 인덱스를 따로 쓰지 않음원본의 번호 열은 데이터이므로 남습니다.
encoding="utf-8-sig"출력 파일의 문자 저장 규칙 지정다시 읽을 때도 맞는 인코딩을 사용합니다.

기억할 점 저장 대상 표·출력 경로·저장 옵션을 각각 가리키며 설명할 수 있어야 합니다.

저장 코드에서 배울 세 부분
부분역할
output_filename학번·이름이 들어간 결과 파일명
index=Falsepandas의 행 라벨을 별도 열로 저장하지 않음
encoding="utf-8-sig"출력 CSV의 한글 인코딩 지정

CP949 원본을 읽고 UTF-8-SIG 결과를 저장해도 됩니다. 읽을 때 바이트를 문자로 해석하고, 저장할 때 새 인코딩으로 기록하기 때문입니다. 원본 파일 자체는 바뀌지 않습니다.

번호 열도 index=False 때문에 사라질까?

아닙니다. 번호는 원본 데이터의 열이므로 남습니다. index=False는 DataFrame 왼쪽의 행 라벨을 따로 기록하지 않는 옵션입니다.

파일이 보이지 않으면?

셀 9에 저장 완료가 있는지 확인하고 파일 패널을 새로고침합니다. 셀 8에서 표를 출력한 것만으로는 파일이 생기지 않습니다.

표의 이름과 파일의 이름은 별개다

selected는 Python이 실행 중인 표를 가리키는 변수명입니다. output_filename은 저장할 파일 이름을 담은 문자열이고, output_path는 그 위치를 나타냅니다. selected라는 표를 week09_학번_이름_places.csv라는 파일에 쓰는 것이므로 두 이름이 같을 필요는 없습니다.

셀 9의 selected.to_csv에서 점 앞의 표가 저장 대상입니다. 출력 파일명을 올바르게 적어도 df.to_csv를 호출하면 선택 전 전체 표를 저장하게 됩니다. 저장을 읽을 때는 “어떤 표를, 어디에, 어떤 규칙으로 쓰는가?”라는 세 질문을 확인합니다.

메모리에서 파일로 넘어가는 순간
저장 대상

selected
내 조건으로 선택한 표
현재 실행 중인 Python의 값

저장 호출

selected.to_csv(...)
표의 값을 CSV 형식으로 기록
인덱스·인코딩 옵션 적용

저장 결과

output_path
Colab 파일 패널의 새 파일
내려받을 수 있는 결과물

display는 표를 화면에 보여 주고, to_csv는 파일을 기록합니다. 서로 다른 결과를 만드는 호출입니다.

기억할 점 출력이 잘 보여도 저장 호출이 실행되었는지 따로 확인해야 합니다.

index=False가 막는 불필요한 첫 열

DataFrame을 CSV로 저장할 때 인덱스까지 쓰면 데이터 열 앞에 행 라벨이 한 항목으로 추가될 수 있습니다. 인덱스 이름이 없는 이번 표를 기본 옵션으로 저장한 뒤 다시 읽으면 Unnamed: 0 같은 열이 생길 수 있습니다. 원본 8개 항목만 전달하려면 index=False를 사용합니다.

번호는 데이터 열이므로 index=False로 사라지지 않습니다. 예를 들어 마포중앙도서관의 원본 인덱스는 727이고 번호 값은 715입니다. 이번 결과 CSV에는 번호 715를 남기고 인덱스 727은 별도 열로 쓰지 않습니다. 두 숫자가 서로 다른 역할이라는 점을 실제 기록에서 확인합니다.

같은 한 기록의 저장 모양 비교 · 세 열만 발췌
인덱스까지 저장한 예
코드 예시 · 본문의 실행 순서와 함께 확인
,번호,문화시설명,자치구
727,715,마포중앙도서관,마포구

헤더 앞의 빈 항목에 행 라벨이 들어갑니다.

index=False로 저장한 예
코드 예시 · 본문의 실행 순서와 함께 확인
번호,문화시설명,자치구
715,마포중앙도서관,마포구

번호·시설명·자치구 데이터만 들어갑니다.

설명을 위해 실제 기록의 3개 데이터 열만 발췌했습니다. 과제의 결과 CSV에는 8개 데이터 열이 저장됩니다.

기억할 점 인덱스를 저장하지 않는다는 말과 번호라는 데이터 열을 지운다는 말은 다릅니다.

입력과 출력의 인코딩이 달라도 되는 이유

read_csv는 원본의 바이트를 인코딩 규칙에 맞춰 문자로 읽어 표를 만듭니다. to_csv는 표의 문자를 지정한 인코딩 규칙으로 새 바이트에 기록합니다. 중간의 DataFrame에서 시설명을 문자로 다루므로 입력과 출력 파일의 바이트 표현을 같게 유지할 필요는 없습니다.

이번 원본은 CP949이고 결과는 UTF-8-SIG로 저장합니다. UTF-8-SIG는 UTF-8에 식별용 표시를 붙이는 방식이며 일부 스프레드시트 앱에서 인코딩을 인식하는 데 도움이 됩니다. 모든 프로그램의 표시를 보증하는 옵션은 아니므로 저장한 파일을 Python에서 다시 읽어 한글과 열 구조를 확인합니다.

읽는 규칙과 쓰는 규칙을 각각 정한다
원본 CSV

CP949 바이트
source_encoding으로 해석

DataFrame

시설명을 문자 값으로 다룸
지역·종류 조건으로 선택

결과 CSV

UTF-8-SIG 바이트
새 파일을 같은 규칙으로 재읽기

원본과 결과의 파일 내용은 달라집니다. 선택한 행·열과 문자가 의도대로 전달되는지가 확인 기준입니다.

기억할 점 원본 파일을 덮어쓰지 않고, 결과 파일의 저장 규칙을 명시합니다.

저장 코드 읽기 · 한 부분씩 목적 설명하기

먼저 예상: 저장 파일명만 맞으면 내용도 자동으로 맞을까요?

  1. 셀 9에서 저장 대상 표 이름을 가리킵니다.
  2. 출력 경로와 원본 경로가 다른지 설명합니다.
  3. index=False와 encoding이 각각 무엇을 바꾸는지 말합니다.

관찰할 것: 저장 대상, 위치, 형식 옵션을 각각 설명할 수 있는지 확인합니다.

다음 단계로 가기 전: 기존 셀의 값은 바꾸지 않습니다.

풀이와 확인 기준

파일명은 내용의 정체를 보증하지 않습니다. selected를 저장했는지와 선택 결과가 최신인지 확인해야 합니다.

index는 행 라벨의 기록 여부이고 encoding은 문자를 바이트로 쓰는 규칙입니다. 서로 다른 문제를 해결합니다.

28-35분 · 셀 10: 저장한 파일 다시 읽기

저장 전 표를 다시 출력하는 것만으로는 실제 파일을 확인할 수 없습니다. 셀 10은 방금 저장한 CSV를 read_csv로 읽습니다. 셀 9에서 정한 output_path를 그대로 사용하므로 파일명을 다시 입력하지 않습니다.

노트북 셀 10 · 저장한 CSV 다시 읽기

수정할 것: 수정 없이 실행합니다.

성공 확인: 저장 전과 다시 읽은 표의 행·열 수가 같고 첫 시설명이 같습니다.

셀 10의 코드 · 같은 번호의 기존 셀을 실행하세요.

직접 해보기
reloaded = pd.read_csv(output_path, encoding="utf-8-sig")
print("저장 전:", selected.shape, "다시 읽은 후:", reloaded.shape)
print("열 이름:", reloaded.columns.tolist())
display(reloaded.head())

저장한 파일을 새로운 입력으로 사용

선택한 표를 화면으로 확인하는 단계와 디스크의 파일을 확인하는 단계는 다릅니다. reloaded라는 다른 이름을 쓰면 저장 전·후의 대상을 혼동하지 않고 비교할 수 있습니다.

셀 10의 코드 읽기
표현하는 일출력 또는 다음 단계
pd.read_csv(output_path, ...)원본이 아니라 출력 파일을 읽음같은 read_csv를 다른 입력에 다시 사용합니다.
reloaded = ...재읽기 결과를 별도 변수로 받음selected와 나란히 비교할 수 있습니다.
selected.shape / reloaded.shape저장 전후 행·열 수를 대조크기가 같다는 것은 첫 번째 확인이며 값 확인도 필요합니다.
reloaded.columns.tolist()불필요한 열이 추가되었는지 확인8개 이름이 같은 순서로 있어야 합니다.

기억할 점 저장했다고 가정하지 않고 실제 파일을 새로 읽어 확인합니다.

직접 해보기

저장 전후를 직접 대조하기

두 표의 행·열 수를 비교하고 열 이름에 번호·문화시설명·자치구가 있는지 봅니다. 셀 8과 셀 10의 첫 시설명도 비교합니다. 이 세 가지가 같으면 다음 검사로 넘어갑니다.

다시 읽은 인덱스가 0부터 시작하면 잘못 저장된 것일까?

아닙니다. 인덱스를 따로 저장하지 않았기 때문입니다. 비교할 대상은 인덱스 모양보다 선택한 데이터 열과 시설 기록의 값입니다.

왜 저장한 직후에 다시 읽는가?

저장 완료가 출력되었다는 것은 파일 쓰기 호출을 마쳤다는 증거입니다. 하지만 원하는 표를 저장했는지, 불필요한 열이 생기지 않았는지, 조건 변경 뒤 최신 결과를 썼는지는 내용을 다시 확인해야 알 수 있습니다. 저장 후 재읽기는 파일을 새로운 입력으로 삼아 결과를 검토하는 과정입니다.

여기서 다시 selected를 출력하면 메모리의 표만 보게 됩니다. 셀 10은 output_path의 파일을 읽어 reloaded라는 새 표에 담습니다. 서로 다른 대상을 비교하도록 이름을 나눈 이유입니다. 파일이 오래된 상태라면 selected는 맞고 reloaded는 다를 수 있습니다.

확인할 두 대상
저장 전 · selected

셀 8의 현재 선택 결과
“내가 저장하려던 내용”

저장 후 · reloaded

셀 9의 파일을 셀 10에서 다시 읽음
“실제 파일에서 나온 내용”

두 표는 저장 경로를 사이에 두고 연결됩니다. 같은 변수를 두 번 출력하는 것으로 이 비교를 대신하지 않습니다.

기억할 점 재읽기는 저장하려던 내용과 실제로 저장된 내용을 대조하는 절차입니다.

크기가 같다는 것은 필요한 확인 중 하나다

두 표가 모두 5행 × 8열이어도 시설 기록이 서로 다를 수 있습니다. 열 이름의 순서가 같아도 한 행의 주소가 바뀔 수 있습니다. 따라서 shape가 같다는 사실만으로 내용이 완전히 일치한다고 결론 내리지 않습니다. 먼저 크기, 다음 열 이름, 다음 값과 조건을 순서대로 확인합니다.

직접 확인할 때는 첫 시설명과 지역·종류를 읽고, 제공 검사는 실제 전체 선택 결과와 저장 파일의 값을 대조합니다. 사람이 모든 칸을 눈으로 대조하기 어려운 부분은 코드의 도움을 받되, 검사가 무엇을 비교하는지 이해하고 결과를 설명할 수 있어야 합니다.

저장 전후 비교의 단계
확인 대상찾을 수 있는 문제이것만으로는 부족한 이유
행·열 수행 누락, 추가 인덱스 열같은 크기의 다른 내용일 수 있음
열 이름과 순서잘못된 항목·순서값이 달라도 이름은 같을 수 있음
시설명·지역·종류 값오래된 조건이나 잘못된 대상몇 행만 눈으로 보면 다른 행을 놓칠 수 있음
제공 검사의 전체 대조원본 조건 결과와 파일의 불일치방문 목적의 타당성과 최신 운영 여부는 별도

기억할 점 크기 → 구조 → 값으로 확인의 깊이를 늘립니다.

다시 읽은 인덱스가 달라도 데이터는 같을 수 있다

index=False로 저장하면 원래 행 라벨은 CSV의 데이터 항목에 포함되지 않습니다. 새 파일을 읽을 때 pandas는 0부터 새 인덱스를 붙입니다. 마포중앙도서관 옆의 왼쪽 숫자가 원본의 727과 달라져도 번호 열의 715와 시설명·주소 등이 일치하면 같은 기록을 전달한 것입니다.

저장과 재읽기에서는 자료형 추론도 다시 일어납니다. 전체 원본에 문자 형태의 비정상 좌표가 섞여 있으면 열을 문자열로 읽을 수 있지만, 선택한 일부 행만 담긴 파일에서는 숫자로 추론할 수 있습니다. 제공 검사는 이런 차이를 고려해 비교합니다. 이번 주의 학습자는 열·조건·기록의 일치를 확인하는 데 집중합니다.

기억할 점 행 라벨과 저장한 데이터 값을 구분하여, 달라져도 되는 부분과 반드시 같아야 하는 부분을 판단합니다.

추론 문제 · 파일을 다시 읽었는데 다른 지역이 보인다

먼저 예상: 셀 8은 종로구인데 셀 10에는 마포구가 보이면 어디부터 확인할까요?

  1. 셀 8을 실제로 실행했는지 확인합니다.
  2. 조건을 바꾼 뒤 셀 9를 실행했는지 확인합니다.
  3. 셀 10이 source_path가 아닌 output_path를 읽는지 확인합니다.

관찰할 것: 코드에 적힌 값, 현재 메모리의 값, 파일의 값을 구분합니다.

다음 단계로 가기 전: 실습 중 조건을 바꾸었다면 최종 선택을 셀 8에 남긴 뒤 셀 8~11을 순서대로 실행합니다.

풀이와 확인 기준

조건 문자열을 편집하는 것만으로 selected나 파일이 갱신되지 않습니다. 셀 8 실행으로 표를 바꾸고 셀 9로 저장해야 합니다.

최종 조건을 확인한 뒤 셀 8 → 9 → 10 → 11을 실행하면 선택·파일·검사가 같은 입력을 기준으로 연결됩니다.

35-42분 · 셀 11: 제출 전 검사하기

셀 11은 교수자가 제공하는 자동 검사입니다. 코드를 수정하지 않고 실행하면 작성자·원본 보존·선택 조건·저장 내용의 일치를 확인합니다. 선택 이유가 타당한지는 교수가 읽고 확인합니다.

노트북 셀 11 · 제출 전 자동 검사

수정할 것: 제공된 검사 코드는 수정하지 않고 실행합니다.

성공 확인: WEEK 09 PUBLIC DATA COMPLETE가 표시됩니다. 실패하면 안내된 셀을 고친 뒤 셀 8~11을 순서대로 실행합니다.

PASS · 원본 보존 / 선택 조건 / CSV 내용 일치

WEEK 09 PUBLIC DATA COMPLETE

검사에 실패하면 돌아갈 곳
출력 또는 상황고칠 셀다시 실행할 순서
학번·이름·입력 파일 문제셀 1셀 1~11
선택 이유 미작성 또는 0행셀 8셀 8 → 9 → 10 → 11
불필요한 열 / Unnamed: 0셀 9의 index=False 확인셀 9 → 10 → 11
조건을 바꾼 뒤 저장 내용 불일치셀 8의 조건 확인셀 8 → 9 → 10 → 11
왜 0행 검색 결과는 제출 검사에서 실패할까?

검색 결과로는 정상입니다. 다만 이번 결과물은 실제 방문 후보가 담긴 목록이므로 1행 이상이 필요합니다. 종류를 전체로 풀거나 지역 표기를 확인합니다.

참고: 검사 코드에서 자료형을 지정하는 이유

일부 행만 저장하면 읽을 때 자동 추론한 자료형이 달라질 수 있습니다. 제공 검사는 선택 표의 자료형으로 재읽고 숫자 열의 미세한 소수점 차이를 허용합니다. 이 검사 내부 코드는 이번 주에 직접 작성할 범위에 포함하지 않습니다.

자동 검사와 사람이 확인할 부분

자동 검사는 조건과 데이터의 일치를 확인할 수 있지만, 방문 목적이 타당한지나 실제 운영 상황이 어떤지는 판단하지 않습니다. 통과 문구가 뜻하는 범위를 알면 결과를 과장하지 않고 제출할 수 있습니다.

셀 11의 코드 읽기
표현하는 일출력 또는 다음 단계
원본 보존 검사작업 중 입력 파일이 달라졌는지 비교원본을 덮어쓰지 않았는지 확인합니다.
선택 결과 비교지역·종류 조건에 맞는 원본 행과 대조일부 행을 실수로 누락하거나 다른 행을 넣으면 실패합니다.
저장 파일 재읽기디스크의 파일을 다시 읽어 비교메모리의 표만 맞고 파일이 오래된 경우를 찾습니다.
selection_reason 작성 여부설명 칸이 채워졌는지 확인내용의 설득력은 교수자가 확인합니다.

기억할 점 PASS는 정해진 파일·코드 검사를 통과했다는 뜻이며 모든 정보가 최신이라는 보증은 아닙니다.

노트북의 실행 순서가 결과의 일부다

노트북은 코드가 위에 적혀 있다고 자동으로 모두 실행되는 문서가 아닙니다. 실행한 셀만 현재 런타임에 영향을 줍니다. 셀 8의 문자열을 수정했어도 실행하지 않았다면 selected는 이전 결과입니다. 셀 8만 실행했다면 selected는 새 결과지만 CSV는 이전 파일일 수 있습니다.

따라서 조건을 바꾼 뒤에는 선택 → 저장 → 재읽기 → 검사의 연결을 다시 실행합니다. 검사가 실패했다고 검사 셀을 여러 번 누르면 이미 잘못된 입력을 반복해서 확인할 뿐입니다. 실패 메시지가 가리키는 지점으로 돌아가 결과를 만드는 단계부터 복구합니다.

조건을 바꾼 뒤 다시 실행할 순서
셀 8 · 선택

최종 지역·종류·이유
selected 갱신

셀 9 · 저장

selected의 현재 내용
결과 CSV 갱신

셀 10 → 11 · 확인

파일을 다시 읽음
원본 조건과 저장 내용 대조

앞 단계의 값을 바꾸면 그 값을 사용하는 뒤 단계도 다시 실행해야 합니다.

기억할 점 검사 결과를 고치려면 검사 문구가 아니라 결과를 만드는 입력과 실행 순서를 고칩니다.

자동 검사의 통과가 뜻하는 범위

이번 검사는 원본이 보존되었는지, 필요한 8개 항목이 있는지, 원본에 개인 조건을 적용한 결과와 selected가 일치하는지, 저장 파일을 읽은 내용도 같은지 확인합니다. 55행이나 5행이라는 고정 숫자를 맞추는 검사가 아니므로 최신 파일과 개인 조건에 따라 다른 개수가 나올 수 있습니다.

선택 이유의 작성 여부는 확인할 수 있지만 글의 타당성은 사람이 읽어야 합니다. 자동 검사가 통과했어도 시설의 현재 운영시간이 보장되는 것은 아니고, 자신의 목적이 적절하게 설명되었다는 평가도 별도로 필요합니다. 기술적 재현과 내용 해석은 연결되어 있지만 같은 검사는 아닙니다.

코드로 확인하는 부분과 설명으로 확인하는 부분
기준자동 검사직접 설명
원본과 결과의 관계같은 원본에 조건을 적용한 결과와 대조무슨 기준으로 골랐는가
저장 내용파일의 열·행·값 일치 확인왜 이 항목들이 필요한가
선택 이유미작성·기본 문구 여부 확인실제 시설명과 목적이 연결되는가
사용 범위현재 운영 정보까지 검사하지 않음추가로 무엇을 확인해야 하는가

기억할 점 PASS가 확인하는 사실과 자신의 설명이 보완할 판단을 구분합니다.

오류 진단 · 세 상황의 복구 순서

먼저 예상: 모든 실패를 셀 11만 다시 실행해서 해결할 수 있을까요?

  1. 조건은 바꾸었지만 저장하지 않은 경우에 다시 실행할 셀을 적습니다.
  2. 결과에 Unnamed: 0이 추가된 경우의 옵션을 찾습니다.
  3. 이유가 예시 문구 그대로인 경우 수정할 변수를 찾습니다.

관찰할 것: 실패의 원인과 최소한의 재실행 범위를 연결합니다.

다음 단계로 가기 전: 기존 셀의 값은 바꾸지 않습니다.

풀이와 확인 기준

조건 변경은 셀 8부터 11까지, 인덱스 저장 문제는 셀 9의 index=False를 확인하고 9부터 11까지 실행합니다.

이유는 셀 8의 selection_reason을 자신의 문장으로 고칩니다. 선택과 저장을 일관되게 확인하도록 셀 8~11을 실행합니다. 셀 11은 고칠 대상이 아니라 확인할 도구입니다.

42-48분 · 두 파일 제출하기

최종 조건과 선택 이유를 저장한 뒤 위에서부터 모두 실행합니다. 공통 예제는 다른 변수에 있으므로 셀 8에 적어 둔 개인 조건은 그대로 적용됩니다. 런타임을 다시 시작했다면 셀 1부터, 업로드 파일이 사라졌다면 같은 원본을 다시 준비합니다.

제출 01week09_학번_이름.ipynb제출 02week09_학번_이름_places.csv
  1. Colab 문서 제목을 week09_학번_이름으로 바꿉니다.
  2. 완료 문구가 보이는 상태에서 파일 → 다운로드 → .ipynb 다운로드를 선택합니다.
  3. 파일 패널에서 셀 9가 만든 결과 CSV를 내려받습니다.
  4. 두 파일을 제출하고 업로드 완료를 확인합니다.

원본도 개인 폴더에 보관하기

수업 보관본은 노트북에 포함되어 복구할 수 있습니다. 직접 받은 최신 자료는 나중에 재실행할 때 같은 원본을 다시 올려야 합니다. 노트북과 결과 CSV 두 파일만으로 최신 원본 전체가 복구되지는 않습니다.

예시 CSV와 행 수가 달라도 될까?

자기 지역·종류가 다르거나 최신 원본의 내용이 바뀌면 달라도 됩니다. 자신의 원본에 자신의 조건을 적용한 결과와 저장 파일이 일치하는지가 기준입니다.

실행한 노트북과 결과 CSV는 서로 다른 증거다

노트북에는 어떤 입력을 사용하고 어떤 조건을 적용했는지, 중간 결과가 무엇이었는지, 마지막 검사가 통과했는지가 남습니다. CSV에는 다른 프로그램에서 다시 사용할 수 있는 선택 결과가 남습니다. 하나는 과정과 설명의 기록이고 다른 하나는 그 과정이 만든 데이터 결과물입니다.

CSV만 제출하면 어떤 버전의 원본과 어떤 조건으로 만들었는지 확인하기 어렵습니다. 노트북만 제출하면 파일로 저장한 결과를 별도로 활용하거나 대조하기 어렵습니다. 두 파일을 함께 제출하되, 파일명이 같아 보인다는 이유만으로 서로 같은 실행의 결과라고 가정하지 말고 최종 실행 뒤 각각 내려받습니다.

제출 파일이 전달하는 정보
.ipynb · 과정

출처·수집 날짜
최종 조건·선택 이유
셀 실행 결과·완료 문구

.csv · 결과

최종 조건에 맞는 기록
8개 데이터 항목
다른 도구로 읽을 수 있는 표

직접 받은 원본은 개인 폴더에 별도로 보관합니다. 최신 원본 전체가 두 제출 파일에 자동으로 포함되는 것은 아닙니다.

기억할 점 설명할 수 있는 과정과 다시 사용할 수 있는 결과를 함께 남깁니다.

다운로드 시점까지 맞춰야 최종본이 된다

노트북에서 최종 조건을 바꾼 뒤 CSV를 새로 저장했더라도, 내 컴퓨터에 먼저 내려받아 둔 CSV는 자동으로 바뀌지 않습니다. Colab 파일과 내 컴퓨터 파일은 별개입니다. 최종 검사를 마친 다음 두 파일을 내려받고, 제출할 파일이 그때 받은 버전인지 확인합니다.

중복 다운로드로 (1), (2)가 붙었다면 이름만 보고 급하게 제출하지 않습니다. 최종 다운로드 시점과 파일 내용을 확인하고 수업에서 정한 제출 이름으로 정리합니다. 노트북의 지역·종류와 CSV의 지역·종류가 맞는지 한 번 더 읽으면 이전 파일을 잘못 제출하는 일을 줄일 수 있습니다.

제출 직전의 실제 확인
질문확인할 증거
내 조건이 노트북에 남아 있는가셀 8의 지역·종류·실제 시설을 포함한 이유
최종 조건으로 모두 실행했는가셀 11의 완료 문구와 최신 출력
최종 파일을 내려받았는가검사 완료 뒤 다운로드한 노트북·CSV
제출이 끝났는가제출 시스템의 두 파일과 업로드 완료 표시

기억할 점 Colab에서 만들기, 내 컴퓨터로 받기, 제출 시스템에 올리기를 각각 확인합니다.

마지막 설명 · 내 목록을 소개하기

먼저 예상: 숫자와 파일명만 말하지 않고 결과의 의미를 소개할 수 있나요?

  1. 사용한 자료명과 수집 날짜를 말합니다.
  2. 자신의 지역·종류·선택 이유와 실제 후보 하나를 말합니다.
  3. 저장 전후가 같다는 증거와 아직 확인하지 않은 정보를 말합니다.

관찰할 것: 입력 → 조건 → 실제 결과 → 검사 → 활용 한계를 연결해 짧게 설명합니다.

다음 단계로 가기 전: 기존 셀의 값은 바꾸지 않습니다.

풀이와 확인 기준

예: “수업 보관본에서 마포구 도서관을 골랐고, 마포중앙도서관을 책 읽을 장소의 후보로 삼았다. 5행·8열 CSV를 다시 읽어 조건과 내용이 같음을 확인했다. 운영시간은 방문 전에 확인한다.”

자신의 조건과 파일 버전에 맞는 값으로 설명합니다. 다른 학생과 결과가 같아도 자신의 목적과 근거가 드러나면 됩니다.

48-50분 · 다음 주 지도 학습으로 이어가기

파일 준비 → DataFrame 읽기 → 행·열 선택 → 새 CSV 저장 → 다시 읽기를 완성했습니다. 다음 주에는 위도·경도의 값이 지도에 쓰기에 적절한지 검사하고 지도 표현을 배웁니다.

10주차 공통 실습은 정제용 별도 자료입니다. 자신의 문화공간 CSV로 확장할 때는 위도·경도 열을 예제의 latitude·longitude와 대응시키고 좌표를 검증합니다.

좌표 열을 남겼다고 지도 준비가 모두 끝난 것은 아니다

이번 주에는 위도·경도를 결과에 남겼지만 그 값의 품질을 모두 검사하지 않았습니다. 빈 값이 없는지, 숫자로 읽을 수 있는지, 지도 좌표로 적절한 범위인지가 다음 단계의 질문입니다. 좌표처럼 보이는 문자열이 있다고 바로 지도에 점을 찍을 수 있다고 가정하지 않습니다.

보관본의 한국미술관 위도에는 37.5718961547884~2라는 값이 있습니다. 값은 존재하지만 하나의 숫자로 바로 해석하기 어렵습니다. 이것은 이번 CSV 선택이 틀렸다는 뜻이 아니라 원본에서 이어받은 품질 문제입니다. 원본을 보존하며 정제한 결과를 따로 만드는 이유가 여기서 이어집니다.

9주차 결과에서 10주차 질문으로
이번 주에 확인한 것

출처와 기록 단위
지역·종류 조건의 일치
저장 파일과 선택 표의 일치

다음에 확인할 것

위도·경도의 숫자 형식
빈 값과 좌표 범위
지도 표현에 사용할 수 있는 기록

10주차 공통 자료는 별도 자료입니다. 개인 CSV에 적용할 때는 열 이름을 대응시키고 같은 검사 원리를 사용합니다.

기억할 점 읽기와 선택, 품질 검사, 표현은 이어지는 단계이며 각 단계의 완료 기준은 다릅니다.

선택 확장 · 두 번째 목록 만들기

필수 제출 후 원하는 학생만 다른 지역·종류로 두 번째 목록을 만듭니다. 기존 결과를 보관하려면 먼저 내려받고, 셀 9의 출력 파일명을 다른 이름으로 바꿉니다. 8주차에 기획한 다른 CSV에도 읽기·선택·저장 흐름을 적용할 수 있지만, 열 이름이 달라 이 문화공간 전용 검사는 그대로 사용하지 않습니다.

마포구 전체 55행 × 8열 예시 CSV는 저장 형식의 참고 자료입니다.

다른 주제의 CSV에 옮길 때 바꿀 것과 유지할 것

8주차에 기획한 자신의 자료를 가져오면 파일 경로와 인코딩, 남길 열, 조건에 쓸 열과 값이 달라집니다. 먼저 그 자료의 한 행이 무엇인지 설명하고 실제 열 이름을 확인합니다. 문화공간의 자치구·주제분류를 그대로 붙여 넣기보다 자신의 질문에 해당하는 열을 찾습니다.

유지할 것은 읽기 → 구조 확인 → 필요한 항목 선택 → 조건 적용 → 다른 이름으로 저장 → 재읽기라는 순서입니다. 문화공간 전용 자동 검사는 필수 8개 열과 지역·종류를 전제로 하므로 다른 자료에 그대로 쓰지 않습니다. 검사 역시 그 자료의 의미에 맞게 다시 설계해야 합니다.

전이 연습 · 자신의 자료에 대응시키기
공통 실습의 요소개인 자료에서 정할 요소
문화시설 기록 한 행자료의 실제 기록 단위
자치구·주제분류선택할 조건 열과 정확한 값
번호·시설명·주소 등 8개 열결과를 읽고 이어 쓰는 데 필요한 항목
지역·종류 조건 일치 검사자신의 조건과 저장 결과를 확인할 기준

기억할 점 문법을 복사하는 것에서 한 단계 더 나아가, 입력의 의미와 결과의 기준을 함께 옮깁니다.

공식 자료

이 페이지의 목차