# data[].attributes.headline
# 한글 설정과 마이너스 문제 해결 

# data[].attributes.subject
# 한글 설정과 마이너스 문제 해결 

# data[].attributes.body
# 1. 10년 동안의 온도 히스토그램으로 나타내기

#한글 설정과 마이너스 문제 해결

!pip install koreanize-matplotlib
%matplotlib inline
import matplotlib.pyplot as plt
import koreanize_matplotlib

# data[].attributes.body
SW동행 프로젝트 온라인 접속링크입니다.

https://whaleon.us/o/Itqspm/5bca56b3935a406bb430edc495c5b762

# data[].attributes.headline
2학년_2학기_수행평가 보고서 양식(약간의 변경허용)

# data[].attributes.subject
2학년_2학기_수행평가 보고서 양식(약간의 변경허용)

# data[].attributes.body
4차시 보고서 파일명

https://forms.gle/49y5K6Fde54LqQjX8

위 설문의 문항을 먼저 보고 보고서를 쓰세요

보고서를 쓰고 난후

1. 파일명: 20101_강감찬_주제명(데이터 코딩때 쓴이름).hwp

2. 제출기한: 2024.12.28(목) 오후 16:00

3. 제출: 리로스쿨_인공지능과미래사회

1, 2, 3, 4차시: 주제, 데이터 분석, 코딩 제출=> 보고서파일제출

보고서 파일을 근거로 설문지를 작성바랍니다.

# data[].attributes.attachment_link.title
01-1 더잘되는 모델(히든 3_보스턴 주택의 시각화)=

# data[].attributes.body
1. 파이썬 기초와 함께 인공지능을 경험하는 좋은 강의 감사합니다.

2. 파이썬의 위대함을 판다스(Pandas), 넘파이(Numpy), 텐스플로우(TensorFlow) 등 라이브러리를 통해...

3. 수 많은 인공지능 중 회기(regression analysis)와 분류(classification)를 해 보며 수학적으로 더욱 궁급해 졌습니다.

4. 이미지를 판별하는 CNN과정 너무 재미있었습니다.

5. 오렌지는 그동안 배운 것에 대해 연결만 하면 ==> 하지만 그 깊이 있는 학습의 궁금증은 더욱 많아졌습니다.

# data[].attributes.attachment_link.title
01 나의 진로 기사 요약

# data[].attributes.attachment_link.description
01 나의 진로 기사 요약

# data[].attributes.body
=====평가기준======

수업시간에 수행평가를 진행하므로

차시별 과정수행을 잘하였는가 (25%)와

와 프로젝트평가(50%)를 함께 진행합니다.

I. 문제구성 요소

1 주제 및 연구문제(2개)의 구성이 탁월한가?

2 데이터가 진로나 실생활에 잘 연계 되었는가?

II. 프로그램 및 모델 구현

3 프로젝트에 Ai모델을 설명

4 연구문제에 따른 데이터 분석을 시각화

5 필요한 내용들을 캡쳐

6 캡쳐한 사진 코딩이 설명과 일치

III. 보고서의 완성도

7 보고서의 문제분석 스토리텔링

8 사용한 인공지능모델의 설명

9 2인1조(X)의 팀 역할은 잘 하였는가(시간분배)

10 제출과제를 일정에 따라 잘 하였는가?

IV. 독창성이 돋보인 연구

11 우수 연구로 선정되어 ppt 발표

12 우수 연구로 선정되어 전시회로 이어짐

# 교내 디지털콘텐츠 공모전

참여할 학생을 모집합니다.(2인1조)

# data[].attributes.attachment_link.title
02 진로 자격과 업그레이드 질문

# data[].attributes.attachment_link.description
3. 내가 읽은 진로 직업을 달성하기 위해 갖추어야 할 나의 노력, 수능성적, 대학입학학과, 자격(증), 필요한 지식을 설명하세요 200자~300자 *

# data[].attributes.attachment_link.title
2024_2_2학기인공지능과 미래사회 평가계획(점수루브릭_알림2)

# data[].attributes.body
# 08 내 생일 온도그래프 그리기
# 1. 리스트 기본 그리기
import matplotlib.pyplot as plt
import csv

a = [11, 22, 38, 44, 55]
for i in range(len(a)):
    print(a[i], end = ", ")

plt.plot(a)
plt.show()

# data[].attributes.attachment_link.title
01 나의 진로 기사 요약

# data[].attributes.attachment_link.description
01 나의 진로 기사 요약

# data[].attributes.headline
# 01. 오리엔테이션, 영어타자통과

# data[].attributes.body
# 01. 오리엔테이션, 영어타자통과

정보과 수업의 시간안내

정보과 평가의 안내

영어타자

# data[].attributes.body
# 02. 엑셀기초

# data[].attributes.body
# 03. 엑셀(중간고사)

# data[].attributes.body
# 04. 용돈기입장

# data[].attributes.headline
# 05. 용돈기입장 복숩과 타자 통과

# data[].attributes.subject
# 05. 용돈기입장 복숩과 타자 통과

# data[].attributes.body
# 05. 용돈기입장 복숩과 타자 통과

# data[].attributes.body
# 06. if, for문을 이용(주사위 놀이와 빅데이터의 이해)

# data[].attributes.body
# 07. 기본코딩

# 1. 국영수 ABC등급

# 2. 구구단응용

# 3. 백합과 홀짝백합

# data[].attributes.body
# 01. 오리엔테이션

# data[].attributes.body
# 02. 엑셀기본

# data[].attributes.body
# 03. 중간고사, 정렬

# data[].attributes.headline
# 04. 등급, 구구단, 리스트, 주사위 빅데이터

# data[].attributes.subject
# 04. 등급, 구구단, 리스트, 주사위 빅데이터

# data[].attributes.body
# 04. 등급, 구구단, 리스트, 주사위 빅데이터

# data[].attributes.headline
# 05. 데이터의 시각화 기본(선, 분포, 박대), 온도데이터다운

# data[].attributes.subject
# 05. 데이터의 시각화 기본(선, 분포, 박대), 온도데이터다운

# data[].attributes.body
# 05. 데이터의 시각화 기본(선, 분포, 박대), 온도데이터다운

# data[].attributes.headline
# 06. 대구온도, 최고온도 구하기

# data[].attributes.subject
# 06. 대구온도, 최고온도 구하기

# data[].attributes.body
# 06. 대구온도, 최고온도 구하기

# data[].attributes.headline
# 2. 내 생일포함 모든 날 온도그래프 그리기

# data[].attributes.subject
# 2. 내 생일포함 모든 날 온도그래프 그리기

# data[].attributes.body
# 2. 내 생일포함 모든 날 온도그래프 그리기
import csv
import matplotlib.pyplot as plt
result = []  # 생일을 담는 그릇

path = "/content/drive/MyDrive/2025년 1,2학년-1학기 수업/2-3 일8 인공지능교사/2학년방/08 내생일 온도 그래프 구하기 /대구10년온도.csv"
f = open(path, "r", encoding = "cp949")
data = csv.reader(f, delimiter = ",")

print(data)

header = next(data)  # 제목글 통과
print(header)

for row in data:
    if row[-1] == "":
        row[-1] = -999
    else:
        result.append(float(row[-1]))

print(result)

# 데이터 시각화 하기
plt.plot(result, "r")
plt.show()

# data[].attributes.headline
# 3. 생일(날짜 데이터) 추출하기

# data[].attributes.subject
# 3. 생일(날짜 데이터) 추출하기

# data[].attributes.body
# 3. 생일(날짜 데이터) 추출하기
# 단어 축출의 의미(단어 분석)

s = "hello world"
print(s.split())   # split(" ") 공백을 기준으로 분리

# 날짜 축출
date = "2020-02-30"
print(date.split("-"))  # ==> ['1970', '10', '01']

print(date.split("-")[0])  # 년
print(date.split("-")[1])  # 월
print(date.split("-")[2])  # 일
print()

a = date.split("-")  # 변수처리
print(a[0])
print(a[1])
print(a[2])

# data[].attributes.body
# 4. 내 생일(09월 03일)만 축출하여 온도그래프

import matplotlib.pyplot as plt

path = "/content/drive/MyDrive/2025년 1,2학년-1학기 수업/2-3 일8 인공지능교사/2학년방/08 내생일 온도 그래프 구하기 /대구10년온도.csv"
f = open(path, "r", encoding = "cp949")
data = csv.reader(f, delimiter = ",")

result = []
next(data)

for row in data:
    if row[-1] != "":
        if row[0].split("-")[1] == "09" and row[0].split("-")[2] == "03":  # 09월 and 13일
            result.append(float(row[-1]))  # 형변환 후 result에 저장

# 데이터 시각화 하기
plt.plot(result, "b")
plt.show()

# data[].attributes.body
# 5. 생일날의 최고 최저 그래프 그리기
# 내 생일 온도그래프 그리기(9월 3일)
import csv
import matplotlib.pyplot as plt

path = "/content/drive/MyDrive/2025년 1,2학년-1학기 수업/2-3 일8 인공지능교사/2학년방/08 내생일 온도 그래프 구하기 /대구10년온도.csv"
f = open(path, "r", encoding = "cp949")
data = csv.reader(f, delimiter = ",")
next(data)

high = []  # 최고 저장
low = []   # 최저 저장

for row in data:
    if row[-1] != "" and row[-2] != "":

            if 2000 <= int(row[0].split("-")[0]):
                        year = int(row[0].split("-")[0])
                        month = row[0].split("-")[1]
                        day = row[0].split("-")[2]

                        if row[0].split("-")[1] == "09" and row[0].split("-")[2]== "03":
                            high.append(float(row[-1]))
                            low.append(float(row[-2]))

# 데이터 시각화 하기

plt.title("my birstday graph")

plt.plot(high, "hotpink", label = "high")
plt.plot(low, "skyblue", label = "low")
plt.legend()
plt.show()

# data[].attributes.body
# 6. 최고 최저 두개 그래프 그리기(최종)
# 내 생일 최고 최저 온도 그래프 그리기(1월 1일)

import csv
import matplotlib.pyplot as plt

path = "/content/drive/MyDrive/2025년 1,2학년-1학기 수업/2-3 일8 인공지능교사/2학년방/08 내생일 온도 그래프 구하기 /대구10년온도.csv"
f = open(path, "r", encoding = "cp949")
data = csv.reader(f, delimiter = ",")

next(data)

high = []
low = []

for row in data:
    if row[-1] != "" and row[-2] != "":
        date = row[0].split("-")

        if 2015 <= int(date[0]):

                if date[1] == "09" and date[2] == "03":
                    high.append(float(row[-1]))
                    low.append(float(row[-2]))
print(high)

# 데이터 시각화 하기

plt.title("my birstday graph")

plt.plot(high, "hotpink", label = "high")
plt.plot(low, "skyblue", label = "low")
plt.legend()
plt.show()

# data[].attributes.body
7. GPT에게 물어

import csv
import matplotlib.pyplot as plt

# 파일 경로
path = "/content/drive/MyDrive/2025년 1,2학년-1학기 수업/2-3 일8 인공지능교사/2학년방/08 내생일 온도 그래프 구하기 /대구10년온도.csv"
f = open(path, "r", encoding = "cp949")
data = csv.reader(f)
next(data)

high = []
low = []

for row in data:
    if row[-1] != "" and row[-2] != "":
        year = int(row[0].split("-")[0])
        month = row[0].split("-")[1]
        day = row[0].split("-")[2]

        if year >= 2000:
            if month == "09" and day == "03":  # 생일: 9월 3일
                high.append(float(row[-1]))
                low.append(float(row[-2]))

# 그래프 출력
plt.title("My Birthday Temperature Graph (Sep 3)")
plt.plot(high, color="hotpink", label="High")
plt.plot(low, color="skyblue", label="Low")
plt.legend()
plt.xlabel("Year")
plt.ylabel("Temperature (°C)")
plt.show()

# data[].attributes.body
# 07. 리스트의 이해 for문의 만남

# data[].attributes.body
# 2. 10년 동안의 온도 히스토그램(p83) ==> 낙타의 등모양의 해석?
import csv
import matplotlib.pyplot as plt

path = "/content/drive/MyDrive/2025년 1,2학년-1학기 수업/2-3 일8 인공지능교사/2학년방/09 10년 동안의 온도 그래프/서울온도(1905년).csv"
f = open(path, "r", encoding = "cp949")
data = csv.reader(f, delimiter = ",")

header = next(data)
print(header)
result = []

for row in data:
    if row[-1] != "":
        result.append(float(row[-1]))

plt.hist(result, bins=100, color="r")
plt.show()

# data[].attributes.body
# 3. 10년간 8월달만 온도 그래프(p84)==> 7월과 8월의 색상을 달리 비교

import matplotlib.pyplot as plt
import csv

path = "/content/drive/MyDrive/2025년 1,2학년-1학기 수업/2-3 일8 인공지능교사/2학년방/09 10년 동안의 온도 그래프/서울온도(1960년).csv"
f = open(path, "r", encoding = "cp949")
data = csv.reader(f, delimiter = ",")
next(data)

aug = []

for row in data:
    if len(row) > 0 and "-" in row[0]:  # 왜 들어가지?
        month = row[0].split("-")[1]  # 에러부분
        if row[-1] != "":
            if month == "08":
                aug.append(float(row[-1]))

# 그래프1. 8월 기온 히스토그램 그리기
plt.figure(figsize=(10, 6))
plt.hist(aug, bins=100, color="r")
plt.title("10년간 8월의 기온 분포 (서울)", fontsize=14)
plt.show()

# 그래프2. 8월 기온 히스토그램 그리기(GPT)
plt.figure(figsize=(10, 6))
plt.hist(aug, bins=100, color="salmon", edgecolor="black") # 엣지컬러
plt.title("10년간 8월의 기온 분포 (서울)", fontsize=14)
plt.xlabel("기온 (°C)")
plt.ylabel("빈도수")
plt.grid(True)  # 격자
plt.show()

# data[].attributes.body
# 4. 10년간 8월달만 온도 그래프(GPT한테 물었다.)
# 8월달의 온도 그래프 그림 그랬더니 답은 나왔다.

import csv
import matplotlib.pyplot as plt

# 파일 경로
path = "/content/drive/MyDrive/2025년 1,2학년-1학기 수업/2-3 일8 인공지능교사/2학년방/09 10년 동안의 온도 그래프/서울온도(1905년).csv"

# CSV 파일 열기
f = open(path, "r", encoding="cp949")
data = csv.reader(f)

next(data)  # 헤더 건너뛰기
aug = []

for row in data:
    if len(row) < 2:  # 데이터가 불완전할 경우
        continue

    date = row[0]
    try:
        month = date.split("-")[1]
        if row[-1] != "":
            if month == "08":
                aug.append(float(row[-1]))
    except IndexError:
        continue  # 날짜가 이상한 경우 건너뛰기

# 8월 기온 히스토그램 그리기
plt.figure(figsize=(10, 6))
plt.hist(aug, bins=100, color="salmon", edgecolor="black")
plt.title("10년간 8월의 기온 분포 (서울)", fontsize=14)
plt.xlabel("기온 (°C)")
plt.ylabel("빈도수")
plt.grid(True)
plt.show()

# data[].attributes.body
# 5. 두달의 비교(1월과 8월)시각화하기(85)==> 응용(대구 7월 8월)
import csv
import matplotlib.pyplot as plt

path = "/content/drive/MyDrive/2025년 1,2학년-1학기 수업/2-3 일8 인공지능교사/2학년방/09 10년 동안의 온도 그래프/서울온도(1905년).csv"
f = open(path, "r", encoding = "cp949")
data = csv.reader(f, delimiter = ",")
next(data)

aug = []
jan = []

for row in data:
    if row and row[0] and "-" in row[0]:

        month = row[0].split("-")[1]  # 에러 부분
        if row[-1] != "":
            if month == "08":
                aug.append(float(row[-1]))
            if month == "01":
                jan.append(float(row[-1]))

plt.figure(figsize=(12, 6))
plt.hist(aug, bins=100, color="salmon", edgecolor="black")
plt.hist(jan, bins=100, color="b", edgecolor="black")
plt.xlabel("기온 (°C)")
plt.ylabel("빈도수")
plt.legend()
plt.show()

# data[].attributes.body
# 6. 두달의 비교(1월과 8월)시각화하기(85)==> 응용(대구 7월 8월)
import csv
import matplotlib.pyplot as plt

path = "/content/drive/MyDrive/2025년 1,2학년-1학기 수업/2-3 일8 인공지능교사/2학년방/09 10년 동안의 온도 그래프/서울온도(1905년).csv"
f = open(path, "r", encoding = "cp949")
data = csv.reader(f, delimiter = ",")
next(data)

mon_7 = []
mon_8 = []

for row in data:
    if row and row[0] and "-" in row[0]:

        month = row[0].split("-")[1]  # 에러 부분
        if row[-1] != "":
            if month == "07":
                mon_7.append(float(row[-1]))
            if month == "08":
                mon_8.append(float(row[-1]))

plt.figure(figsize=(10, 6))
plt.hist(mon_7, bins=100, color="b", edgecolor="black", alpha=0.3)
plt.hist(mon_8, bins=100, color="r", edgecolor="black", alpha=0.3)
plt.xlabel("기온 (°C)")
plt.ylabel("빈도수")
plt.legend()
plt.show()

# data[].attributes.body
# 7. 두달의 비교(1월과 8월)시각화하기(85)==> 응용(대구 7월 8월)==> 가로세로 바꿈
import csv
import matplotlib.pyplot as plt

path = "/content/drive/MyDrive/2025년 1,2학년-1학기 수업/2-3 일8 인공지능교사/2학년방/09 10년 동안의 온도 그래프/서울온도(1905년).csv"
f = open(path, "r", encoding = "cp949")
data = csv.reader(f, delimiter = ",")
next(data)

mon_7 = []
mon_8 = []

for row in data:
    if row and row[0] and "-" in row[0]:
        month = row[0].split("-")[1]  # 에러 부분

        if row[-1] != "":
            if month == "07":
                mon_7.append(float(row[-1]))
            if month == "08":
                mon_8.append(float(row[-1]))

# 시각화(1) 어느것이 좋은가?

plt.figure(figsize=(10, 6))
plt.hist(mon_7, bins=100, color="b", edgecolor="black", alpha=0.3)
plt.hist(mon_8, bins=100, color="salmon", edgecolor="black", alpha=0.3)
plt.xlabel("기온 (°C)")
plt.ylabel("빈도수")
plt.legend()
plt.show()

# 시각화(2) 어느것이 좋은가?
plt.figure(figsize=(10, 6))
plt.hist(mon_7, bins=100, color="b", edgecolor="black", alpha=0.3, orientation="horizontal")  # 가로 방향으로 변경
plt.hist(mon_8, bins=100, color="salmon", edgecolor="black", alpha=0.3, orientation="horizontal")  # 가로 방향으로 변경
plt.xlabel("빈도수")  # x축 이름 변경
plt.ylabel("기온 (°C)")  # y축 이름 변경
plt.legend()
plt.show()

# data[].attributes.body
# 8. 1월과 8월의 데이터를 ==> GPT에게 물었다
# 10년간 1월과 8월의 히스토그램

import csv
import matplotlib.pyplot as plt

# 파일 경로
path = "/content/drive/MyDrive/2025년 1,2학년-1학기 수업/2-3 일8 인공지능교사/2학년방/09 10년 동안의 온도 그래프/서울온도(1905년).csv"

f = open(path, "r", encoding="cp949")
data = csv.reader(f)
next(data)

aug = []
jan = []

for row in data:
    try:
        date = row[0]

        # 날짜 형식이 - 또는 . 인 경우 모두 대응
        if "-" in date:
            month = date.split("-")[1]
        elif "." in date:
            month = date.split(".")[1]
        else:
            continue

        if row[-1] != "":
            temp = float(row[-1])
            if month == "08":
                aug.append(temp)
            elif month == "01":
                jan.append(temp)

    except Exception:
        continue  # 오류 발생 시 건너뜀

# 히스토그램 그리기
plt.figure(figsize=(12, 6))
plt.hist(aug, bins=100, color="r", alpha=0.3, edgecolor="black",label="8월")
plt.hist(jan, bins=100, color="b", alpha=0.3, edgecolor="black",label="1월")
plt.title("1월과 8월의 기온 분포 (서울)", fontsize=15)
plt.xlabel("기온 (°C)")
plt.ylabel("빈도수")
plt.legend()
plt.grid(True)
plt.show()

# data[].attributes.body
# 9. 1월과 8월의 온도비교를 박스 그래프로(GPT)

import csv
import matplotlib.pyplot as plt

# 파일 경로
path = "/content/drive/MyDrive/2025년 1,2학년-1학기 수업/2-3 일8 인공지능교사/2학년방/09 10년 동안의 온도 그래프/서울온도(1905년).csv"

f = open(path, "r", encoding="cp949")
data = csv.reader(f)
next(data)

aug = []
jan = []

for row in data:
    try:
        date = row[0]

        # 날짜 형식이 - 또는 . 인 경우 모두 대응
        if "-" in date:
            month = date.split("-")[1]

        elif "." in date:
            month = date.split(".")[1]

        else:
            continue

        if row[-1] != "":
            temp = float(row[-1])
            if month == "01":
                aug.append(temp)
            elif month == "08":
                jan.append(temp)

    except Exception:
        continue  # 오류 발생 시 건너뜀

# 박스그래프 그리기
plt.figure(figsize=(12, 6))  # 가로, 높이
plt.boxplot([aug,jan])  # 3 개를 분리하여 그림

plt.title("1월과 8월의 기온 분포 (서울)", fontsize=25)
plt.xlabel("기온 (°C)")
plt.ylabel("빈도수")
plt.legend()
plt.grid(True)
plt.show()

# data[].attributes.body
# 10. 잘 안되어 GPT에게 물었다.
# 1년 12달의 월별 데이터를 박스 그래프로 그린다.

import csv
import matplotlib.pyplot as plt

# 파일 경로
path = "/content/drive/MyDrive/2025년 1,2학년-1학기 수업/2-3 일8 인공지능교사/2학년방/09 10년 동안의 온도 그래프/서울온도(1905년).csv"

# 데이터 열기
with open(path, "r", encoding="cp949") as f:
    data = csv.reader(f)
    next(data)  # 헤더 건너뛰기

    # 12개의 빈 리스트로 월별 데이터 저장소 만들기
    month = [[] for _ in range(12)]


    for row in data:
        try:
            date = row[0]
            temp = row[-1]

            # 날짜와 기온이 유효할 때만 처리
            if temp == "":
                continue

            # 날짜 형식 구분
            if "-" in date:
                parts = date.split("-")
            elif "." in date:
                parts = date.split(".")
            else:
                continue

            # 월 추출 및 리스트에 저장
            m = int(parts[1])
            month[m - 1].append(float(temp))

        except Exception as e:
            continue  # 에러 발생 시 건너뜀

# 박스플롯 그리기
plt.figure(figsize=(12, 6))
plt.boxplot(month)
plt.title("월별 기온 분포 (서울)", fontsize=15)
plt.xlabel("월")
plt.ylabel("기온 (°C)")
plt.grid(True)
plt.xticks(range(1, 13), [f"{i}월" for i in range(1, 13)])
plt.show()

# data[].attributes.body
# 11. 8월달만 일별 평균 박스 그래프를 그려보자
import csv
import matplotlib.pyplot as plt

# 파일 경로
path = "/content/drive/MyDrive/2025년 1,2학년-1학기 수업/2-3 일8 인공지능교사/2학년방/09 10년 동안의 온도 그래프/서울온도(1905년).csv"

f = open(path, "r", encoding="cp949")
data = csv.reader(f)
next(data)

day = []

for i in range(31):
    day.append([])

for row in data:
    if row[-1] != "":
        if row[0].split("-")[1] == "08":
            day[int(row[0].split("-")[2])-1].append(float(row[-1]))

plt.style.use("ggplot")
plt.figure(figsize=(10,5), dpi=300)
plt.boxplot(day, showfliers=False)
plt.show()

# data[].attributes.body
# 08 내 생일 온도 그래프, 대구7월 8월

# data[].attributes.body
# 10.
# 1년 12달의 월별 데이터를 박스 그래프로 그린다.

import csv
import matplotlib.pyplot as plt

# 파일 경로
#path = "/content/drive/MyDrive/2025년 1,2학년-1학기 수업/2-3 일8 인공지능교사/2학년방/09 10년 동안의 온도 그래프/서울온도(1905년).csv"

# 데이터 열기
with open(path, "r", encoding="cp949") as f:
    data = csv.reader(f)
    next(data)  # 헤더 건너뛰기

    # 12개의 빈 리스트로 월별 데이터 저장소 만들기
    month = [[] for _ in range(12)]


    for row in data:
        try:
            date = row[0]
            temp = row[-1]

            # 날짜와 기온이 유효할 때만 처리
            if temp == "":
                continue

            # 날짜 형식 구분
            if "-" in date:
                parts = date.split("-")
            elif "." in date:
                parts = date.split(".")
            else:
                continue

            # 월 추출 및 리스트에 저장
            m = int(parts[1])
            month[m - 1].append(float(temp))

        except Exception as e:
            continue  # 에러 발생 시 건너뜀

# 박스플롯 그리기
plt.figure(figsize=(12, 6))
plt.boxplot(month)
plt.title("월별 기온 분포 (서울)", fontsize=15)
plt.xlabel("월")
plt.ylabel("기온 (°C)")
plt.grid(True)
plt.xticks(range(1, 13), [f"{i}월" for i in range(1, 13)])
plt.show()

# data[].attributes.body
# 13.
# 11. 8월달만 일별 평균 박스 그래프를 그려보자
import csv
import matplotlib.pyplot as plt

# 파일 경로
#path = "/content/drive/MyDrive/2025년 1,2학년-1학기 수업/2-3 일8 인공지능교사/2학년방/09 10년 동안의 온도 그래프/서울온도(1905년).csv"

f = open(path, "r", encoding="cp949")
data = csv.reader(f)
next(data)

day = []

for i in range(31):
    day.append([])

for row in data:
    if row[-1] != "":
        if row[0].split("-")[1] == "01":
            day[int(row[0].split("-")[2])-1].append(float(row[-1]))

plt.style.use("ggplot")
plt.figure(figsize=(10,5), dpi=300)
plt.boxplot(day, showfliers=False)
plt.show()

# data[].attributes.body
# 06 대구최고온도(20745 강감찬)
# 1 리스트의 이해
a = [1, 2, 3, 4, 5]
print(a[1:])
print(a[:3])
print(a[-2])
print(len(a))  # 5

# data[].attributes.body
b = [[1, 2, 3, 4, 5],
     [10, 20, 30, 40, 50]]
print(b)
print(len(b[0]))
print(b[0][1]) # 2

# data[].attributes.body
# 3. 대구온도 분석
import csv
max_temp = -999
max_date = ""

path = "/content/drive/MyDrive/2025년 1,2학년-1학기 수업/2-7 화7 인공지능수업/06 대구10년간 최고온도/대구온도(20745 강감찬).csv"
f = open(path, "r", encoding = "cp949")
data = csv.reader(f, delimiter=",")
header = next(data)
for row in data:
    if row[-1] == "":
        row[-1] = -999
    else:
        row[-1] = float(row[-1])


    if max_temp < row[-1]:
        max_temp = row[-1] # 온도
        max_date = row[2]  # 날짜

print("최고 날짜: ", max_date)
print("최고 온도: ", max_temp)
print("20745 강원술")

# data[].attributes.body
# 08 공포의 피라미드(for, while, continue, break)

# 0. 기본코딩

# 가. 국영수 성적으로 총점 평균 펑점

# 나. 1- 100 백합, 홀합, 짝합, 총합

# 다. 구구단, 몇단가지

# 0. 아파트

# 1. 공포의 피라미드

for i in range(1, 5, 1):

print()

for j in range(1, i, 1):

print(i-1, j, "*", end = " ") # 끝연결

# data[].attributes.body
# 2. break(끝), continue(통과)

# 1-15 인쇄를 하면서 8 나오면 멈춰라. 5 나오면 그냥 통과

for i in range(1, 16, 1):

if i == 5:

print()

continue # 통과

if i == 8:

break # 끝

print(i, end = " ")

# data[].attributes.body
# 3. 백합을 while문으로 하기(~ 동안에)

sum = 0

i = 0

while i < 10: #

i = i + 1

sum = sum + i # 누적

print(i, "==>", sum)

# data[].attributes.body
# 대구지하철분석

# data[].attributes.attachment_link.title
11대구지하철지도시각화

# data[].attributes.headline
판다스 100연습(데이터 모음)

# data[].attributes.subject
판다스 100연습(데이터 모음)

# data[].attributes.body
위의 압축된 파일을 풀어서 저장후 ==> 업로드함

# data[].attributes.headline
1. 전기자동차 보유 데이터

# data[].attributes.subject
1. 전기자동차 보유 데이터

# data[].attributes.attachment_link.title
12. 전기자동차 시각화

# data[].attributes.attachment_link.title
삼성LG홈런수(쉼표로UTF)

# data[].attributes.attachment_link.title
삼성LG홈런수(파이썬)