본문 바로가기
카테고리 없음

2024.01.17 빅데이터 분석가 양성과정 13일차 노트

by Choose Me 2024. 1. 17.
SMALL

1. 기업맞춤형 빅데이터 분석가 양성과정 소개 

https://bit.ly/41x8FOX

 

[기업맞춤형 빅데이터 분석가 양성과정] 선수과정이란 무엇인가?

안녕하세요! 저는 12월 28일부터 한국품질재단의 기업맞춤형 빅데이터 분석 양성과정을 시작합니다! [취업과 창업]고용노동부와 한국품질재단 & 안동대학교가 함께하는 2024년 K-Digital Training(1,000

crosefrog.tistory.com

https://bit.ly/3NIinbu

 

[취업과 창업]고용노동부와 한국품질재단 & 안동대학교가 함께하는 2024년 K-Digital Training(1,000만원

안녕하세요. 저는 졸업을 1년 남기고 이력서, 자소서, 포트폴리오 및 미니프로젝트와 최종프로젝트를 수행하는 한국품질재단의 빅데이터 분석가 양성과정에 참가하게 되었습니다. 오늘날 세상

crosefrog.tistory.com

 

2. 기업맞춤형 빅데이터 분석가 양성과정 노트목록

 https://crosefrog.tistory.com/entry/20231228-%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D%EA%B0%80-%EC%96%91%EC%84%B1%EA%B3%BC%EC%A0%95-1%EC%9D%BC%EC%B0%A8-%EB%85%B8%ED%8A%B8

 

2023.12.28 빅데이터 분석가 양성과정 1일차 노트

오늘은 기업맞춤형 빅데이터 분석가 오리엔테이션이 있었습니다. 1. 기업맞춤형 빅데이터 분석가 양성과정 소개 https://bit.ly/41x8FOX [기업맞춤형 빅데이터 분석가 양성과정] 선수과정이란 무엇인

crosefrog.tistory.com

https://crosefrog.tistory.com/entry/20240102-%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D%EA%B0%80-%EC%96%91%EC%84%B1%EA%B3%BC%EC%A0%95-2%EC%9D%BC%EC%B0%A8-%EB%85%B8%ED%8A%B8

 

2024.01.02 빅데이터 분석가 양성과정 2일차 노트

1. 기업맞춤형 빅데이터 분석가 양성과정 소개 https://bit.ly/41x8FOX [기업맞춤형 빅데이터 분석가 양성과정] 선수과정이란 무엇인가? 안녕하세요! 저는 12월 28일부터 한국품질재단의 기업맞춤형 빅

crosefrog.tistory.com

https://crosefrog.tistory.com/entry/20240103-%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D%EA%B0%80-%EC%96%91%EC%84%B1%EA%B3%BC%EC%A0%95-3%EC%9D%BC%EC%B0%A8-%EB%85%B8%ED%8A%B8

 

2024.01.03 빅데이터 분석가 양성과정 3일차 노트

1. 기업맞춤형 빅데이터 분석가 양성과정 소개 https://bit.ly/41x8FOX [기업맞춤형 빅데이터 분석가 양성과정] 선수과정이란 무엇인가? 안녕하세요! 저는 12월 28일부터 한국품질재단의 기업맞춤형 빅

crosefrog.tistory.com

https://crosefrog.tistory.com/entry/20210104-%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D%EA%B0%80-%EC%96%91%EC%84%B1%EA%B3%BC%EC%A0%95-4%EC%9D%BC%EC%B0%A8-%EB%85%B8%ED%8A%B8

 

2024.01.04 빅데이터 분석가 양성과정 4일차 노트

1. 기업맞춤형 빅데이터 분석가 양성과정 소개 https://bit.ly/41x8FOX [기업맞춤형 빅데이터 분석가 양성과정] 선수과정이란 무엇인가? 안녕하세요! 저는 12월 28일부터 한국품질재단의 기업맞춤형 빅

crosefrog.tistory.com

https://crosefrog.tistory.com/entry/20240105-%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D%EA%B0%80-%EC%96%91%EC%84%B1%EA%B3%BC%EC%A0%95-5%EC%9D%BC%EC%B0%A8-%EB%85%B8%ED%8A%B8

 

2024.01.05 빅데이터 분석가 양성과정 5일차 노트

1. 기업맞춤형 빅데이터 분석가 양성과정 소개 https://bit.ly/41x8FOX [기업맞춤형 빅데이터 분석가 양성과정] 선수과정이란 무엇인가? 안녕하세요! 저는 12월 28일부터 한국품질재단의 기업맞춤형 빅

crosefrog.tistory.com

https://crosefrog.tistory.com/entry/20240108-%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D%EA%B0%80-%EC%96%91%EC%84%B1%EA%B3%BC%EC%A0%95-6%EC%9D%BC%EC%B0%A8-%EB%85%B8%ED%8A%B8

 

2024.01.08 빅데이터 분석가 양성과정 6일차 노트

1. 기업맞춤형 빅데이터 분석가 양성과정 소개 https://bit.ly/41x8FOX [기업맞춤형 빅데이터 분석가 양성과정] 선수과정이란 무엇인가? 안녕하세요! 저는 12월 28일부터 한국품질재단의 기업맞춤형 빅

crosefrog.tistory.com

https://crosefrog.tistory.com/entry/20240109-%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D%EA%B0%80-%EC%96%91%EC%84%B1%EA%B3%BC%EC%A0%95-7%EC%9D%BC%EC%B0%A8-%EB%85%B8%ED%8A%B8

 

2024.01.09 빅데이터 분석가 양성과정 7일차 노트

1. 기업맞춤형 빅데이터 분석가 양성과정 소개 https://bit.ly/41x8FOX [기업맞춤형 빅데이터 분석가 양성과정] 선수과정이란 무엇인가? 안녕하세요! 저는 12월 28일부터 한국품질재단의 기업맞춤형 빅

crosefrog.tistory.com

https://crosefrog.tistory.com/entry/20240110-%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D%EA%B0%80-%EC%96%91%EC%84%B1%EA%B3%BC%EC%A0%95-8%EC%9D%BC%EC%B0%A8-%EB%85%B8%ED%8A%B8

 

2024.01.10 빅데이터 분석가 양성과정 8일차 노트

1. 기업맞춤형 빅데이터 분석가 양성과정 소개 https://bit.ly/41x8FOX [기업맞춤형 빅데이터 분석가 양성과정] 선수과정이란 무엇인가? 안녕하세요! 저는 12월 28일부터 한국품질재단의 기업맞춤형 빅

crosefrog.tistory.com

https://crosefrog.tistory.com/entry/20240111-%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D%EA%B0%80-%EC%96%91%EC%84%B1%EA%B3%BC%EC%A0%95-9%EC%9D%BC%EC%B0%A8-%EB%85%B8%ED%8A%B8

 

2024.01.11 빅데이터 분석가 양성과정 9일차 노트

1. 기업맞춤형 빅데이터 분석가 양성과정 소개 https://bit.ly/41x8FOX [기업맞춤형 빅데이터 분석가 양성과정] 선수과정이란 무엇인가? 안녕하세요! 저는 12월 28일부터 한국품질재단의 기업맞춤형 빅

crosefrog.tistory.com

https://crosefrog.tistory.com/entry/20240112-%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D%EA%B0%80-%EC%96%91%EC%84%B1%EA%B3%BC%EC%A0%95-10%EC%9D%BC%EC%B0%A8-%EB%85%B8%ED%8A%B8

 

2024.01.12 빅데이터 분석가 양성과정 10일차 노트

1. 기업맞춤형 빅데이터 분석가 양성과정 소개 https://bit.ly/41x8FOX [기업맞춤형 빅데이터 분석가 양성과정] 선수과정이란 무엇인가? 안녕하세요! 저는 12월 28일부터 한국품질재단의 기업맞춤형 빅

crosefrog.tistory.com

https://crosefrog.tistory.com/entry/20240115-%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D%EA%B0%80-%EC%96%91%EC%84%B1%EA%B3%BC%EC%A0%95-11%EC%9D%BC%EC%B0%A8-%EB%85%B8%ED%8A%B8

 

2024.01.15 빅데이터 분석가 양성과정 11일차 노트

1. 기업맞춤형 빅데이터 분석가 양성과정 소개 https://bit.ly/41x8FOX [기업맞춤형 빅데이터 분석가 양성과정] 선수과정이란 무엇인가? 안녕하세요! 저는 12월 28일부터 한국품질재단의 기업맞춤형 빅

crosefrog.tistory.com

https://crosefrog.tistory.com/entry/20240116-%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D%EA%B0%80-%EC%96%91%EC%84%B1%EA%B3%BC%EC%A0%95-12%EC%9D%BC%EC%B0%A8-%EB%85%B8%ED%8A%B8

 

2024.01.16 빅데이터 분석가 양성과정 12일차 노트

1. 기업맞춤형 빅데이터 분석가 양성과정 소개 https://bit.ly/41x8FOX [기업맞춤형 빅데이터 분석가 양성과정] 선수과정이란 무엇인가? 안녕하세요! 저는 12월 28일부터 한국품질재단의 기업맞춤형 빅

crosefrog.tistory.com

3. 첫째 마당_기온 공공 데이터.ipynb / 둘째 마당_데이터 시각화 기초.ipynb / 시작하기 전에_첫째 마당.ipynb

1 첫째 마당 - 기온 공공 데이터.ipynb
0.62MB
2 둘째 마당 - 데이터 시각화 기초.ipynb
1.65MB
시작하기 전에 - 첫째 마당(python).ipynb
0.23MB
시작하기 전에.ipynb
0.38MB

4. Notion 일과 삶 & 빅데이터 분석가 양성과정 대시보드

https://lifemoment.notion.site/497bff9488aa4dec9171d08224a7a978?pvs=4

 

일과 삶 | Notion

빛나는 당신의 일과 삶을 이곳에 기록하세요.

lifemoment.notion.site

5. Google Colaboratory Notebook

https://colab.research.google.com/drive/1LlD-S9IL1JVmdD9qqV_nhrJKTBvdmzBN#scrollTo=IvFCQaOxCoyZ

 

Google Colaboratory Notebook

Run, share, and edit Python notebooks

colab.research.google.com

https://colab.research.google.com/drive/1Dq8JCwpwzVNe6HF_Ixcpwm1MiE7IOz-h#scrollTo=GW0_5PyQtg0P

 

Google Colaboratory Notebook

Run, share, and edit Python notebooks

colab.research.google.com

https://colab.research.google.com/drive/1FymjutQ7loFd2cYAo-jCr1tu_FGNF0Zq#scrollTo=nPl_crRthvNL

 

Google Colaboratory Notebook

Run, share, and edit Python notebooks

colab.research.google.com

6. Naver 블로그 포스팅

https://blog.naver.com/moment_by_moment/223325821806

 

고통이란, 시간을 단축하는 것이다.

똑같은 결과물을 만들더라도, 들어가는 시간과 노력이 다르다. MS 365의 form을 활용하면, 누구나 그럴듯...

blog.naver.com

7. 필기노트

모두의 데이터분석 with 파이썬

(실생활 예제로 시작하는 데이터 분석 첫걸음)

바닷가 출신이지만, 몇 가지 생선만 골라서 먹는 사람이 있다.

밥상에 생선을 잘 올리지 않는다.

술안주로 회보단 육류를 생각하는 사람들이 많다.

대부분, 굶주리면 먹게 된다.

안동과 서울은 내륙이다.

서울 횟집 매운탕은 C급이다.

모든 음식의 1순위는 ‘산도(신선도)’이다.

C급은 양념으로 어느정도 먹을 수 있는 정도.

신 김치와 썩은 김치는 구분이 된다.

육류: 돼지, 소, 닭, 오리


기상 자료 개방 포털 (https://data.kma.go.kr)

아래한글로 작성된 문서를 메모장으로 열어보면,

자기만의 방식으로 저장된 것을 확인할 수 있다.

어떤 자료를 넘기면, 각자 자기만의 방식으로 저장하게 된다.

→ 데이터에선, 아스키 코드로 본다. (아스키 파일)

CSV파일은 기본값 ‘,’로 구분하여 저장하게 된다.

Excel 프로그램이 인식할 수 있음

데이터 분석을 할 때, 통계 자료를 제공하는 사이트를 뒤져서 특정 자료로 접근하는 것이 수월할 것이다.


  • csv 파일 열어보기
import csv

f = open('서울.csv', 'r')
data = csv.reader(f)
print(data)
f.close()
  • 1번 라인, import csv는 csv 모듈을 불러옴

각 행의 데이터가 대괄호([])로 둘러쌓임: 리스트

각 행, 리스트 데이터의 각 요소가 작은 따옴표(’ ‘)로 둘러쌓임: 문자열

누락된 데이터를 확인하기는 어렵다.


가장 쉬운 것: 제외하기

  • 헤더 확인하기

: next( )함수는 data의 한 행 데이터를 반환 후 data에서 그 행을 삭제

  • 이터러블한 데이터 중에서 next( )함수로 차례 차례 요소를 꺼낼 수 있는 것을 ‘이터레이터’라고 함
  • 리스트, 딕셔너리, 문자열, 튜플 등은 모두 ‘이터러블’(요소를 차례 차례 하나씩 꺼낼 수 있는)하다고 함.
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)

# 첫번째 행을 읽어와서 header에 할당
header = next(data)
print(header)

# 그 다음 행을 읽어와서 first_row에 할당
first_row = next(data)
print(first_row)
f.close()

데이터에서 어떤 정보를 추출해 낼 수 있는가?

→ 어떤 의미있는 정보를 자료로부터 끄집어내기 위해서

  • 언제 가장 더웠고, 얼마나 더웠을까?
  • 일교차가 가장 큰 날은 1년 중 언제였을까?

#사람마다 더위를 느끼는 정도가 다르다.

어떤 사람은 습도가 높을수록, 어떤 사람은 온도가 높을수록 덥다고 느낄 수 있다.

→ 가장 더웠던 날은 언제이고, 얼마나 더웠을까? 라는 질문을 다듬어서

기온, 습도, 풍속 등 정확한 정보로 언급하는 것이 신뢰성이 있다.

⇒ 기상 관측 이래, 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

  • 일별로 기록된 최고기온 중, 가장 높은 값은 얼마인가?

파이썬 코드 작성 - 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
header = next(data)    # header 제거
max_temp = -999
max_Data = ''

for row in data:
  # 최고 기온 정보는 행(리스트)의 맨 마지막 요소
  if row[-1] == '':        # 맨 마지막 요소가 누락되었다면
    row[-1] = -1000        # 존재할 수 없는 최고 기온. 
  else:
    row[-1] = float(row[-1])
  if max_temp < row[-1]:
    max_temp = row[-1]
    max_date = row[0]

f.close()
print("서울의 최고 기온이 가장 높았던 날은"\\ + max_data +"일이며 "+ str(max_temp) +"도였습니다.")

혼자 공부하는 파이썬

모두의 데이터분석 with 파이썬

이것이 MySQL이다.

혼자 공부하는 자바 스크립트

  • 기온 공공 데이터에 질문하기 - 데이터에서 원하는 정보를 얻기

파이썬 코드 작성 - 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

‘data’의 각 행은 리스트 형이었음

date_list → 날짜를 요소로 하는 리스트

온도만 들어있는 리스트를 뽑고, 데이터만 들어있는 리스트를 뽑으면 된다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
header = next(data)       # header 제거
max_temp = -999
max_data = ''
for row in data:
  #최고 기온 정보는 행(리스트)의 맨 마지막 요소.
  if row[-1] == '':           # 맨 마지막 요소가 누락되었다면
    row[-1] = -1000           # 존재 할 수 없는 최고 기온.
  else:
    row[-1] = float(row[-1])    # 문자열 형 -> 숫자형으로 변환
  if max_temp < row[-1]:
    max_temp = row[-1]
    max_date = row[0]
f.close()
print("서울의 최고 기온이 가장 높았던 날은 "\\
      + max_date +"일이며 "+ str(max_temp) +"도였습니다.")

학연, 지연, 혈연은 중요치 않지만, 이유모르게 더 친근한 느낌이 드는 이유이기도 하다.

뭔가 의미있는 정보를 만들어내려고 하는 것이다.

최고 온도가 얼마이고 몇 도인지 궁금하다면 필요한 정보를 뽑아내야 한다.

공부하고 있는 아버지

→ 아들이 자연스럽게 책을 보는 것이 문화가 된다고 생각한다.

연합고사라 불리는 고등학교 시험이 있다.

서울에서 떨어진 곳에 있는 형, 누나들이 같이 살았다.

중학교 3학년 때 도서관에 앉아있는 것이 삶의 일부가 되었다.

→ 자연스럽게 나의 삶이 변하게 된다.

내 삶의 방식을 은연중에 보고 배운다.

→ 자연스럽게 보고 배울 것이다.

어떤 일을 스스로 할 수 있게 되기까지 10년은 걸린다.

아직 20살 넘어서 10년이 되지 않았다.

가르치는 입장, 구직하는 입장에서 보면

시간이 필요하다. → 이 시간을 줄일려고 노력하는 것이다.

  • 공통의 목적: 주어진 기간안에 큰 성장을 이루길 바란다.

둘째 마당- 데이터 시각화 기초

  • 기본 그래프 그리기

matplotlib 라이브러리란?

기본 그래프 그리기

import matplotlib.pyplot as plt
plt.plot([10, 20, 30, 40])         # y-축 데이터만 전달 했음.
plt.show()
import matplotlib.pyplot as plt
# x-축 데이터와 y-축 데이터 모두 전달
# x-축 데이터 개수와 y-축 데이터 개수 일치
plt.plot([1, 2, 3, 4], [10, 20, 30, 40])
plt.show()
  • 앞 페이지의 그래프와 비교할 것

  • numpy 모듈은 python으로 수학 계산을 고속으로 처리하기 위해 만들어졌다.
import numpy as np

x = np.arange(5)
print(x)
print(type(x))
=>
[0 1 2 3 4]
<class 'numpy.ndarray'>
x = range(5)
print(x)
print(list(x))
print(type(x))
=>
range(0, 5)
[0, 1, 2, 3, 4]
<class 'range'>
x = np.arange(1, 5)
print('x:', x)
print('2*x:', 2*x)
print('2*x+1:', 2*x+1)
=>
x: [1 2 3 4]
2*x: [2 4 6 8]
2*x+1: [3 5 7 9]

import numpy as np

x = np.arange(1, 5)
y = 2*x + 1
plt.plot(x, y, 'bo--')
plt.show()
  • 그래프에 옵션 추가하기
  1. 그래프에 제목 넣기
x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--')
plt.title('My Income')
plt.show()
x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--')

plt.title('My Income')
plt.xlabel('year')
plt.ylabel('$')
plt.show()

N개의 그래프를 하나의 그림(figure)에 넣기

x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo-')
plt.plot(x,y2,'rs:')
plt.title('title')
plt.show()

그래프에 범례 넣기

x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--', label='me')
plt.legend()
plt.show()
x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo--', label='me')
plt.plot(x,y2,'rs--', label='you')
plt.title('title')
plt.legend()
plt.show()
  • 웃자고 하는 소리 -

나는 한결 같이 꾸준히 노력했다. 비록 초기값이 너 보자 작지만 ...

너도 한결 같이 꾸준히 노력했다. 초기값이 나보다 높은 곳에서 시작하였하여

한 동안 나보다 큰 값을 가졌지만

너가 방황하는 동안 나는 늘 한결 같이 노력했다.

웃자고 하는 소리였습니다.

거렇다고 파란선이 승자냐? 그건 아니죠. x 축의 값이 4.0을 지나면서 또 어떤 일이 생길지 모릅니다. ㅎㅎㅎㅎ


x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo--', label='me')
plt.plot(x,y2,'rs--', label='you')
plt.title('title')
plt.legend(loc=4)
plt.show()

지구 평균 기온 상승을 그래프로 보이고 싶다.

왜 보이고 싶은가? 보이고 싶은 목적이란 무엇인가?

온도가 많이 상승한다고 하면, 이런 그래프를 보여주고 싶다.

평균기온이 상승한다고 하면, 그래프를 보고 설득시켜야 한다.

→ 내 말을 설득시키기 위해서

1908년 1년 평균치 온도부터 2023년 평균온도까지

여름 평균, 겨울 평균, 연평균을 모두 그린 다음,

내가 말하고자 하는 내용을 잘 나타내는 것을 보여주면 된다.

낚시를 한창 다니던 시절

옛날에는 한강이 얼었다.

서울 살아보면, 한강이 어는 일은 매우 드문 일이다.

내가 표현하고 싶은 것을 데이터에서 어떻게 보여줄것인가

  1. 데이터 읽어 오기
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)           # 헤더 제거

for row in data:
  print(row[-1])      # 최고 기온값만 출력

f.close()
  1. 데이터를 리스트에 저장하기

: 누락 데이터를 제외하고 최고 기온 값만 추출하여 리스트 형 데이터를 만든다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)            # 헤더 제거

max_temp_list =[]     # 최고 기온 데이터를 저장하기 위해 미리 빈 리스트 생성

for row in data:
  # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
  if row[-1] != '':
    # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장
    max_temp_list.append(float(row[-1]))

f.close()

print(max_temp_list)
print( len(max_temp_list) )
  1. 데이터 시각화
import matplotlib.pyplot as plt
plt.plot(max_temp_list, 'r')
plt.show()
  1. 날짜 데이터 추출하기

‘서울.csv’파일에서 구한 데이터는 아래와 같은 형태의 데이터이다.

['\\t2009-06-14', '108', '20.2', '18.2', '23.8']

위 리스트에서 날짜에 해당하는 정보는 첫 번쨰 요소로 단순 문자열로 기록되어 있다.

'\\t2009-06-14'

여기서 연, 월, 일 정보를 추출한다고 하자.

먼저 replace() 함수를 사용하여 \t를 제거한다.

date = '\\t2009-06-14'
date = date.replace('\\t', '')
print(date)

그리고 ‘2009-06-14’의 문자열은 split()함수를 이용하여 연, 월, 일을 분리한다.

ymd = date.split('-')
print(ymd)
=> ['2009', '06', '14']
print(ymd[0])   # 년: year
print(ymd[1])   # 월: month
print(ymd[2])   # 일: day
=>
2009
06
14

1년 중 가장 더운 8월 달의 최고 기온 데이터만 추출하여 그래프로 그린다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)

max_temp_list =[]

for row in data:
  if row[-1] != '':                         # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
    if row[0].split('-')[1] == '08':          # ['\\t2009-06-14', '108', '20.2', '18.2', '23.8']
      max_temp_list.append(float(row[-1]))    # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장

f.close()

plt.figure(figsize=(16, 4))
plt.plot(max_temp_list, 'r')
plt.show()
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)
max_temp_list =[]

for row in data:
  if row[-1] != '':                                                             # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
    if row[0].split('-')[1] == '01' and row[0].split('-')[2] =='24':
      max_temp_list.append(float(row[-1]))                                      # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장

f.close()

plt.figure(figsize=(16, 4))
plt.plot(max_temp_list, 'b.-')
plt.title('max. temp of January 24 every year')
plt.ylabel('temp')
plt.grid()
plt.show()
import csv
import matplotlib.pyplot as plt

f = open('서울.csv', 'r', encoding='cp949')
data = csv.reader(f)

next(data)
high = []
low = []
year =[]

for row in data :
    if row[-1] != '' and row[-2] != '':
        if 1981 <= int(row[0].split('-')[0]) : 
                if row[0].split('-')[1] == '09' and row[0].split('-')[2] == '30':
                    high.append(float(row[-1]))
                    low.append(float(row[-2]))
                    year.append(int(row[0].split('-')[0]))

plt.rc('font', family='NanumBarunGothic') 
plt.title('달빛샘 생일의 기온 변화 그래프(9월 30일)')    

plt.plot(year, high, 'r', label='최고')
plt.plot(year, low, 'b', label='최저')
plt.legend()

plt.show()

모두의 데이터분석 with 파이썬

(실생활 예제로 시작하는 데이터 분석 첫걸음)

바닷가 출신이지만, 몇 가지 생선만 골라서 먹는 사람이 있다.

밥상에 생선을 잘 올리지 않는다.

술안주로 회보단 육류를 생각하는 사람들이 많다.

대부분, 굶주리면 먹게 된다.

안동과 서울은 내륙이다.

서울 횟집 매운탕은 C급이다.

모든 음식의 1순위는 ‘산도(신선도)’이다.

C급은 양념으로 어느정도 먹을 수 있는 정도.

신 김치와 썩은 김치는 구분이 된다.

육류: 돼지, 소, 닭, 오리


기상 자료 개방 포털 (https://data.kma.go.kr)

아래한글로 작성된 문서를 메모장으로 열어보면,

자기만의 방식으로 저장된 것을 확인할 수 있다.

어떤 자료를 넘기면, 각자 자기만의 방식으로 저장하게 된다.

→ 데이터에선, 아스키 코드로 본다. (아스키 파일)

CSV파일은 기본값 ‘,’로 구분하여 저장하게 된다.

Excel 프로그램이 인식할 수 있음

데이터 분석을 할 때, 통계 자료를 제공하는 사이트를 뒤져서 특정 자료로 접근하는 것이 수월할 것이다.


  • csv 파일 열어보기
import csv

f = open('서울.csv', 'r')
data = csv.reader(f)
print(data)
f.close()
  • 1번 라인, import csv는 csv 모듈을 불러옴

각 행의 데이터가 대괄호([])로 둘러쌓임: 리스트

각 행, 리스트 데이터의 각 요소가 작은 따옴표(’ ‘)로 둘러쌓임: 문자열

누락된 데이터를 확인하기는 어렵다.


가장 쉬운 것: 제외하기

  • 헤더 확인하기

: next( )함수는 data의 한 행 데이터를 반환 후 data에서 그 행을 삭제

  • 이터러블한 데이터 중에서 next( )함수로 차례 차례 요소를 꺼낼 수 있는 것을 ‘이터레이터’라고 함
  • 리스트, 딕셔너리, 문자열, 튜플 등은 모두 ‘이터러블’(요소를 차례 차례 하나씩 꺼낼 수 있는)하다고 함.
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)

# 첫번째 행을 읽어와서 header에 할당
header = next(data)
print(header)

# 그 다음 행을 읽어와서 first_row에 할당
first_row = next(data)
print(first_row)
f.close()

데이터에서 어떤 정보를 추출해 낼 수 있는가?

→ 어떤 의미있는 정보를 자료로부터 끄집어내기 위해서

  • 언제 가장 더웠고, 얼마나 더웠을까?
  • 일교차가 가장 큰 날은 1년 중 언제였을까?

#사람마다 더위를 느끼는 정도가 다르다.

어떤 사람은 습도가 높을수록, 어떤 사람은 온도가 높을수록 덥다고 느낄 수 있다.

→ 가장 더웠던 날은 언제이고, 얼마나 더웠을까? 라는 질문을 다듬어서

기온, 습도, 풍속 등 정확한 정보로 언급하는 것이 신뢰성이 있다.

⇒ 기상 관측 이래, 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

  • 일별로 기록된 최고기온 중, 가장 높은 값은 얼마인가?

파이썬 코드 작성 - 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
header = next(data)    # header 제거
max_temp = -999
max_Data = ''

for row in data:
  # 최고 기온 정보는 행(리스트)의 맨 마지막 요소
  if row[-1] == '':        # 맨 마지막 요소가 누락되었다면
    row[-1] = -1000        # 존재할 수 없는 최고 기온. 
  else:
    row[-1] = float(row[-1])
  if max_temp < row[-1]:
    max_temp = row[-1]
    max_date = row[0]

f.close()
print("서울의 최고 기온이 가장 높았던 날은"\\ + max_data +"일이며 "+ str(max_temp) +"도였습니다.")

혼자 공부하는 파이썬

모두의 데이터분석 with 파이썬

이것이 MySQL이다.

혼자 공부하는 자바 스크립트

  • 기온 공공 데이터에 질문하기 - 데이터에서 원하는 정보를 얻기

파이썬 코드 작성 - 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

‘data’의 각 행은 리스트 형이었음

date_list → 날짜를 요소로 하는 리스트

온도만 들어있는 리스트를 뽑고, 데이터만 들어있는 리스트를 뽑으면 된다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
header = next(data)       # header 제거
max_temp = -999
max_data = ''
for row in data:
  #최고 기온 정보는 행(리스트)의 맨 마지막 요소.
  if row[-1] == '':           # 맨 마지막 요소가 누락되었다면
    row[-1] = -1000           # 존재 할 수 없는 최고 기온.
  else:
    row[-1] = float(row[-1])    # 문자열 형 -> 숫자형으로 변환
  if max_temp < row[-1]:
    max_temp = row[-1]
    max_date = row[0]
f.close()
print("서울의 최고 기온이 가장 높았던 날은 "\\
      + max_date +"일이며 "+ str(max_temp) +"도였습니다.")

학연, 지연, 혈연은 중요치 않지만, 이유모르게 더 친근한 느낌이 드는 이유이기도 하다.

뭔가 의미있는 정보를 만들어내려고 하는 것이다.

최고 온도가 얼마이고 몇 도인지 궁금하다면 필요한 정보를 뽑아내야 한다.

공부하고 있는 아버지

→ 아들이 자연스럽게 책을 보는 것이 문화가 된다고 생각한다.

연합고사라 불리는 고등학교 시험이 있다.

서울에서 떨어진 곳에 있는 형, 누나들이 같이 살았다.

중학교 3학년 때 도서관에 앉아있는 것이 삶의 일부가 되었다.

→ 자연스럽게 나의 삶이 변하게 된다.

내 삶의 방식을 은연중에 보고 배운다.

→ 자연스럽게 보고 배울 것이다.

어떤 일을 스스로 할 수 있게 되기까지 10년은 걸린다.

아직 20살 넘어서 10년이 되지 않았다.

가르치는 입장, 구직하는 입장에서 보면

시간이 필요하다. → 이 시간을 줄일려고 노력하는 것이다.

  • 공통의 목적: 주어진 기간안에 큰 성장을 이루길 바란다.

둘째 마당- 데이터 시각화 기초

  • 기본 그래프 그리기

matplotlib 라이브러리란?

기본 그래프 그리기

import matplotlib.pyplot as plt
plt.plot([10, 20, 30, 40])         # y-축 데이터만 전달 했음.
plt.show()
import matplotlib.pyplot as plt
# x-축 데이터와 y-축 데이터 모두 전달
# x-축 데이터 개수와 y-축 데이터 개수 일치
plt.plot([1, 2, 3, 4], [10, 20, 30, 40])
plt.show()
  • 앞 페이지의 그래프와 비교할 것

  • numpy 모듈은 python으로 수학 계산을 고속으로 처리하기 위해 만들어졌다.
import numpy as np

x = np.arange(5)
print(x)
print(type(x))
=>
[0 1 2 3 4]
<class 'numpy.ndarray'>
x = range(5)
print(x)
print(list(x))
print(type(x))
=>
range(0, 5)
[0, 1, 2, 3, 4]
<class 'range'>
x = np.arange(1, 5)
print('x:', x)
print('2*x:', 2*x)
print('2*x+1:', 2*x+1)
=>
x: [1 2 3 4]
2*x: [2 4 6 8]
2*x+1: [3 5 7 9]

import numpy as np

x = np.arange(1, 5)
y = 2*x + 1
plt.plot(x, y, 'bo--')
plt.show()
  • 그래프에 옵션 추가하기
  1. 그래프에 제목 넣기
x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--')
plt.title('My Income')
plt.show()
x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--')

plt.title('My Income')
plt.xlabel('year')
plt.ylabel('$')
plt.show()

N개의 그래프를 하나의 그림(figure)에 넣기

x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo-')
plt.plot(x,y2,'rs:')
plt.title('title')
plt.show()

그래프에 범례 넣기

x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--', label='me')
plt.legend()
plt.show()
x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo--', label='me')
plt.plot(x,y2,'rs--', label='you')
plt.title('title')
plt.legend()
plt.show()
  • 웃자고 하는 소리 -

나는 한결 같이 꾸준히 노력했다. 비록 초기값이 너 보자 작지만 ...

너도 한결 같이 꾸준히 노력했다. 초기값이 나보다 높은 곳에서 시작하였하여

한 동안 나보다 큰 값을 가졌지만

너가 방황하는 동안 나는 늘 한결 같이 노력했다.

웃자고 하는 소리였습니다.

거렇다고 파란선이 승자냐? 그건 아니죠. x 축의 값이 4.0을 지나면서 또 어떤 일이 생길지 모릅니다. ㅎㅎㅎㅎ


x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo--', label='me')
plt.plot(x,y2,'rs--', label='you')
plt.title('title')
plt.legend(loc=4)
plt.show()

지구 평균 기온 상승을 그래프로 보이고 싶다.

왜 보이고 싶은가? 보이고 싶은 목적이란 무엇인가?

온도가 많이 상승한다고 하면, 이런 그래프를 보여주고 싶다.

평균기온이 상승한다고 하면, 그래프를 보고 설득시켜야 한다.

→ 내 말을 설득시키기 위해서

1908년 1년 평균치 온도부터 2023년 평균온도까지

여름 평균, 겨울 평균, 연평균을 모두 그린 다음,

내가 말하고자 하는 내용을 잘 나타내는 것을 보여주면 된다.

낚시를 한창 다니던 시절

옛날에는 한강이 얼었다.

서울 살아보면, 한강이 어는 일은 매우 드문 일이다.

내가 표현하고 싶은 것을 데이터에서 어떻게 보여줄것인가

  1. 데이터 읽어 오기
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)           # 헤더 제거

for row in data:
  print(row[-1])      # 최고 기온값만 출력

f.close()
  1. 데이터를 리스트에 저장하기

: 누락 데이터를 제외하고 최고 기온 값만 추출하여 리스트 형 데이터를 만든다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)            # 헤더 제거

max_temp_list =[]     # 최고 기온 데이터를 저장하기 위해 미리 빈 리스트 생성

for row in data:
  # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
  if row[-1] != '':
    # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장
    max_temp_list.append(float(row[-1]))

f.close()

print(max_temp_list)
print( len(max_temp_list) )
  1. 데이터 시각화
import matplotlib.pyplot as plt
plt.plot(max_temp_list, 'r')
plt.show()
  1. 날짜 데이터 추출하기

‘서울.csv’파일에서 구한 데이터는 아래와 같은 형태의 데이터이다.

['\\t2009-06-14', '108', '20.2', '18.2', '23.8']

위 리스트에서 날짜에 해당하는 정보는 첫 번쨰 요소로 단순 문자열로 기록되어 있다.

'\\t2009-06-14'

여기서 연, 월, 일 정보를 추출한다고 하자.

먼저 replace() 함수를 사용하여 \t를 제거한다.

date = '\\t2009-06-14'
date = date.replace('\\t', '')
print(date)

그리고 ‘2009-06-14’의 문자열은 split()함수를 이용하여 연, 월, 일을 분리한다.

ymd = date.split('-')
print(ymd)
=> ['2009', '06', '14']
print(ymd[0])   # 년: year
print(ymd[1])   # 월: month
print(ymd[2])   # 일: day
=>
2009
06
14

1년 중 가장 더운 8월 달의 최고 기온 데이터만 추출하여 그래프로 그린다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)

max_temp_list =[]

for row in data:
  if row[-1] != '':                         # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
    if row[0].split('-')[1] == '08':          # ['\\t2009-06-14', '108', '20.2', '18.2', '23.8']
      max_temp_list.append(float(row[-1]))    # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장

f.close()

plt.figure(figsize=(16, 4))
plt.plot(max_temp_list, 'r')
plt.show()
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)
max_temp_list =[]

for row in data:
  if row[-1] != '':                                                             # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
    if row[0].split('-')[1] == '01' and row[0].split('-')[2] =='24':
      max_temp_list.append(float(row[-1]))                                      # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장

f.close()

plt.figure(figsize=(16, 4))
plt.plot(max_temp_list, 'b.-')
plt.title('max. temp of January 24 every year')
plt.ylabel('temp')
plt.grid()
plt.show()
import csv
import matplotlib.pyplot as plt

f = open('서울.csv', 'r', encoding='cp949')
data = csv.reader(f)

next(data)
high = []
low = []
year =[]

for row in data :
    if row[-1] != '' and row[-2] != '':
        if 1981 <= int(row[0].split('-')[0]) : 
                if row[0].split('-')[1] == '09' and row[0].split('-')[2] == '30':
                    high.append(float(row[-1]))
                    low.append(float(row[-2]))
                    year.append(int(row[0].split('-')[0]))

plt.rc('font', family='NanumBarunGothic') 
plt.title('달빛샘 생일의 기온 변화 그래프(9월 30일)')    

plt.plot(year, high, 'r', label='최고')
plt.plot(year, low, 'b', label='최저')
plt.legend()

plt.show()

모두의 데이터분석 with 파이썬

(실생활 예제로 시작하는 데이터 분석 첫걸음)

바닷가 출신이지만, 몇 가지 생선만 골라서 먹는 사람이 있다.

밥상에 생선을 잘 올리지 않는다.

술안주로 회보단 육류를 생각하는 사람들이 많다.

대부분, 굶주리면 먹게 된다.

안동과 서울은 내륙이다.

서울 횟집 매운탕은 C급이다.

모든 음식의 1순위는 ‘산도(신선도)’이다.

C급은 양념으로 어느정도 먹을 수 있는 정도.

신 김치와 썩은 김치는 구분이 된다.

육류: 돼지, 소, 닭, 오리


기상 자료 개방 포털 (https://data.kma.go.kr)

아래한글로 작성된 문서를 메모장으로 열어보면,

자기만의 방식으로 저장된 것을 확인할 수 있다.

어떤 자료를 넘기면, 각자 자기만의 방식으로 저장하게 된다.

→ 데이터에선, 아스키 코드로 본다. (아스키 파일)

CSV파일은 기본값 ‘,’로 구분하여 저장하게 된다.

Excel 프로그램이 인식할 수 있음

데이터 분석을 할 때, 통계 자료를 제공하는 사이트를 뒤져서 특정 자료로 접근하는 것이 수월할 것이다.


  • csv 파일 열어보기
import csv

f = open('서울.csv', 'r')
data = csv.reader(f)
print(data)
f.close()
  • 1번 라인, import csv는 csv 모듈을 불러옴

각 행의 데이터가 대괄호([])로 둘러쌓임: 리스트

각 행, 리스트 데이터의 각 요소가 작은 따옴표(’ ‘)로 둘러쌓임: 문자열

누락된 데이터를 확인하기는 어렵다.


가장 쉬운 것: 제외하기

  • 헤더 확인하기

: next( )함수는 data의 한 행 데이터를 반환 후 data에서 그 행을 삭제

  • 이터러블한 데이터 중에서 next( )함수로 차례 차례 요소를 꺼낼 수 있는 것을 ‘이터레이터’라고 함
  • 리스트, 딕셔너리, 문자열, 튜플 등은 모두 ‘이터러블’(요소를 차례 차례 하나씩 꺼낼 수 있는)하다고 함.
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)

# 첫번째 행을 읽어와서 header에 할당
header = next(data)
print(header)

# 그 다음 행을 읽어와서 first_row에 할당
first_row = next(data)
print(first_row)
f.close()

데이터에서 어떤 정보를 추출해 낼 수 있는가?

→ 어떤 의미있는 정보를 자료로부터 끄집어내기 위해서

  • 언제 가장 더웠고, 얼마나 더웠을까?
  • 일교차가 가장 큰 날은 1년 중 언제였을까?

#사람마다 더위를 느끼는 정도가 다르다.

어떤 사람은 습도가 높을수록, 어떤 사람은 온도가 높을수록 덥다고 느낄 수 있다.

→ 가장 더웠던 날은 언제이고, 얼마나 더웠을까? 라는 질문을 다듬어서

기온, 습도, 풍속 등 정확한 정보로 언급하는 것이 신뢰성이 있다.

⇒ 기상 관측 이래, 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

  • 일별로 기록된 최고기온 중, 가장 높은 값은 얼마인가?

파이썬 코드 작성 - 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
header = next(data)    # header 제거
max_temp = -999
max_Data = ''

for row in data:
  # 최고 기온 정보는 행(리스트)의 맨 마지막 요소
  if row[-1] == '':        # 맨 마지막 요소가 누락되었다면
    row[-1] = -1000        # 존재할 수 없는 최고 기온. 
  else:
    row[-1] = float(row[-1])
  if max_temp < row[-1]:
    max_temp = row[-1]
    max_date = row[0]

f.close()
print("서울의 최고 기온이 가장 높았던 날은"\\ + max_data +"일이며 "+ str(max_temp) +"도였습니다.")

혼자 공부하는 파이썬

모두의 데이터분석 with 파이썬

이것이 MySQL이다.

혼자 공부하는 자바 스크립트

  • 기온 공공 데이터에 질문하기 - 데이터에서 원하는 정보를 얻기

파이썬 코드 작성 - 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

‘data’의 각 행은 리스트 형이었음

date_list → 날짜를 요소로 하는 리스트

온도만 들어있는 리스트를 뽑고, 데이터만 들어있는 리스트를 뽑으면 된다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
header = next(data)       # header 제거
max_temp = -999
max_data = ''
for row in data:
  #최고 기온 정보는 행(리스트)의 맨 마지막 요소.
  if row[-1] == '':           # 맨 마지막 요소가 누락되었다면
    row[-1] = -1000           # 존재 할 수 없는 최고 기온.
  else:
    row[-1] = float(row[-1])    # 문자열 형 -> 숫자형으로 변환
  if max_temp < row[-1]:
    max_temp = row[-1]
    max_date = row[0]
f.close()
print("서울의 최고 기온이 가장 높았던 날은 "\\
      + max_date +"일이며 "+ str(max_temp) +"도였습니다.")

학연, 지연, 혈연은 중요치 않지만, 이유모르게 더 친근한 느낌이 드는 이유이기도 하다.

뭔가 의미있는 정보를 만들어내려고 하는 것이다.

최고 온도가 얼마이고 몇 도인지 궁금하다면 필요한 정보를 뽑아내야 한다.

공부하고 있는 아버지

→ 아들이 자연스럽게 책을 보는 것이 문화가 된다고 생각한다.

연합고사라 불리는 고등학교 시험이 있다.

서울에서 떨어진 곳에 있는 형, 누나들이 같이 살았다.

중학교 3학년 때 도서관에 앉아있는 것이 삶의 일부가 되었다.

→ 자연스럽게 나의 삶이 변하게 된다.

내 삶의 방식을 은연중에 보고 배운다.

→ 자연스럽게 보고 배울 것이다.

어떤 일을 스스로 할 수 있게 되기까지 10년은 걸린다.

아직 20살 넘어서 10년이 되지 않았다.

가르치는 입장, 구직하는 입장에서 보면

시간이 필요하다. → 이 시간을 줄일려고 노력하는 것이다.

  • 공통의 목적: 주어진 기간안에 큰 성장을 이루길 바란다.

둘째 마당- 데이터 시각화 기초

  • 기본 그래프 그리기

matplotlib 라이브러리란?

기본 그래프 그리기

import matplotlib.pyplot as plt
plt.plot([10, 20, 30, 40])         # y-축 데이터만 전달 했음.
plt.show()
import matplotlib.pyplot as plt
# x-축 데이터와 y-축 데이터 모두 전달
# x-축 데이터 개수와 y-축 데이터 개수 일치
plt.plot([1, 2, 3, 4], [10, 20, 30, 40])
plt.show()
  • 앞 페이지의 그래프와 비교할 것

  • numpy 모듈은 python으로 수학 계산을 고속으로 처리하기 위해 만들어졌다.
import numpy as np

x = np.arange(5)
print(x)
print(type(x))
=>
[0 1 2 3 4]
<class 'numpy.ndarray'>
x = range(5)
print(x)
print(list(x))
print(type(x))
=>
range(0, 5)
[0, 1, 2, 3, 4]
<class 'range'>
x = np.arange(1, 5)
print('x:', x)
print('2*x:', 2*x)
print('2*x+1:', 2*x+1)
=>
x: [1 2 3 4]
2*x: [2 4 6 8]
2*x+1: [3 5 7 9]

import numpy as np

x = np.arange(1, 5)
y = 2*x + 1
plt.plot(x, y, 'bo--')
plt.show()
  • 그래프에 옵션 추가하기
  1. 그래프에 제목 넣기
x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--')
plt.title('My Income')
plt.show()
x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--')

plt.title('My Income')
plt.xlabel('year')
plt.ylabel('$')
plt.show()

N개의 그래프를 하나의 그림(figure)에 넣기

x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo-')
plt.plot(x,y2,'rs:')
plt.title('title')
plt.show()

그래프에 범례 넣기

x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--', label='me')
plt.legend()
plt.show()
x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo--', label='me')
plt.plot(x,y2,'rs--', label='you')
plt.title('title')
plt.legend()
plt.show()
  • 웃자고 하는 소리 -

나는 한결 같이 꾸준히 노력했다. 비록 초기값이 너 보자 작지만 ...

너도 한결 같이 꾸준히 노력했다. 초기값이 나보다 높은 곳에서 시작하였하여

한 동안 나보다 큰 값을 가졌지만

너가 방황하는 동안 나는 늘 한결 같이 노력했다.

웃자고 하는 소리였습니다.

거렇다고 파란선이 승자냐? 그건 아니죠. x 축의 값이 4.0을 지나면서 또 어떤 일이 생길지 모릅니다. ㅎㅎㅎㅎ


x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo--', label='me')
plt.plot(x,y2,'rs--', label='you')
plt.title('title')
plt.legend(loc=4)
plt.show()

지구 평균 기온 상승을 그래프로 보이고 싶다.

왜 보이고 싶은가? 보이고 싶은 목적이란 무엇인가?

온도가 많이 상승한다고 하면, 이런 그래프를 보여주고 싶다.

평균기온이 상승한다고 하면, 그래프를 보고 설득시켜야 한다.

→ 내 말을 설득시키기 위해서

1908년 1년 평균치 온도부터 2023년 평균온도까지

여름 평균, 겨울 평균, 연평균을 모두 그린 다음,

내가 말하고자 하는 내용을 잘 나타내는 것을 보여주면 된다.

낚시를 한창 다니던 시절

옛날에는 한강이 얼었다.

서울 살아보면, 한강이 어는 일은 매우 드문 일이다.

내가 표현하고 싶은 것을 데이터에서 어떻게 보여줄것인가

  1. 데이터 읽어 오기
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)           # 헤더 제거

for row in data:
  print(row[-1])      # 최고 기온값만 출력

f.close()
  1. 데이터를 리스트에 저장하기

: 누락 데이터를 제외하고 최고 기온 값만 추출하여 리스트 형 데이터를 만든다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)            # 헤더 제거

max_temp_list =[]     # 최고 기온 데이터를 저장하기 위해 미리 빈 리스트 생성

for row in data:
  # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
  if row[-1] != '':
    # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장
    max_temp_list.append(float(row[-1]))

f.close()

print(max_temp_list)
print( len(max_temp_list) )
  1. 데이터 시각화
import matplotlib.pyplot as plt
plt.plot(max_temp_list, 'r')
plt.show()
  1. 날짜 데이터 추출하기

‘서울.csv’파일에서 구한 데이터는 아래와 같은 형태의 데이터이다.

['\\t2009-06-14', '108', '20.2', '18.2', '23.8']

위 리스트에서 날짜에 해당하는 정보는 첫 번쨰 요소로 단순 문자열로 기록되어 있다.

'\\t2009-06-14'

여기서 연, 월, 일 정보를 추출한다고 하자.

먼저 replace() 함수를 사용하여 \t를 제거한다.

date = '\\t2009-06-14'
date = date.replace('\\t', '')
print(date)

그리고 ‘2009-06-14’의 문자열은 split()함수를 이용하여 연, 월, 일을 분리한다.

ymd = date.split('-')
print(ymd)
=> ['2009', '06', '14']
print(ymd[0])   # 년: year
print(ymd[1])   # 월: month
print(ymd[2])   # 일: day
=>
2009
06
14

1년 중 가장 더운 8월 달의 최고 기온 데이터만 추출하여 그래프로 그린다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)

max_temp_list =[]

for row in data:
  if row[-1] != '':                         # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
    if row[0].split('-')[1] == '08':          # ['\\t2009-06-14', '108', '20.2', '18.2', '23.8']
      max_temp_list.append(float(row[-1]))    # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장

f.close()

plt.figure(figsize=(16, 4))
plt.plot(max_temp_list, 'r')
plt.show()
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)
max_temp_list =[]

for row in data:
  if row[-1] != '':                                                             # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
    if row[0].split('-')[1] == '01' and row[0].split('-')[2] =='24':
      max_temp_list.append(float(row[-1]))                                      # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장

f.close()

plt.figure(figsize=(16, 4))
plt.plot(max_temp_list, 'b.-')
plt.title('max. temp of January 24 every year')
plt.ylabel('temp')
plt.grid()
plt.show()
import csv
import matplotlib.pyplot as plt

f = open('서울.csv', 'r', encoding='cp949')
data = csv.reader(f)

next(data)
high = []
low = []
year =[]

for row in data :
    if row[-1] != '' and row[-2] != '':
        if 1981 <= int(row[0].split('-')[0]) : 
                if row[0].split('-')[1] == '09' and row[0].split('-')[2] == '30':
                    high.append(float(row[-1]))
                    low.append(float(row[-2]))
                    year.append(int(row[0].split('-')[0]))

plt.rc('font', family='NanumBarunGothic') 
plt.title('달빛샘 생일의 기온 변화 그래프(9월 30일)')    

plt.plot(year, high, 'r', label='최고')
plt.plot(year, low, 'b', label='최저')
plt.legend()

plt.show()

모두의 데이터분석 with 파이썬

(실생활 예제로 시작하는 데이터 분석 첫걸음)

바닷가 출신이지만, 몇 가지 생선만 골라서 먹는 사람이 있다.

밥상에 생선을 잘 올리지 않는다.

술안주로 회보단 육류를 생각하는 사람들이 많다.

대부분, 굶주리면 먹게 된다.

안동과 서울은 내륙이다.

서울 횟집 매운탕은 C급이다.

모든 음식의 1순위는 ‘산도(신선도)’이다.

C급은 양념으로 어느정도 먹을 수 있는 정도.

신 김치와 썩은 김치는 구분이 된다.

육류: 돼지, 소, 닭, 오리


기상 자료 개방 포털 (https://data.kma.go.kr)

아래한글로 작성된 문서를 메모장으로 열어보면,

자기만의 방식으로 저장된 것을 확인할 수 있다.

어떤 자료를 넘기면, 각자 자기만의 방식으로 저장하게 된다.

→ 데이터에선, 아스키 코드로 본다. (아스키 파일)

CSV파일은 기본값 ‘,’로 구분하여 저장하게 된다.

Excel 프로그램이 인식할 수 있음

데이터 분석을 할 때, 통계 자료를 제공하는 사이트를 뒤져서 특정 자료로 접근하는 것이 수월할 것이다.


  • csv 파일 열어보기
import csv

f = open('서울.csv', 'r')
data = csv.reader(f)
print(data)
f.close()
  • 1번 라인, import csv는 csv 모듈을 불러옴

각 행의 데이터가 대괄호([])로 둘러쌓임: 리스트

각 행, 리스트 데이터의 각 요소가 작은 따옴표(’ ‘)로 둘러쌓임: 문자열

누락된 데이터를 확인하기는 어렵다.


가장 쉬운 것: 제외하기

  • 헤더 확인하기

: next( )함수는 data의 한 행 데이터를 반환 후 data에서 그 행을 삭제

  • 이터러블한 데이터 중에서 next( )함수로 차례 차례 요소를 꺼낼 수 있는 것을 ‘이터레이터’라고 함
  • 리스트, 딕셔너리, 문자열, 튜플 등은 모두 ‘이터러블’(요소를 차례 차례 하나씩 꺼낼 수 있는)하다고 함.
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)

# 첫번째 행을 읽어와서 header에 할당
header = next(data)
print(header)

# 그 다음 행을 읽어와서 first_row에 할당
first_row = next(data)
print(first_row)
f.close()

데이터에서 어떤 정보를 추출해 낼 수 있는가?

→ 어떤 의미있는 정보를 자료로부터 끄집어내기 위해서

  • 언제 가장 더웠고, 얼마나 더웠을까?
  • 일교차가 가장 큰 날은 1년 중 언제였을까?

#사람마다 더위를 느끼는 정도가 다르다.

어떤 사람은 습도가 높을수록, 어떤 사람은 온도가 높을수록 덥다고 느낄 수 있다.

→ 가장 더웠던 날은 언제이고, 얼마나 더웠을까? 라는 질문을 다듬어서

기온, 습도, 풍속 등 정확한 정보로 언급하는 것이 신뢰성이 있다.

⇒ 기상 관측 이래, 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

  • 일별로 기록된 최고기온 중, 가장 높은 값은 얼마인가?

파이썬 코드 작성 - 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
header = next(data)    # header 제거
max_temp = -999
max_Data = ''

for row in data:
  # 최고 기온 정보는 행(리스트)의 맨 마지막 요소
  if row[-1] == '':        # 맨 마지막 요소가 누락되었다면
    row[-1] = -1000        # 존재할 수 없는 최고 기온. 
  else:
    row[-1] = float(row[-1])
  if max_temp < row[-1]:
    max_temp = row[-1]
    max_date = row[0]

f.close()
print("서울의 최고 기온이 가장 높았던 날은"\\ + max_data +"일이며 "+ str(max_temp) +"도였습니다.")

혼자 공부하는 파이썬

모두의 데이터분석 with 파이썬

이것이 MySQL이다.

혼자 공부하는 자바 스크립트

  • 기온 공공 데이터에 질문하기 - 데이터에서 원하는 정보를 얻기

파이썬 코드 작성 - 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

‘data’의 각 행은 리스트 형이었음

date_list → 날짜를 요소로 하는 리스트

온도만 들어있는 리스트를 뽑고, 데이터만 들어있는 리스트를 뽑으면 된다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
header = next(data)       # header 제거
max_temp = -999
max_data = ''
for row in data:
  #최고 기온 정보는 행(리스트)의 맨 마지막 요소.
  if row[-1] == '':           # 맨 마지막 요소가 누락되었다면
    row[-1] = -1000           # 존재 할 수 없는 최고 기온.
  else:
    row[-1] = float(row[-1])    # 문자열 형 -> 숫자형으로 변환
  if max_temp < row[-1]:
    max_temp = row[-1]
    max_date = row[0]
f.close()
print("서울의 최고 기온이 가장 높았던 날은 "\\
      + max_date +"일이며 "+ str(max_temp) +"도였습니다.")

학연, 지연, 혈연은 중요치 않지만, 이유모르게 더 친근한 느낌이 드는 이유이기도 하다.

뭔가 의미있는 정보를 만들어내려고 하는 것이다.

최고 온도가 얼마이고 몇 도인지 궁금하다면 필요한 정보를 뽑아내야 한다.

공부하고 있는 아버지

→ 아들이 자연스럽게 책을 보는 것이 문화가 된다고 생각한다.

연합고사라 불리는 고등학교 시험이 있다.

서울에서 떨어진 곳에 있는 형, 누나들이 같이 살았다.

중학교 3학년 때 도서관에 앉아있는 것이 삶의 일부가 되었다.

→ 자연스럽게 나의 삶이 변하게 된다.

내 삶의 방식을 은연중에 보고 배운다.

→ 자연스럽게 보고 배울 것이다.

어떤 일을 스스로 할 수 있게 되기까지 10년은 걸린다.

아직 20살 넘어서 10년이 되지 않았다.

가르치는 입장, 구직하는 입장에서 보면

시간이 필요하다. → 이 시간을 줄일려고 노력하는 것이다.

  • 공통의 목적: 주어진 기간안에 큰 성장을 이루길 바란다.

둘째 마당- 데이터 시각화 기초

  • 기본 그래프 그리기

matplotlib 라이브러리란?

기본 그래프 그리기

import matplotlib.pyplot as plt
plt.plot([10, 20, 30, 40])         # y-축 데이터만 전달 했음.
plt.show()
import matplotlib.pyplot as plt
# x-축 데이터와 y-축 데이터 모두 전달
# x-축 데이터 개수와 y-축 데이터 개수 일치
plt.plot([1, 2, 3, 4], [10, 20, 30, 40])
plt.show()
  • 앞 페이지의 그래프와 비교할 것

  • numpy 모듈은 python으로 수학 계산을 고속으로 처리하기 위해 만들어졌다.
import numpy as np

x = np.arange(5)
print(x)
print(type(x))
=>
[0 1 2 3 4]
<class 'numpy.ndarray'>
x = range(5)
print(x)
print(list(x))
print(type(x))
=>
range(0, 5)
[0, 1, 2, 3, 4]
<class 'range'>
x = np.arange(1, 5)
print('x:', x)
print('2*x:', 2*x)
print('2*x+1:', 2*x+1)
=>
x: [1 2 3 4]
2*x: [2 4 6 8]
2*x+1: [3 5 7 9]

import numpy as np

x = np.arange(1, 5)
y = 2*x + 1
plt.plot(x, y, 'bo--')
plt.show()
  • 그래프에 옵션 추가하기
  1. 그래프에 제목 넣기
x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--')
plt.title('My Income')
plt.show()
x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--')

plt.title('My Income')
plt.xlabel('year')
plt.ylabel('$')
plt.show()

N개의 그래프를 하나의 그림(figure)에 넣기

x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo-')
plt.plot(x,y2,'rs:')
plt.title('title')
plt.show()

그래프에 범례 넣기

x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--', label='me')
plt.legend()
plt.show()
x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo--', label='me')
plt.plot(x,y2,'rs--', label='you')
plt.title('title')
plt.legend()
plt.show()
  • 웃자고 하는 소리 -

나는 한결 같이 꾸준히 노력했다. 비록 초기값이 너 보자 작지만 ...

너도 한결 같이 꾸준히 노력했다. 초기값이 나보다 높은 곳에서 시작하였하여

한 동안 나보다 큰 값을 가졌지만

너가 방황하는 동안 나는 늘 한결 같이 노력했다.

웃자고 하는 소리였습니다.

거렇다고 파란선이 승자냐? 그건 아니죠. x 축의 값이 4.0을 지나면서 또 어떤 일이 생길지 모릅니다. ㅎㅎㅎㅎ


x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo--', label='me')
plt.plot(x,y2,'rs--', label='you')
plt.title('title')
plt.legend(loc=4)
plt.show()

지구 평균 기온 상승을 그래프로 보이고 싶다.

왜 보이고 싶은가? 보이고 싶은 목적이란 무엇인가?

온도가 많이 상승한다고 하면, 이런 그래프를 보여주고 싶다.

평균기온이 상승한다고 하면, 그래프를 보고 설득시켜야 한다.

→ 내 말을 설득시키기 위해서

1908년 1년 평균치 온도부터 2023년 평균온도까지

여름 평균, 겨울 평균, 연평균을 모두 그린 다음,

내가 말하고자 하는 내용을 잘 나타내는 것을 보여주면 된다.

낚시를 한창 다니던 시절

옛날에는 한강이 얼었다.

서울 살아보면, 한강이 어는 일은 매우 드문 일이다.

내가 표현하고 싶은 것을 데이터에서 어떻게 보여줄것인가

  1. 데이터 읽어 오기
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)           # 헤더 제거

for row in data:
  print(row[-1])      # 최고 기온값만 출력

f.close()
  1. 데이터를 리스트에 저장하기

: 누락 데이터를 제외하고 최고 기온 값만 추출하여 리스트 형 데이터를 만든다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)            # 헤더 제거

max_temp_list =[]     # 최고 기온 데이터를 저장하기 위해 미리 빈 리스트 생성

for row in data:
  # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
  if row[-1] != '':
    # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장
    max_temp_list.append(float(row[-1]))

f.close()

print(max_temp_list)
print( len(max_temp_list) )
  1. 데이터 시각화
import matplotlib.pyplot as plt
plt.plot(max_temp_list, 'r')
plt.show()
  1. 날짜 데이터 추출하기

‘서울.csv’파일에서 구한 데이터는 아래와 같은 형태의 데이터이다.

['\\t2009-06-14', '108', '20.2', '18.2', '23.8']

위 리스트에서 날짜에 해당하는 정보는 첫 번쨰 요소로 단순 문자열로 기록되어 있다.

'\\t2009-06-14'

여기서 연, 월, 일 정보를 추출한다고 하자.

먼저 replace() 함수를 사용하여 \t를 제거한다.

date = '\\t2009-06-14'
date = date.replace('\\t', '')
print(date)

그리고 ‘2009-06-14’의 문자열은 split()함수를 이용하여 연, 월, 일을 분리한다.

ymd = date.split('-')
print(ymd)
=> ['2009', '06', '14']
print(ymd[0])   # 년: year
print(ymd[1])   # 월: month
print(ymd[2])   # 일: day
=>
2009
06
14

1년 중 가장 더운 8월 달의 최고 기온 데이터만 추출하여 그래프로 그린다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)

max_temp_list =[]

for row in data:
  if row[-1] != '':                         # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
    if row[0].split('-')[1] == '08':          # ['\\t2009-06-14', '108', '20.2', '18.2', '23.8']
      max_temp_list.append(float(row[-1]))    # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장

f.close()

plt.figure(figsize=(16, 4))
plt.plot(max_temp_list, 'r')
plt.show()
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)
max_temp_list =[]

for row in data:
  if row[-1] != '':                                                             # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
    if row[0].split('-')[1] == '01' and row[0].split('-')[2] =='24':
      max_temp_list.append(float(row[-1]))                                      # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장

f.close()

plt.figure(figsize=(16, 4))
plt.plot(max_temp_list, 'b.-')
plt.title('max. temp of January 24 every year')
plt.ylabel('temp')
plt.grid()
plt.show()
import csv
import matplotlib.pyplot as plt

f = open('서울.csv', 'r', encoding='cp949')
data = csv.reader(f)

next(data)
high = []
low = []
year =[]

for row in data :
    if row[-1] != '' and row[-2] != '':
        if 1981 <= int(row[0].split('-')[0]) : 
                if row[0].split('-')[1] == '09' and row[0].split('-')[2] == '30':
                    high.append(float(row[-1]))
                    low.append(float(row[-2]))
                    year.append(int(row[0].split('-')[0]))

plt.rc('font', family='NanumBarunGothic') 
plt.title('달빛샘 생일의 기온 변화 그래프(9월 30일)')    

plt.plot(year, high, 'r', label='최고')
plt.plot(year, low, 'b', label='최저')
plt.legend()

plt.show()

모두의 데이터분석 with 파이썬

(실생활 예제로 시작하는 데이터 분석 첫걸음)

바닷가 출신이지만, 몇 가지 생선만 골라서 먹는 사람이 있다.

밥상에 생선을 잘 올리지 않는다.

술안주로 회보단 육류를 생각하는 사람들이 많다.

대부분, 굶주리면 먹게 된다.

안동과 서울은 내륙이다.

서울 횟집 매운탕은 C급이다.

모든 음식의 1순위는 ‘산도(신선도)’이다.

C급은 양념으로 어느정도 먹을 수 있는 정도.

신 김치와 썩은 김치는 구분이 된다.

육류: 돼지, 소, 닭, 오리


기상 자료 개방 포털 (https://data.kma.go.kr)

아래한글로 작성된 문서를 메모장으로 열어보면,

자기만의 방식으로 저장된 것을 확인할 수 있다.

어떤 자료를 넘기면, 각자 자기만의 방식으로 저장하게 된다.

→ 데이터에선, 아스키 코드로 본다. (아스키 파일)

CSV파일은 기본값 ‘,’로 구분하여 저장하게 된다.

Excel 프로그램이 인식할 수 있음

데이터 분석을 할 때, 통계 자료를 제공하는 사이트를 뒤져서 특정 자료로 접근하는 것이 수월할 것이다.


  • csv 파일 열어보기
import csv

f = open('서울.csv', 'r')
data = csv.reader(f)
print(data)
f.close()
  • 1번 라인, import csv는 csv 모듈을 불러옴

각 행의 데이터가 대괄호([])로 둘러쌓임: 리스트

각 행, 리스트 데이터의 각 요소가 작은 따옴표(’ ‘)로 둘러쌓임: 문자열

누락된 데이터를 확인하기는 어렵다.


가장 쉬운 것: 제외하기

  • 헤더 확인하기

: next( )함수는 data의 한 행 데이터를 반환 후 data에서 그 행을 삭제

  • 이터러블한 데이터 중에서 next( )함수로 차례 차례 요소를 꺼낼 수 있는 것을 ‘이터레이터’라고 함
  • 리스트, 딕셔너리, 문자열, 튜플 등은 모두 ‘이터러블’(요소를 차례 차례 하나씩 꺼낼 수 있는)하다고 함.
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)

# 첫번째 행을 읽어와서 header에 할당
header = next(data)
print(header)

# 그 다음 행을 읽어와서 first_row에 할당
first_row = next(data)
print(first_row)
f.close()

데이터에서 어떤 정보를 추출해 낼 수 있는가?

→ 어떤 의미있는 정보를 자료로부터 끄집어내기 위해서

  • 언제 가장 더웠고, 얼마나 더웠을까?
  • 일교차가 가장 큰 날은 1년 중 언제였을까?

#사람마다 더위를 느끼는 정도가 다르다.

어떤 사람은 습도가 높을수록, 어떤 사람은 온도가 높을수록 덥다고 느낄 수 있다.

→ 가장 더웠던 날은 언제이고, 얼마나 더웠을까? 라는 질문을 다듬어서

기온, 습도, 풍속 등 정확한 정보로 언급하는 것이 신뢰성이 있다.

⇒ 기상 관측 이래, 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

  • 일별로 기록된 최고기온 중, 가장 높은 값은 얼마인가?

파이썬 코드 작성 - 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
header = next(data)    # header 제거
max_temp = -999
max_Data = ''

for row in data:
  # 최고 기온 정보는 행(리스트)의 맨 마지막 요소
  if row[-1] == '':        # 맨 마지막 요소가 누락되었다면
    row[-1] = -1000        # 존재할 수 없는 최고 기온. 
  else:
    row[-1] = float(row[-1])
  if max_temp < row[-1]:
    max_temp = row[-1]
    max_date = row[0]

f.close()
print("서울의 최고 기온이 가장 높았던 날은"\\ + max_data +"일이며 "+ str(max_temp) +"도였습니다.")

혼자 공부하는 파이썬

모두의 데이터분석 with 파이썬

이것이 MySQL이다.

혼자 공부하는 자바 스크립트

  • 기온 공공 데이터에 질문하기 - 데이터에서 원하는 정보를 얻기

파이썬 코드 작성 - 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

‘data’의 각 행은 리스트 형이었음

date_list → 날짜를 요소로 하는 리스트

온도만 들어있는 리스트를 뽑고, 데이터만 들어있는 리스트를 뽑으면 된다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
header = next(data)       # header 제거
max_temp = -999
max_data = ''
for row in data:
  #최고 기온 정보는 행(리스트)의 맨 마지막 요소.
  if row[-1] == '':           # 맨 마지막 요소가 누락되었다면
    row[-1] = -1000           # 존재 할 수 없는 최고 기온.
  else:
    row[-1] = float(row[-1])    # 문자열 형 -> 숫자형으로 변환
  if max_temp < row[-1]:
    max_temp = row[-1]
    max_date = row[0]
f.close()
print("서울의 최고 기온이 가장 높았던 날은 "\\
      + max_date +"일이며 "+ str(max_temp) +"도였습니다.")

학연, 지연, 혈연은 중요치 않지만, 이유모르게 더 친근한 느낌이 드는 이유이기도 하다.

뭔가 의미있는 정보를 만들어내려고 하는 것이다.

최고 온도가 얼마이고 몇 도인지 궁금하다면 필요한 정보를 뽑아내야 한다.

공부하고 있는 아버지

→ 아들이 자연스럽게 책을 보는 것이 문화가 된다고 생각한다.

연합고사라 불리는 고등학교 시험이 있다.

서울에서 떨어진 곳에 있는 형, 누나들이 같이 살았다.

중학교 3학년 때 도서관에 앉아있는 것이 삶의 일부가 되었다.

→ 자연스럽게 나의 삶이 변하게 된다.

내 삶의 방식을 은연중에 보고 배운다.

→ 자연스럽게 보고 배울 것이다.

어떤 일을 스스로 할 수 있게 되기까지 10년은 걸린다.

아직 20살 넘어서 10년이 되지 않았다.

가르치는 입장, 구직하는 입장에서 보면

시간이 필요하다. → 이 시간을 줄일려고 노력하는 것이다.

  • 공통의 목적: 주어진 기간안에 큰 성장을 이루길 바란다.

둘째 마당- 데이터 시각화 기초

  • 기본 그래프 그리기

matplotlib 라이브러리란?

기본 그래프 그리기

import matplotlib.pyplot as plt
plt.plot([10, 20, 30, 40])         # y-축 데이터만 전달 했음.
plt.show()
import matplotlib.pyplot as plt
# x-축 데이터와 y-축 데이터 모두 전달
# x-축 데이터 개수와 y-축 데이터 개수 일치
plt.plot([1, 2, 3, 4], [10, 20, 30, 40])
plt.show()
  • 앞 페이지의 그래프와 비교할 것

  • numpy 모듈은 python으로 수학 계산을 고속으로 처리하기 위해 만들어졌다.
import numpy as np

x = np.arange(5)
print(x)
print(type(x))
=>
[0 1 2 3 4]
<class 'numpy.ndarray'>
x = range(5)
print(x)
print(list(x))
print(type(x))
=>
range(0, 5)
[0, 1, 2, 3, 4]
<class 'range'>
x = np.arange(1, 5)
print('x:', x)
print('2*x:', 2*x)
print('2*x+1:', 2*x+1)
=>
x: [1 2 3 4]
2*x: [2 4 6 8]
2*x+1: [3 5 7 9]

import numpy as np

x = np.arange(1, 5)
y = 2*x + 1
plt.plot(x, y, 'bo--')
plt.show()
  • 그래프에 옵션 추가하기
  1. 그래프에 제목 넣기
x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--')
plt.title('My Income')
plt.show()
x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--')

plt.title('My Income')
plt.xlabel('year')
plt.ylabel('$')
plt.show()

N개의 그래프를 하나의 그림(figure)에 넣기

x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo-')
plt.plot(x,y2,'rs:')
plt.title('title')
plt.show()

그래프에 범례 넣기

x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--', label='me')
plt.legend()
plt.show()
x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo--', label='me')
plt.plot(x,y2,'rs--', label='you')
plt.title('title')
plt.legend()
plt.show()
  • 웃자고 하는 소리 -

나는 한결 같이 꾸준히 노력했다. 비록 초기값이 너 보자 작지만 ...

너도 한결 같이 꾸준히 노력했다. 초기값이 나보다 높은 곳에서 시작하였하여

한 동안 나보다 큰 값을 가졌지만

너가 방황하는 동안 나는 늘 한결 같이 노력했다.

웃자고 하는 소리였습니다.

거렇다고 파란선이 승자냐? 그건 아니죠. x 축의 값이 4.0을 지나면서 또 어떤 일이 생길지 모릅니다. ㅎㅎㅎㅎ


x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo--', label='me')
plt.plot(x,y2,'rs--', label='you')
plt.title('title')
plt.legend(loc=4)
plt.show()

지구 평균 기온 상승을 그래프로 보이고 싶다.

왜 보이고 싶은가? 보이고 싶은 목적이란 무엇인가?

온도가 많이 상승한다고 하면, 이런 그래프를 보여주고 싶다.

평균기온이 상승한다고 하면, 그래프를 보고 설득시켜야 한다.

→ 내 말을 설득시키기 위해서

1908년 1년 평균치 온도부터 2023년 평균온도까지

여름 평균, 겨울 평균, 연평균을 모두 그린 다음,

내가 말하고자 하는 내용을 잘 나타내는 것을 보여주면 된다.

낚시를 한창 다니던 시절

옛날에는 한강이 얼었다.

서울 살아보면, 한강이 어는 일은 매우 드문 일이다.

내가 표현하고 싶은 것을 데이터에서 어떻게 보여줄것인가

  1. 데이터 읽어 오기
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)           # 헤더 제거

for row in data:
  print(row[-1])      # 최고 기온값만 출력

f.close()
  1. 데이터를 리스트에 저장하기

: 누락 데이터를 제외하고 최고 기온 값만 추출하여 리스트 형 데이터를 만든다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)            # 헤더 제거

max_temp_list =[]     # 최고 기온 데이터를 저장하기 위해 미리 빈 리스트 생성

for row in data:
  # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
  if row[-1] != '':
    # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장
    max_temp_list.append(float(row[-1]))

f.close()

print(max_temp_list)
print( len(max_temp_list) )
  1. 데이터 시각화
import matplotlib.pyplot as plt
plt.plot(max_temp_list, 'r')
plt.show()
  1. 날짜 데이터 추출하기

‘서울.csv’파일에서 구한 데이터는 아래와 같은 형태의 데이터이다.

['\\t2009-06-14', '108', '20.2', '18.2', '23.8']

위 리스트에서 날짜에 해당하는 정보는 첫 번쨰 요소로 단순 문자열로 기록되어 있다.

'\\t2009-06-14'

여기서 연, 월, 일 정보를 추출한다고 하자.

먼저 replace() 함수를 사용하여 \t를 제거한다.

date = '\\t2009-06-14'
date = date.replace('\\t', '')
print(date)

그리고 ‘2009-06-14’의 문자열은 split()함수를 이용하여 연, 월, 일을 분리한다.

ymd = date.split('-')
print(ymd)
=> ['2009', '06', '14']
print(ymd[0])   # 년: year
print(ymd[1])   # 월: month
print(ymd[2])   # 일: day
=>
2009
06
14

1년 중 가장 더운 8월 달의 최고 기온 데이터만 추출하여 그래프로 그린다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)

max_temp_list =[]

for row in data:
  if row[-1] != '':                         # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
    if row[0].split('-')[1] == '08':          # ['\\t2009-06-14', '108', '20.2', '18.2', '23.8']
      max_temp_list.append(float(row[-1]))    # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장

f.close()

plt.figure(figsize=(16, 4))
plt.plot(max_temp_list, 'r')
plt.show()
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)
max_temp_list =[]

for row in data:
  if row[-1] != '':                                                             # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
    if row[0].split('-')[1] == '01' and row[0].split('-')[2] =='24':
      max_temp_list.append(float(row[-1]))                                      # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장

f.close()

plt.figure(figsize=(16, 4))
plt.plot(max_temp_list, 'b.-')
plt.title('max. temp of January 24 every year')
plt.ylabel('temp')
plt.grid()
plt.show()
import csv
import matplotlib.pyplot as plt

f = open('서울.csv', 'r', encoding='cp949')
data = csv.reader(f)

next(data)
high = []
low = []
year =[]

for row in data :
    if row[-1] != '' and row[-2] != '':
        if 1981 <= int(row[0].split('-')[0]) : 
                if row[0].split('-')[1] == '09' and row[0].split('-')[2] == '30':
                    high.append(float(row[-1]))
                    low.append(float(row[-2]))
                    year.append(int(row[0].split('-')[0]))

plt.rc('font', family='NanumBarunGothic') 
plt.title('달빛샘 생일의 기온 변화 그래프(9월 30일)')    

plt.plot(year, high, 'r', label='최고')
plt.plot(year, low, 'b', label='최저')
plt.legend()

plt.show()

모두의 데이터분석 with 파이썬

(실생활 예제로 시작하는 데이터 분석 첫걸음)

바닷가 출신이지만, 몇 가지 생선만 골라서 먹는 사람이 있다.

밥상에 생선을 잘 올리지 않는다.

술안주로 회보단 육류를 생각하는 사람들이 많다.

대부분, 굶주리면 먹게 된다.

안동과 서울은 내륙이다.

서울 횟집 매운탕은 C급이다.

모든 음식의 1순위는 ‘산도(신선도)’이다.

C급은 양념으로 어느정도 먹을 수 있는 정도.

신 김치와 썩은 김치는 구분이 된다.

육류: 돼지, 소, 닭, 오리


기상 자료 개방 포털 (https://data.kma.go.kr)

아래한글로 작성된 문서를 메모장으로 열어보면,

자기만의 방식으로 저장된 것을 확인할 수 있다.

어떤 자료를 넘기면, 각자 자기만의 방식으로 저장하게 된다.

→ 데이터에선, 아스키 코드로 본다. (아스키 파일)

CSV파일은 기본값 ‘,’로 구분하여 저장하게 된다.

Excel 프로그램이 인식할 수 있음

데이터 분석을 할 때, 통계 자료를 제공하는 사이트를 뒤져서 특정 자료로 접근하는 것이 수월할 것이다.


  • csv 파일 열어보기
import csv

f = open('서울.csv', 'r')
data = csv.reader(f)
print(data)
f.close()
  • 1번 라인, import csv는 csv 모듈을 불러옴

각 행의 데이터가 대괄호([])로 둘러쌓임: 리스트

각 행, 리스트 데이터의 각 요소가 작은 따옴표(’ ‘)로 둘러쌓임: 문자열

누락된 데이터를 확인하기는 어렵다.


가장 쉬운 것: 제외하기

  • 헤더 확인하기

: next( )함수는 data의 한 행 데이터를 반환 후 data에서 그 행을 삭제

  • 이터러블한 데이터 중에서 next( )함수로 차례 차례 요소를 꺼낼 수 있는 것을 ‘이터레이터’라고 함
  • 리스트, 딕셔너리, 문자열, 튜플 등은 모두 ‘이터러블’(요소를 차례 차례 하나씩 꺼낼 수 있는)하다고 함.
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)

# 첫번째 행을 읽어와서 header에 할당
header = next(data)
print(header)

# 그 다음 행을 읽어와서 first_row에 할당
first_row = next(data)
print(first_row)
f.close()

데이터에서 어떤 정보를 추출해 낼 수 있는가?

→ 어떤 의미있는 정보를 자료로부터 끄집어내기 위해서

  • 언제 가장 더웠고, 얼마나 더웠을까?
  • 일교차가 가장 큰 날은 1년 중 언제였을까?

#사람마다 더위를 느끼는 정도가 다르다.

어떤 사람은 습도가 높을수록, 어떤 사람은 온도가 높을수록 덥다고 느낄 수 있다.

→ 가장 더웠던 날은 언제이고, 얼마나 더웠을까? 라는 질문을 다듬어서

기온, 습도, 풍속 등 정확한 정보로 언급하는 것이 신뢰성이 있다.

⇒ 기상 관측 이래, 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

  • 일별로 기록된 최고기온 중, 가장 높은 값은 얼마인가?

파이썬 코드 작성 - 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
header = next(data)    # header 제거
max_temp = -999
max_Data = ''

for row in data:
  # 최고 기온 정보는 행(리스트)의 맨 마지막 요소
  if row[-1] == '':        # 맨 마지막 요소가 누락되었다면
    row[-1] = -1000        # 존재할 수 없는 최고 기온. 
  else:
    row[-1] = float(row[-1])
  if max_temp < row[-1]:
    max_temp = row[-1]
    max_date = row[0]

f.close()
print("서울의 최고 기온이 가장 높았던 날은"\\ + max_data +"일이며 "+ str(max_temp) +"도였습니다.")

혼자 공부하는 파이썬

모두의 데이터분석 with 파이썬

이것이 MySQL이다.

혼자 공부하는 자바 스크립트

  • 기온 공공 데이터에 질문하기 - 데이터에서 원하는 정보를 얻기

파이썬 코드 작성 - 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

‘data’의 각 행은 리스트 형이었음

date_list → 날짜를 요소로 하는 리스트

온도만 들어있는 리스트를 뽑고, 데이터만 들어있는 리스트를 뽑으면 된다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
header = next(data)       # header 제거
max_temp = -999
max_data = ''
for row in data:
  #최고 기온 정보는 행(리스트)의 맨 마지막 요소.
  if row[-1] == '':           # 맨 마지막 요소가 누락되었다면
    row[-1] = -1000           # 존재 할 수 없는 최고 기온.
  else:
    row[-1] = float(row[-1])    # 문자열 형 -> 숫자형으로 변환
  if max_temp < row[-1]:
    max_temp = row[-1]
    max_date = row[0]
f.close()
print("서울의 최고 기온이 가장 높았던 날은 "\\
      + max_date +"일이며 "+ str(max_temp) +"도였습니다.")

학연, 지연, 혈연은 중요치 않지만, 이유모르게 더 친근한 느낌이 드는 이유이기도 하다.

뭔가 의미있는 정보를 만들어내려고 하는 것이다.

최고 온도가 얼마이고 몇 도인지 궁금하다면 필요한 정보를 뽑아내야 한다.

공부하고 있는 아버지

→ 아들이 자연스럽게 책을 보는 것이 문화가 된다고 생각한다.

연합고사라 불리는 고등학교 시험이 있다.

서울에서 떨어진 곳에 있는 형, 누나들이 같이 살았다.

중학교 3학년 때 도서관에 앉아있는 것이 삶의 일부가 되었다.

→ 자연스럽게 나의 삶이 변하게 된다.

내 삶의 방식을 은연중에 보고 배운다.

→ 자연스럽게 보고 배울 것이다.

어떤 일을 스스로 할 수 있게 되기까지 10년은 걸린다.

아직 20살 넘어서 10년이 되지 않았다.

가르치는 입장, 구직하는 입장에서 보면

시간이 필요하다. → 이 시간을 줄일려고 노력하는 것이다.

  • 공통의 목적: 주어진 기간안에 큰 성장을 이루길 바란다.

둘째 마당- 데이터 시각화 기초

  • 기본 그래프 그리기

matplotlib 라이브러리란?

기본 그래프 그리기

import matplotlib.pyplot as plt
plt.plot([10, 20, 30, 40])         # y-축 데이터만 전달 했음.
plt.show()
import matplotlib.pyplot as plt
# x-축 데이터와 y-축 데이터 모두 전달
# x-축 데이터 개수와 y-축 데이터 개수 일치
plt.plot([1, 2, 3, 4], [10, 20, 30, 40])
plt.show()
  • 앞 페이지의 그래프와 비교할 것

  • numpy 모듈은 python으로 수학 계산을 고속으로 처리하기 위해 만들어졌다.
import numpy as np

x = np.arange(5)
print(x)
print(type(x))
=>
[0 1 2 3 4]
<class 'numpy.ndarray'>
x = range(5)
print(x)
print(list(x))
print(type(x))
=>
range(0, 5)
[0, 1, 2, 3, 4]
<class 'range'>
x = np.arange(1, 5)
print('x:', x)
print('2*x:', 2*x)
print('2*x+1:', 2*x+1)
=>
x: [1 2 3 4]
2*x: [2 4 6 8]
2*x+1: [3 5 7 9]

import numpy as np

x = np.arange(1, 5)
y = 2*x + 1
plt.plot(x, y, 'bo--')
plt.show()
  • 그래프에 옵션 추가하기
  1. 그래프에 제목 넣기
x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--')
plt.title('My Income')
plt.show()
x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--')

plt.title('My Income')
plt.xlabel('year')
plt.ylabel('$')
plt.show()

N개의 그래프를 하나의 그림(figure)에 넣기

x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo-')
plt.plot(x,y2,'rs:')
plt.title('title')
plt.show()

그래프에 범례 넣기

x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--', label='me')
plt.legend()
plt.show()
x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo--', label='me')
plt.plot(x,y2,'rs--', label='you')
plt.title('title')
plt.legend()
plt.show()
  • 웃자고 하는 소리 -

나는 한결 같이 꾸준히 노력했다. 비록 초기값이 너 보자 작지만 ...

너도 한결 같이 꾸준히 노력했다. 초기값이 나보다 높은 곳에서 시작하였하여

한 동안 나보다 큰 값을 가졌지만

너가 방황하는 동안 나는 늘 한결 같이 노력했다.

웃자고 하는 소리였습니다.

거렇다고 파란선이 승자냐? 그건 아니죠. x 축의 값이 4.0을 지나면서 또 어떤 일이 생길지 모릅니다. ㅎㅎㅎㅎ


x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo--', label='me')
plt.plot(x,y2,'rs--', label='you')
plt.title('title')
plt.legend(loc=4)
plt.show()

지구 평균 기온 상승을 그래프로 보이고 싶다.

왜 보이고 싶은가? 보이고 싶은 목적이란 무엇인가?

온도가 많이 상승한다고 하면, 이런 그래프를 보여주고 싶다.

평균기온이 상승한다고 하면, 그래프를 보고 설득시켜야 한다.

→ 내 말을 설득시키기 위해서

1908년 1년 평균치 온도부터 2023년 평균온도까지

여름 평균, 겨울 평균, 연평균을 모두 그린 다음,

내가 말하고자 하는 내용을 잘 나타내는 것을 보여주면 된다.

낚시를 한창 다니던 시절

옛날에는 한강이 얼었다.

서울 살아보면, 한강이 어는 일은 매우 드문 일이다.

내가 표현하고 싶은 것을 데이터에서 어떻게 보여줄것인가

  1. 데이터 읽어 오기
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)           # 헤더 제거

for row in data:
  print(row[-1])      # 최고 기온값만 출력

f.close()
  1. 데이터를 리스트에 저장하기

: 누락 데이터를 제외하고 최고 기온 값만 추출하여 리스트 형 데이터를 만든다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)            # 헤더 제거

max_temp_list =[]     # 최고 기온 데이터를 저장하기 위해 미리 빈 리스트 생성

for row in data:
  # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
  if row[-1] != '':
    # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장
    max_temp_list.append(float(row[-1]))

f.close()

print(max_temp_list)
print( len(max_temp_list) )
  1. 데이터 시각화
import matplotlib.pyplot as plt
plt.plot(max_temp_list, 'r')
plt.show()
  1. 날짜 데이터 추출하기

‘서울.csv’파일에서 구한 데이터는 아래와 같은 형태의 데이터이다.

['\\t2009-06-14', '108', '20.2', '18.2', '23.8']

위 리스트에서 날짜에 해당하는 정보는 첫 번쨰 요소로 단순 문자열로 기록되어 있다.

'\\t2009-06-14'

여기서 연, 월, 일 정보를 추출한다고 하자.

먼저 replace() 함수를 사용하여 \t를 제거한다.

date = '\\t2009-06-14'
date = date.replace('\\t', '')
print(date)

그리고 ‘2009-06-14’의 문자열은 split()함수를 이용하여 연, 월, 일을 분리한다.

ymd = date.split('-')
print(ymd)
=> ['2009', '06', '14']
print(ymd[0])   # 년: year
print(ymd[1])   # 월: month
print(ymd[2])   # 일: day
=>
2009
06
14

1년 중 가장 더운 8월 달의 최고 기온 데이터만 추출하여 그래프로 그린다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)

max_temp_list =[]

for row in data:
  if row[-1] != '':                         # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
    if row[0].split('-')[1] == '08':          # ['\\t2009-06-14', '108', '20.2', '18.2', '23.8']
      max_temp_list.append(float(row[-1]))    # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장

f.close()

plt.figure(figsize=(16, 4))
plt.plot(max_temp_list, 'r')
plt.show()
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)
max_temp_list =[]

for row in data:
  if row[-1] != '':                                                             # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
    if row[0].split('-')[1] == '01' and row[0].split('-')[2] =='24':
      max_temp_list.append(float(row[-1]))                                      # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장

f.close()

plt.figure(figsize=(16, 4))
plt.plot(max_temp_list, 'b.-')
plt.title('max. temp of January 24 every year')
plt.ylabel('temp')
plt.grid()
plt.show()
import csv
import matplotlib.pyplot as plt

f = open('서울.csv', 'r', encoding='cp949')
data = csv.reader(f)

next(data)
high = []
low = []
year =[]

for row in data :
    if row[-1] != '' and row[-2] != '':
        if 1981 <= int(row[0].split('-')[0]) : 
                if row[0].split('-')[1] == '09' and row[0].split('-')[2] == '30':
                    high.append(float(row[-1]))
                    low.append(float(row[-2]))
                    year.append(int(row[0].split('-')[0]))

plt.rc('font', family='NanumBarunGothic') 
plt.title('달빛샘 생일의 기온 변화 그래프(9월 30일)')    

plt.plot(year, high, 'r', label='최고')
plt.plot(year, low, 'b', label='최저')
plt.legend()

plt.show()

모두의 데이터분석 with 파이썬

(실생활 예제로 시작하는 데이터 분석 첫걸음)

바닷가 출신이지만, 몇 가지 생선만 골라서 먹는 사람이 있다.

밥상에 생선을 잘 올리지 않는다.

술안주로 회보단 육류를 생각하는 사람들이 많다.

대부분, 굶주리면 먹게 된다.

안동과 서울은 내륙이다.

서울 횟집 매운탕은 C급이다.

모든 음식의 1순위는 ‘산도(신선도)’이다.

C급은 양념으로 어느정도 먹을 수 있는 정도.

신 김치와 썩은 김치는 구분이 된다.

육류: 돼지, 소, 닭, 오리


기상 자료 개방 포털 (https://data.kma.go.kr)

아래한글로 작성된 문서를 메모장으로 열어보면,

자기만의 방식으로 저장된 것을 확인할 수 있다.

어떤 자료를 넘기면, 각자 자기만의 방식으로 저장하게 된다.

→ 데이터에선, 아스키 코드로 본다. (아스키 파일)

CSV파일은 기본값 ‘,’로 구분하여 저장하게 된다.

Excel 프로그램이 인식할 수 있음

데이터 분석을 할 때, 통계 자료를 제공하는 사이트를 뒤져서 특정 자료로 접근하는 것이 수월할 것이다.


  • csv 파일 열어보기
import csv

f = open('서울.csv', 'r')
data = csv.reader(f)
print(data)
f.close()
  • 1번 라인, import csv는 csv 모듈을 불러옴

각 행의 데이터가 대괄호([])로 둘러쌓임: 리스트

각 행, 리스트 데이터의 각 요소가 작은 따옴표(’ ‘)로 둘러쌓임: 문자열

누락된 데이터를 확인하기는 어렵다.


가장 쉬운 것: 제외하기

  • 헤더 확인하기

: next( )함수는 data의 한 행 데이터를 반환 후 data에서 그 행을 삭제

  • 이터러블한 데이터 중에서 next( )함수로 차례 차례 요소를 꺼낼 수 있는 것을 ‘이터레이터’라고 함
  • 리스트, 딕셔너리, 문자열, 튜플 등은 모두 ‘이터러블’(요소를 차례 차례 하나씩 꺼낼 수 있는)하다고 함.
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)

# 첫번째 행을 읽어와서 header에 할당
header = next(data)
print(header)

# 그 다음 행을 읽어와서 first_row에 할당
first_row = next(data)
print(first_row)
f.close()

데이터에서 어떤 정보를 추출해 낼 수 있는가?

→ 어떤 의미있는 정보를 자료로부터 끄집어내기 위해서

  • 언제 가장 더웠고, 얼마나 더웠을까?
  • 일교차가 가장 큰 날은 1년 중 언제였을까?

#사람마다 더위를 느끼는 정도가 다르다.

어떤 사람은 습도가 높을수록, 어떤 사람은 온도가 높을수록 덥다고 느낄 수 있다.

→ 가장 더웠던 날은 언제이고, 얼마나 더웠을까? 라는 질문을 다듬어서

기온, 습도, 풍속 등 정확한 정보로 언급하는 것이 신뢰성이 있다.

⇒ 기상 관측 이래, 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

  • 일별로 기록된 최고기온 중, 가장 높은 값은 얼마인가?

파이썬 코드 작성 - 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
header = next(data)    # header 제거
max_temp = -999
max_Data = ''

for row in data:
  # 최고 기온 정보는 행(리스트)의 맨 마지막 요소
  if row[-1] == '':        # 맨 마지막 요소가 누락되었다면
    row[-1] = -1000        # 존재할 수 없는 최고 기온. 
  else:
    row[-1] = float(row[-1])
  if max_temp < row[-1]:
    max_temp = row[-1]
    max_date = row[0]

f.close()
print("서울의 최고 기온이 가장 높았던 날은"\\ + max_data +"일이며 "+ str(max_temp) +"도였습니다.")

혼자 공부하는 파이썬

모두의 데이터분석 with 파이썬

이것이 MySQL이다.

혼자 공부하는 자바 스크립트

  • 기온 공공 데이터에 질문하기 - 데이터에서 원하는 정보를 얻기

파이썬 코드 작성 - 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

‘data’의 각 행은 리스트 형이었음

date_list → 날짜를 요소로 하는 리스트

온도만 들어있는 리스트를 뽑고, 데이터만 들어있는 리스트를 뽑으면 된다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
header = next(data)       # header 제거
max_temp = -999
max_data = ''
for row in data:
  #최고 기온 정보는 행(리스트)의 맨 마지막 요소.
  if row[-1] == '':           # 맨 마지막 요소가 누락되었다면
    row[-1] = -1000           # 존재 할 수 없는 최고 기온.
  else:
    row[-1] = float(row[-1])    # 문자열 형 -> 숫자형으로 변환
  if max_temp < row[-1]:
    max_temp = row[-1]
    max_date = row[0]
f.close()
print("서울의 최고 기온이 가장 높았던 날은 "\\
      + max_date +"일이며 "+ str(max_temp) +"도였습니다.")

학연, 지연, 혈연은 중요치 않지만, 이유모르게 더 친근한 느낌이 드는 이유이기도 하다.

뭔가 의미있는 정보를 만들어내려고 하는 것이다.

최고 온도가 얼마이고 몇 도인지 궁금하다면 필요한 정보를 뽑아내야 한다.

공부하고 있는 아버지

→ 아들이 자연스럽게 책을 보는 것이 문화가 된다고 생각한다.

연합고사라 불리는 고등학교 시험이 있다.

서울에서 떨어진 곳에 있는 형, 누나들이 같이 살았다.

중학교 3학년 때 도서관에 앉아있는 것이 삶의 일부가 되었다.

→ 자연스럽게 나의 삶이 변하게 된다.

내 삶의 방식을 은연중에 보고 배운다.

→ 자연스럽게 보고 배울 것이다.

어떤 일을 스스로 할 수 있게 되기까지 10년은 걸린다.

아직 20살 넘어서 10년이 되지 않았다.

가르치는 입장, 구직하는 입장에서 보면

시간이 필요하다. → 이 시간을 줄일려고 노력하는 것이다.

  • 공통의 목적: 주어진 기간안에 큰 성장을 이루길 바란다.

둘째 마당- 데이터 시각화 기초

  • 기본 그래프 그리기

matplotlib 라이브러리란?

기본 그래프 그리기

import matplotlib.pyplot as plt
plt.plot([10, 20, 30, 40])         # y-축 데이터만 전달 했음.
plt.show()
import matplotlib.pyplot as plt
# x-축 데이터와 y-축 데이터 모두 전달
# x-축 데이터 개수와 y-축 데이터 개수 일치
plt.plot([1, 2, 3, 4], [10, 20, 30, 40])
plt.show()
  • 앞 페이지의 그래프와 비교할 것

  • numpy 모듈은 python으로 수학 계산을 고속으로 처리하기 위해 만들어졌다.
import numpy as np

x = np.arange(5)
print(x)
print(type(x))
=>
[0 1 2 3 4]
<class 'numpy.ndarray'>
x = range(5)
print(x)
print(list(x))
print(type(x))
=>
range(0, 5)
[0, 1, 2, 3, 4]
<class 'range'>
x = np.arange(1, 5)
print('x:', x)
print('2*x:', 2*x)
print('2*x+1:', 2*x+1)
=>
x: [1 2 3 4]
2*x: [2 4 6 8]
2*x+1: [3 5 7 9]

import numpy as np

x = np.arange(1, 5)
y = 2*x + 1
plt.plot(x, y, 'bo--')
plt.show()
  • 그래프에 옵션 추가하기
  1. 그래프에 제목 넣기
x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--')
plt.title('My Income')
plt.show()
x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--')

plt.title('My Income')
plt.xlabel('year')
plt.ylabel('$')
plt.show()

N개의 그래프를 하나의 그림(figure)에 넣기

x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo-')
plt.plot(x,y2,'rs:')
plt.title('title')
plt.show()

그래프에 범례 넣기

x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--', label='me')
plt.legend()
plt.show()
x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo--', label='me')
plt.plot(x,y2,'rs--', label='you')
plt.title('title')
plt.legend()
plt.show()
  • 웃자고 하는 소리 -

나는 한결 같이 꾸준히 노력했다. 비록 초기값이 너 보자 작지만 ...

너도 한결 같이 꾸준히 노력했다. 초기값이 나보다 높은 곳에서 시작하였하여

한 동안 나보다 큰 값을 가졌지만

너가 방황하는 동안 나는 늘 한결 같이 노력했다.

웃자고 하는 소리였습니다.

거렇다고 파란선이 승자냐? 그건 아니죠. x 축의 값이 4.0을 지나면서 또 어떤 일이 생길지 모릅니다. ㅎㅎㅎㅎ


x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo--', label='me')
plt.plot(x,y2,'rs--', label='you')
plt.title('title')
plt.legend(loc=4)
plt.show()

지구 평균 기온 상승을 그래프로 보이고 싶다.

왜 보이고 싶은가? 보이고 싶은 목적이란 무엇인가?

온도가 많이 상승한다고 하면, 이런 그래프를 보여주고 싶다.

평균기온이 상승한다고 하면, 그래프를 보고 설득시켜야 한다.

→ 내 말을 설득시키기 위해서

1908년 1년 평균치 온도부터 2023년 평균온도까지

여름 평균, 겨울 평균, 연평균을 모두 그린 다음,

내가 말하고자 하는 내용을 잘 나타내는 것을 보여주면 된다.

낚시를 한창 다니던 시절

옛날에는 한강이 얼었다.

서울 살아보면, 한강이 어는 일은 매우 드문 일이다.

내가 표현하고 싶은 것을 데이터에서 어떻게 보여줄것인가

  1. 데이터 읽어 오기
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)           # 헤더 제거

for row in data:
  print(row[-1])      # 최고 기온값만 출력

f.close()
  1. 데이터를 리스트에 저장하기

: 누락 데이터를 제외하고 최고 기온 값만 추출하여 리스트 형 데이터를 만든다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)            # 헤더 제거

max_temp_list =[]     # 최고 기온 데이터를 저장하기 위해 미리 빈 리스트 생성

for row in data:
  # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
  if row[-1] != '':
    # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장
    max_temp_list.append(float(row[-1]))

f.close()

print(max_temp_list)
print( len(max_temp_list) )
  1. 데이터 시각화
import matplotlib.pyplot as plt
plt.plot(max_temp_list, 'r')
plt.show()
  1. 날짜 데이터 추출하기

‘서울.csv’파일에서 구한 데이터는 아래와 같은 형태의 데이터이다.

['\\t2009-06-14', '108', '20.2', '18.2', '23.8']

위 리스트에서 날짜에 해당하는 정보는 첫 번쨰 요소로 단순 문자열로 기록되어 있다.

'\\t2009-06-14'

여기서 연, 월, 일 정보를 추출한다고 하자.

먼저 replace() 함수를 사용하여 \t를 제거한다.

date = '\\t2009-06-14'
date = date.replace('\\t', '')
print(date)

그리고 ‘2009-06-14’의 문자열은 split()함수를 이용하여 연, 월, 일을 분리한다.

ymd = date.split('-')
print(ymd)
=> ['2009', '06', '14']
print(ymd[0])   # 년: year
print(ymd[1])   # 월: month
print(ymd[2])   # 일: day
=>
2009
06
14

1년 중 가장 더운 8월 달의 최고 기온 데이터만 추출하여 그래프로 그린다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)

max_temp_list =[]

for row in data:
  if row[-1] != '':                         # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
    if row[0].split('-')[1] == '08':          # ['\\t2009-06-14', '108', '20.2', '18.2', '23.8']
      max_temp_list.append(float(row[-1]))    # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장

f.close()

plt.figure(figsize=(16, 4))
plt.plot(max_temp_list, 'r')
plt.show()
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)
max_temp_list =[]

for row in data:
  if row[-1] != '':                                                             # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
    if row[0].split('-')[1] == '01' and row[0].split('-')[2] =='24':
      max_temp_list.append(float(row[-1]))                                      # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장

f.close()

plt.figure(figsize=(16, 4))
plt.plot(max_temp_list, 'b.-')
plt.title('max. temp of January 24 every year')
plt.ylabel('temp')
plt.grid()
plt.show()
import csv
import matplotlib.pyplot as plt

f = open('서울.csv', 'r', encoding='cp949')
data = csv.reader(f)

next(data)
high = []
low = []
year =[]

for row in data :
    if row[-1] != '' and row[-2] != '':
        if 1981 <= int(row[0].split('-')[0]) : 
                if row[0].split('-')[1] == '09' and row[0].split('-')[2] == '30':
                    high.append(float(row[-1]))
                    low.append(float(row[-2]))
                    year.append(int(row[0].split('-')[0]))

plt.rc('font', family='NanumBarunGothic') 
plt.title('달빛샘 생일의 기온 변화 그래프(9월 30일)')    

plt.plot(year, high, 'r', label='최고')
plt.plot(year, low, 'b', label='최저')
plt.legend()

plt.show()

모두의 데이터분석 with 파이썬

(실생활 예제로 시작하는 데이터 분석 첫걸음)

바닷가 출신이지만, 몇 가지 생선만 골라서 먹는 사람이 있다.

밥상에 생선을 잘 올리지 않는다.

술안주로 회보단 육류를 생각하는 사람들이 많다.

대부분, 굶주리면 먹게 된다.

안동과 서울은 내륙이다.

서울 횟집 매운탕은 C급이다.

모든 음식의 1순위는 ‘산도(신선도)’이다.

C급은 양념으로 어느정도 먹을 수 있는 정도.

신 김치와 썩은 김치는 구분이 된다.

육류: 돼지, 소, 닭, 오리


기상 자료 개방 포털 (https://data.kma.go.kr)

아래한글로 작성된 문서를 메모장으로 열어보면,

자기만의 방식으로 저장된 것을 확인할 수 있다.

어떤 자료를 넘기면, 각자 자기만의 방식으로 저장하게 된다.

→ 데이터에선, 아스키 코드로 본다. (아스키 파일)

CSV파일은 기본값 ‘,’로 구분하여 저장하게 된다.

Excel 프로그램이 인식할 수 있음

데이터 분석을 할 때, 통계 자료를 제공하는 사이트를 뒤져서 특정 자료로 접근하는 것이 수월할 것이다.


  • csv 파일 열어보기
import csv

f = open('서울.csv', 'r')
data = csv.reader(f)
print(data)
f.close()
  • 1번 라인, import csv는 csv 모듈을 불러옴

각 행의 데이터가 대괄호([])로 둘러쌓임: 리스트

각 행, 리스트 데이터의 각 요소가 작은 따옴표(’ ‘)로 둘러쌓임: 문자열

누락된 데이터를 확인하기는 어렵다.


가장 쉬운 것: 제외하기

  • 헤더 확인하기

: next( )함수는 data의 한 행 데이터를 반환 후 data에서 그 행을 삭제

  • 이터러블한 데이터 중에서 next( )함수로 차례 차례 요소를 꺼낼 수 있는 것을 ‘이터레이터’라고 함
  • 리스트, 딕셔너리, 문자열, 튜플 등은 모두 ‘이터러블’(요소를 차례 차례 하나씩 꺼낼 수 있는)하다고 함.
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)

# 첫번째 행을 읽어와서 header에 할당
header = next(data)
print(header)

# 그 다음 행을 읽어와서 first_row에 할당
first_row = next(data)
print(first_row)
f.close()

데이터에서 어떤 정보를 추출해 낼 수 있는가?

→ 어떤 의미있는 정보를 자료로부터 끄집어내기 위해서

  • 언제 가장 더웠고, 얼마나 더웠을까?
  • 일교차가 가장 큰 날은 1년 중 언제였을까?

#사람마다 더위를 느끼는 정도가 다르다.

어떤 사람은 습도가 높을수록, 어떤 사람은 온도가 높을수록 덥다고 느낄 수 있다.

→ 가장 더웠던 날은 언제이고, 얼마나 더웠을까? 라는 질문을 다듬어서

기온, 습도, 풍속 등 정확한 정보로 언급하는 것이 신뢰성이 있다.

⇒ 기상 관측 이래, 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

  • 일별로 기록된 최고기온 중, 가장 높은 값은 얼마인가?

파이썬 코드 작성 - 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
header = next(data)    # header 제거
max_temp = -999
max_Data = ''

for row in data:
  # 최고 기온 정보는 행(리스트)의 맨 마지막 요소
  if row[-1] == '':        # 맨 마지막 요소가 누락되었다면
    row[-1] = -1000        # 존재할 수 없는 최고 기온. 
  else:
    row[-1] = float(row[-1])
  if max_temp < row[-1]:
    max_temp = row[-1]
    max_date = row[0]

f.close()
print("서울의 최고 기온이 가장 높았던 날은"\\ + max_data +"일이며 "+ str(max_temp) +"도였습니다.")

혼자 공부하는 파이썬

모두의 데이터분석 with 파이썬

이것이 MySQL이다.

혼자 공부하는 자바 스크립트

  • 기온 공공 데이터에 질문하기 - 데이터에서 원하는 정보를 얻기

파이썬 코드 작성 - 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

‘data’의 각 행은 리스트 형이었음

date_list → 날짜를 요소로 하는 리스트

온도만 들어있는 리스트를 뽑고, 데이터만 들어있는 리스트를 뽑으면 된다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
header = next(data)       # header 제거
max_temp = -999
max_data = ''
for row in data:
  #최고 기온 정보는 행(리스트)의 맨 마지막 요소.
  if row[-1] == '':           # 맨 마지막 요소가 누락되었다면
    row[-1] = -1000           # 존재 할 수 없는 최고 기온.
  else:
    row[-1] = float(row[-1])    # 문자열 형 -> 숫자형으로 변환
  if max_temp < row[-1]:
    max_temp = row[-1]
    max_date = row[0]
f.close()
print("서울의 최고 기온이 가장 높았던 날은 "\\
      + max_date +"일이며 "+ str(max_temp) +"도였습니다.")

학연, 지연, 혈연은 중요치 않지만, 이유모르게 더 친근한 느낌이 드는 이유이기도 하다.

뭔가 의미있는 정보를 만들어내려고 하는 것이다.

최고 온도가 얼마이고 몇 도인지 궁금하다면 필요한 정보를 뽑아내야 한다.

공부하고 있는 아버지

→ 아들이 자연스럽게 책을 보는 것이 문화가 된다고 생각한다.

연합고사라 불리는 고등학교 시험이 있다.

서울에서 떨어진 곳에 있는 형, 누나들이 같이 살았다.

중학교 3학년 때 도서관에 앉아있는 것이 삶의 일부가 되었다.

→ 자연스럽게 나의 삶이 변하게 된다.

내 삶의 방식을 은연중에 보고 배운다.

→ 자연스럽게 보고 배울 것이다.

어떤 일을 스스로 할 수 있게 되기까지 10년은 걸린다.

아직 20살 넘어서 10년이 되지 않았다.

가르치는 입장, 구직하는 입장에서 보면

시간이 필요하다. → 이 시간을 줄일려고 노력하는 것이다.

  • 공통의 목적: 주어진 기간안에 큰 성장을 이루길 바란다.

둘째 마당- 데이터 시각화 기초

  • 기본 그래프 그리기

matplotlib 라이브러리란?

기본 그래프 그리기

import matplotlib.pyplot as plt
plt.plot([10, 20, 30, 40])         # y-축 데이터만 전달 했음.
plt.show()
import matplotlib.pyplot as plt
# x-축 데이터와 y-축 데이터 모두 전달
# x-축 데이터 개수와 y-축 데이터 개수 일치
plt.plot([1, 2, 3, 4], [10, 20, 30, 40])
plt.show()
  • 앞 페이지의 그래프와 비교할 것

  • numpy 모듈은 python으로 수학 계산을 고속으로 처리하기 위해 만들어졌다.
import numpy as np

x = np.arange(5)
print(x)
print(type(x))
=>
[0 1 2 3 4]
<class 'numpy.ndarray'>
x = range(5)
print(x)
print(list(x))
print(type(x))
=>
range(0, 5)
[0, 1, 2, 3, 4]
<class 'range'>
x = np.arange(1, 5)
print('x:', x)
print('2*x:', 2*x)
print('2*x+1:', 2*x+1)
=>
x: [1 2 3 4]
2*x: [2 4 6 8]
2*x+1: [3 5 7 9]

import numpy as np

x = np.arange(1, 5)
y = 2*x + 1
plt.plot(x, y, 'bo--')
plt.show()
  • 그래프에 옵션 추가하기
  1. 그래프에 제목 넣기
x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--')
plt.title('My Income')
plt.show()
x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--')

plt.title('My Income')
plt.xlabel('year')
plt.ylabel('$')
plt.show()

N개의 그래프를 하나의 그림(figure)에 넣기

x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo-')
plt.plot(x,y2,'rs:')
plt.title('title')
plt.show()

그래프에 범례 넣기

x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--', label='me')
plt.legend()
plt.show()
x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo--', label='me')
plt.plot(x,y2,'rs--', label='you')
plt.title('title')
plt.legend()
plt.show()
  • 웃자고 하는 소리 -

나는 한결 같이 꾸준히 노력했다. 비록 초기값이 너 보자 작지만 ...

너도 한결 같이 꾸준히 노력했다. 초기값이 나보다 높은 곳에서 시작하였하여

한 동안 나보다 큰 값을 가졌지만

너가 방황하는 동안 나는 늘 한결 같이 노력했다.

웃자고 하는 소리였습니다.

거렇다고 파란선이 승자냐? 그건 아니죠. x 축의 값이 4.0을 지나면서 또 어떤 일이 생길지 모릅니다. ㅎㅎㅎㅎ


x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo--', label='me')
plt.plot(x,y2,'rs--', label='you')
plt.title('title')
plt.legend(loc=4)
plt.show()

지구 평균 기온 상승을 그래프로 보이고 싶다.

왜 보이고 싶은가? 보이고 싶은 목적이란 무엇인가?

온도가 많이 상승한다고 하면, 이런 그래프를 보여주고 싶다.

평균기온이 상승한다고 하면, 그래프를 보고 설득시켜야 한다.

→ 내 말을 설득시키기 위해서

1908년 1년 평균치 온도부터 2023년 평균온도까지

여름 평균, 겨울 평균, 연평균을 모두 그린 다음,

내가 말하고자 하는 내용을 잘 나타내는 것을 보여주면 된다.

낚시를 한창 다니던 시절

옛날에는 한강이 얼었다.

서울 살아보면, 한강이 어는 일은 매우 드문 일이다.

내가 표현하고 싶은 것을 데이터에서 어떻게 보여줄것인가

  1. 데이터 읽어 오기
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)           # 헤더 제거

for row in data:
  print(row[-1])      # 최고 기온값만 출력

f.close()
  1. 데이터를 리스트에 저장하기

: 누락 데이터를 제외하고 최고 기온 값만 추출하여 리스트 형 데이터를 만든다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)            # 헤더 제거

max_temp_list =[]     # 최고 기온 데이터를 저장하기 위해 미리 빈 리스트 생성

for row in data:
  # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
  if row[-1] != '':
    # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장
    max_temp_list.append(float(row[-1]))

f.close()

print(max_temp_list)
print( len(max_temp_list) )
  1. 데이터 시각화
import matplotlib.pyplot as plt
plt.plot(max_temp_list, 'r')
plt.show()
  1. 날짜 데이터 추출하기

‘서울.csv’파일에서 구한 데이터는 아래와 같은 형태의 데이터이다.

['\\t2009-06-14', '108', '20.2', '18.2', '23.8']

위 리스트에서 날짜에 해당하는 정보는 첫 번쨰 요소로 단순 문자열로 기록되어 있다.

'\\t2009-06-14'

여기서 연, 월, 일 정보를 추출한다고 하자.

먼저 replace() 함수를 사용하여 \t를 제거한다.

date = '\\t2009-06-14'
date = date.replace('\\t', '')
print(date)

그리고 ‘2009-06-14’의 문자열은 split()함수를 이용하여 연, 월, 일을 분리한다.

ymd = date.split('-')
print(ymd)
=> ['2009', '06', '14']
print(ymd[0])   # 년: year
print(ymd[1])   # 월: month
print(ymd[2])   # 일: day
=>
2009
06
14

1년 중 가장 더운 8월 달의 최고 기온 데이터만 추출하여 그래프로 그린다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)

max_temp_list =[]

for row in data:
  if row[-1] != '':                         # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
    if row[0].split('-')[1] == '08':          # ['\\t2009-06-14', '108', '20.2', '18.2', '23.8']
      max_temp_list.append(float(row[-1]))    # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장

f.close()

plt.figure(figsize=(16, 4))
plt.plot(max_temp_list, 'r')
plt.show()
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)
max_temp_list =[]

for row in data:
  if row[-1] != '':                                                             # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
    if row[0].split('-')[1] == '01' and row[0].split('-')[2] =='24':
      max_temp_list.append(float(row[-1]))                                      # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장

f.close()

plt.figure(figsize=(16, 4))
plt.plot(max_temp_list, 'b.-')
plt.title('max. temp of January 24 every year')
plt.ylabel('temp')
plt.grid()
plt.show()
import csv
import matplotlib.pyplot as plt

f = open('서울.csv', 'r', encoding='cp949')
data = csv.reader(f)

next(data)
high = []
low = []
year =[]

for row in data :
    if row[-1] != '' and row[-2] != '':
        if 1981 <= int(row[0].split('-')[0]) : 
                if row[0].split('-')[1] == '09' and row[0].split('-')[2] == '30':
                    high.append(float(row[-1]))
                    low.append(float(row[-2]))
                    year.append(int(row[0].split('-')[0]))

plt.rc('font', family='NanumBarunGothic') 
plt.title('달빛샘 생일의 기온 변화 그래프(9월 30일)')    

plt.plot(year, high, 'r', label='최고')
plt.plot(year, low, 'b', label='최저')
plt.legend()

plt.show()

모두의 데이터분석 with 파이썬

(실생활 예제로 시작하는 데이터 분석 첫걸음)

바닷가 출신이지만, 몇 가지 생선만 골라서 먹는 사람이 있다.

밥상에 생선을 잘 올리지 않는다.

술안주로 회보단 육류를 생각하는 사람들이 많다.

대부분, 굶주리면 먹게 된다.

안동과 서울은 내륙이다.

서울 횟집 매운탕은 C급이다.

모든 음식의 1순위는 ‘산도(신선도)’이다.

C급은 양념으로 어느정도 먹을 수 있는 정도.

신 김치와 썩은 김치는 구분이 된다.

육류: 돼지, 소, 닭, 오리


기상 자료 개방 포털 (https://data.kma.go.kr)

아래한글로 작성된 문서를 메모장으로 열어보면,

자기만의 방식으로 저장된 것을 확인할 수 있다.

어떤 자료를 넘기면, 각자 자기만의 방식으로 저장하게 된다.

→ 데이터에선, 아스키 코드로 본다. (아스키 파일)

CSV파일은 기본값 ‘,’로 구분하여 저장하게 된다.

Excel 프로그램이 인식할 수 있음

데이터 분석을 할 때, 통계 자료를 제공하는 사이트를 뒤져서 특정 자료로 접근하는 것이 수월할 것이다.


  • csv 파일 열어보기
import csv

f = open('서울.csv', 'r')
data = csv.reader(f)
print(data)
f.close()
  • 1번 라인, import csv는 csv 모듈을 불러옴

각 행의 데이터가 대괄호([])로 둘러쌓임: 리스트

각 행, 리스트 데이터의 각 요소가 작은 따옴표(’ ‘)로 둘러쌓임: 문자열

누락된 데이터를 확인하기는 어렵다.


가장 쉬운 것: 제외하기

  • 헤더 확인하기

: next( )함수는 data의 한 행 데이터를 반환 후 data에서 그 행을 삭제

  • 이터러블한 데이터 중에서 next( )함수로 차례 차례 요소를 꺼낼 수 있는 것을 ‘이터레이터’라고 함
  • 리스트, 딕셔너리, 문자열, 튜플 등은 모두 ‘이터러블’(요소를 차례 차례 하나씩 꺼낼 수 있는)하다고 함.
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)

# 첫번째 행을 읽어와서 header에 할당
header = next(data)
print(header)

# 그 다음 행을 읽어와서 first_row에 할당
first_row = next(data)
print(first_row)
f.close()

데이터에서 어떤 정보를 추출해 낼 수 있는가?

→ 어떤 의미있는 정보를 자료로부터 끄집어내기 위해서

  • 언제 가장 더웠고, 얼마나 더웠을까?
  • 일교차가 가장 큰 날은 1년 중 언제였을까?

#사람마다 더위를 느끼는 정도가 다르다.

어떤 사람은 습도가 높을수록, 어떤 사람은 온도가 높을수록 덥다고 느낄 수 있다.

→ 가장 더웠던 날은 언제이고, 얼마나 더웠을까? 라는 질문을 다듬어서

기온, 습도, 풍속 등 정확한 정보로 언급하는 것이 신뢰성이 있다.

⇒ 기상 관측 이래, 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

  • 일별로 기록된 최고기온 중, 가장 높은 값은 얼마인가?

파이썬 코드 작성 - 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
header = next(data)    # header 제거
max_temp = -999
max_Data = ''

for row in data:
  # 최고 기온 정보는 행(리스트)의 맨 마지막 요소
  if row[-1] == '':        # 맨 마지막 요소가 누락되었다면
    row[-1] = -1000        # 존재할 수 없는 최고 기온. 
  else:
    row[-1] = float(row[-1])
  if max_temp < row[-1]:
    max_temp = row[-1]
    max_date = row[0]

f.close()
print("서울의 최고 기온이 가장 높았던 날은"\\ + max_data +"일이며 "+ str(max_temp) +"도였습니다.")

혼자 공부하는 파이썬

모두의 데이터분석 with 파이썬

이것이 MySQL이다.

혼자 공부하는 자바 스크립트

  • 기온 공공 데이터에 질문하기 - 데이터에서 원하는 정보를 얻기

파이썬 코드 작성 - 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

‘data’의 각 행은 리스트 형이었음

date_list → 날짜를 요소로 하는 리스트

온도만 들어있는 리스트를 뽑고, 데이터만 들어있는 리스트를 뽑으면 된다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
header = next(data)       # header 제거
max_temp = -999
max_data = ''
for row in data:
  #최고 기온 정보는 행(리스트)의 맨 마지막 요소.
  if row[-1] == '':           # 맨 마지막 요소가 누락되었다면
    row[-1] = -1000           # 존재 할 수 없는 최고 기온.
  else:
    row[-1] = float(row[-1])    # 문자열 형 -> 숫자형으로 변환
  if max_temp < row[-1]:
    max_temp = row[-1]
    max_date = row[0]
f.close()
print("서울의 최고 기온이 가장 높았던 날은 "\\
      + max_date +"일이며 "+ str(max_temp) +"도였습니다.")

학연, 지연, 혈연은 중요치 않지만, 이유모르게 더 친근한 느낌이 드는 이유이기도 하다.

뭔가 의미있는 정보를 만들어내려고 하는 것이다.

최고 온도가 얼마이고 몇 도인지 궁금하다면 필요한 정보를 뽑아내야 한다.

공부하고 있는 아버지

→ 아들이 자연스럽게 책을 보는 것이 문화가 된다고 생각한다.

연합고사라 불리는 고등학교 시험이 있다.

서울에서 떨어진 곳에 있는 형, 누나들이 같이 살았다.

중학교 3학년 때 도서관에 앉아있는 것이 삶의 일부가 되었다.

→ 자연스럽게 나의 삶이 변하게 된다.

내 삶의 방식을 은연중에 보고 배운다.

→ 자연스럽게 보고 배울 것이다.

어떤 일을 스스로 할 수 있게 되기까지 10년은 걸린다.

아직 20살 넘어서 10년이 되지 않았다.

가르치는 입장, 구직하는 입장에서 보면

시간이 필요하다. → 이 시간을 줄일려고 노력하는 것이다.

  • 공통의 목적: 주어진 기간안에 큰 성장을 이루길 바란다.

둘째 마당- 데이터 시각화 기초

  • 기본 그래프 그리기

matplotlib 라이브러리란?

기본 그래프 그리기

import matplotlib.pyplot as plt
plt.plot([10, 20, 30, 40])         # y-축 데이터만 전달 했음.
plt.show()
import matplotlib.pyplot as plt
# x-축 데이터와 y-축 데이터 모두 전달
# x-축 데이터 개수와 y-축 데이터 개수 일치
plt.plot([1, 2, 3, 4], [10, 20, 30, 40])
plt.show()
  • 앞 페이지의 그래프와 비교할 것

  • numpy 모듈은 python으로 수학 계산을 고속으로 처리하기 위해 만들어졌다.
import numpy as np

x = np.arange(5)
print(x)
print(type(x))
=>
[0 1 2 3 4]
<class 'numpy.ndarray'>
x = range(5)
print(x)
print(list(x))
print(type(x))
=>
range(0, 5)
[0, 1, 2, 3, 4]
<class 'range'>
x = np.arange(1, 5)
print('x:', x)
print('2*x:', 2*x)
print('2*x+1:', 2*x+1)
=>
x: [1 2 3 4]
2*x: [2 4 6 8]
2*x+1: [3 5 7 9]

import numpy as np

x = np.arange(1, 5)
y = 2*x + 1
plt.plot(x, y, 'bo--')
plt.show()
  • 그래프에 옵션 추가하기
  1. 그래프에 제목 넣기
x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--')
plt.title('My Income')
plt.show()
x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--')

plt.title('My Income')
plt.xlabel('year')
plt.ylabel('$')
plt.show()

N개의 그래프를 하나의 그림(figure)에 넣기

x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo-')
plt.plot(x,y2,'rs:')
plt.title('title')
plt.show()

그래프에 범례 넣기

x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--', label='me')
plt.legend()
plt.show()
x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo--', label='me')
plt.plot(x,y2,'rs--', label='you')
plt.title('title')
plt.legend()
plt.show()
  • 웃자고 하는 소리 -

나는 한결 같이 꾸준히 노력했다. 비록 초기값이 너 보자 작지만 ...

너도 한결 같이 꾸준히 노력했다. 초기값이 나보다 높은 곳에서 시작하였하여

한 동안 나보다 큰 값을 가졌지만

너가 방황하는 동안 나는 늘 한결 같이 노력했다.

웃자고 하는 소리였습니다.

거렇다고 파란선이 승자냐? 그건 아니죠. x 축의 값이 4.0을 지나면서 또 어떤 일이 생길지 모릅니다. ㅎㅎㅎㅎ


x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo--', label='me')
plt.plot(x,y2,'rs--', label='you')
plt.title('title')
plt.legend(loc=4)
plt.show()

지구 평균 기온 상승을 그래프로 보이고 싶다.

왜 보이고 싶은가? 보이고 싶은 목적이란 무엇인가?

온도가 많이 상승한다고 하면, 이런 그래프를 보여주고 싶다.

평균기온이 상승한다고 하면, 그래프를 보고 설득시켜야 한다.

→ 내 말을 설득시키기 위해서

1908년 1년 평균치 온도부터 2023년 평균온도까지

여름 평균, 겨울 평균, 연평균을 모두 그린 다음,

내가 말하고자 하는 내용을 잘 나타내는 것을 보여주면 된다.

낚시를 한창 다니던 시절

옛날에는 한강이 얼었다.

서울 살아보면, 한강이 어는 일은 매우 드문 일이다.

내가 표현하고 싶은 것을 데이터에서 어떻게 보여줄것인가

  1. 데이터 읽어 오기
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)           # 헤더 제거

for row in data:
  print(row[-1])      # 최고 기온값만 출력

f.close()
  1. 데이터를 리스트에 저장하기

: 누락 데이터를 제외하고 최고 기온 값만 추출하여 리스트 형 데이터를 만든다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)            # 헤더 제거

max_temp_list =[]     # 최고 기온 데이터를 저장하기 위해 미리 빈 리스트 생성

for row in data:
  # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
  if row[-1] != '':
    # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장
    max_temp_list.append(float(row[-1]))

f.close()

print(max_temp_list)
print( len(max_temp_list) )
  1. 데이터 시각화
import matplotlib.pyplot as plt
plt.plot(max_temp_list, 'r')
plt.show()
  1. 날짜 데이터 추출하기

‘서울.csv’파일에서 구한 데이터는 아래와 같은 형태의 데이터이다.

['\\t2009-06-14', '108', '20.2', '18.2', '23.8']

위 리스트에서 날짜에 해당하는 정보는 첫 번쨰 요소로 단순 문자열로 기록되어 있다.

'\\t2009-06-14'

여기서 연, 월, 일 정보를 추출한다고 하자.

먼저 replace() 함수를 사용하여 \t를 제거한다.

date = '\\t2009-06-14'
date = date.replace('\\t', '')
print(date)

그리고 ‘2009-06-14’의 문자열은 split()함수를 이용하여 연, 월, 일을 분리한다.

ymd = date.split('-')
print(ymd)
=> ['2009', '06', '14']
print(ymd[0])   # 년: year
print(ymd[1])   # 월: month
print(ymd[2])   # 일: day
=>
2009
06
14

1년 중 가장 더운 8월 달의 최고 기온 데이터만 추출하여 그래프로 그린다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)

max_temp_list =[]

for row in data:
  if row[-1] != '':                         # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
    if row[0].split('-')[1] == '08':          # ['\\t2009-06-14', '108', '20.2', '18.2', '23.8']
      max_temp_list.append(float(row[-1]))    # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장

f.close()

plt.figure(figsize=(16, 4))
plt.plot(max_temp_list, 'r')
plt.show()
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)
max_temp_list =[]

for row in data:
  if row[-1] != '':                                                             # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
    if row[0].split('-')[1] == '01' and row[0].split('-')[2] =='24':
      max_temp_list.append(float(row[-1]))                                      # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장

f.close()

plt.figure(figsize=(16, 4))
plt.plot(max_temp_list, 'b.-')
plt.title('max. temp of January 24 every year')
plt.ylabel('temp')
plt.grid()
plt.show()
import csv
import matplotlib.pyplot as plt

f = open('서울.csv', 'r', encoding='cp949')
data = csv.reader(f)

next(data)
high = []
low = []
year =[]

for row in data :
    if row[-1] != '' and row[-2] != '':
        if 1981 <= int(row[0].split('-')[0]) : 
                if row[0].split('-')[1] == '09' and row[0].split('-')[2] == '30':
                    high.append(float(row[-1]))
                    low.append(float(row[-2]))
                    year.append(int(row[0].split('-')[0]))

plt.rc('font', family='NanumBarunGothic') 
plt.title('달빛샘 생일의 기온 변화 그래프(9월 30일)')    

plt.plot(year, high, 'r', label='최고')
plt.plot(year, low, 'b', label='최저')
plt.legend()

plt.show()

모두의 데이터분석 with 파이썬

(실생활 예제로 시작하는 데이터 분석 첫걸음)

바닷가 출신이지만, 몇 가지 생선만 골라서 먹는 사람이 있다.

밥상에 생선을 잘 올리지 않는다.

술안주로 회보단 육류를 생각하는 사람들이 많다.

대부분, 굶주리면 먹게 된다.

안동과 서울은 내륙이다.

서울 횟집 매운탕은 C급이다.

모든 음식의 1순위는 ‘산도(신선도)’이다.

C급은 양념으로 어느정도 먹을 수 있는 정도.

신 김치와 썩은 김치는 구분이 된다.

육류: 돼지, 소, 닭, 오리


기상 자료 개방 포털 (https://data.kma.go.kr)

아래한글로 작성된 문서를 메모장으로 열어보면,

자기만의 방식으로 저장된 것을 확인할 수 있다.

어떤 자료를 넘기면, 각자 자기만의 방식으로 저장하게 된다.

→ 데이터에선, 아스키 코드로 본다. (아스키 파일)

CSV파일은 기본값 ‘,’로 구분하여 저장하게 된다.

Excel 프로그램이 인식할 수 있음

데이터 분석을 할 때, 통계 자료를 제공하는 사이트를 뒤져서 특정 자료로 접근하는 것이 수월할 것이다.


  • csv 파일 열어보기
import csv

f = open('서울.csv', 'r')
data = csv.reader(f)
print(data)
f.close()
  • 1번 라인, import csv는 csv 모듈을 불러옴

각 행의 데이터가 대괄호([])로 둘러쌓임: 리스트

각 행, 리스트 데이터의 각 요소가 작은 따옴표(’ ‘)로 둘러쌓임: 문자열

누락된 데이터를 확인하기는 어렵다.


가장 쉬운 것: 제외하기

  • 헤더 확인하기

: next( )함수는 data의 한 행 데이터를 반환 후 data에서 그 행을 삭제

  • 이터러블한 데이터 중에서 next( )함수로 차례 차례 요소를 꺼낼 수 있는 것을 ‘이터레이터’라고 함
  • 리스트, 딕셔너리, 문자열, 튜플 등은 모두 ‘이터러블’(요소를 차례 차례 하나씩 꺼낼 수 있는)하다고 함.
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)

# 첫번째 행을 읽어와서 header에 할당
header = next(data)
print(header)

# 그 다음 행을 읽어와서 first_row에 할당
first_row = next(data)
print(first_row)
f.close()

데이터에서 어떤 정보를 추출해 낼 수 있는가?

→ 어떤 의미있는 정보를 자료로부터 끄집어내기 위해서

  • 언제 가장 더웠고, 얼마나 더웠을까?
  • 일교차가 가장 큰 날은 1년 중 언제였을까?

#사람마다 더위를 느끼는 정도가 다르다.

어떤 사람은 습도가 높을수록, 어떤 사람은 온도가 높을수록 덥다고 느낄 수 있다.

→ 가장 더웠던 날은 언제이고, 얼마나 더웠을까? 라는 질문을 다듬어서

기온, 습도, 풍속 등 정확한 정보로 언급하는 것이 신뢰성이 있다.

⇒ 기상 관측 이래, 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

  • 일별로 기록된 최고기온 중, 가장 높은 값은 얼마인가?

파이썬 코드 작성 - 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
header = next(data)    # header 제거
max_temp = -999
max_Data = ''

for row in data:
  # 최고 기온 정보는 행(리스트)의 맨 마지막 요소
  if row[-1] == '':        # 맨 마지막 요소가 누락되었다면
    row[-1] = -1000        # 존재할 수 없는 최고 기온. 
  else:
    row[-1] = float(row[-1])
  if max_temp < row[-1]:
    max_temp = row[-1]
    max_date = row[0]

f.close()
print("서울의 최고 기온이 가장 높았던 날은"\\ + max_data +"일이며 "+ str(max_temp) +"도였습니다.")

혼자 공부하는 파이썬

모두의 데이터분석 with 파이썬

이것이 MySQL이다.

혼자 공부하는 자바 스크립트

  • 기온 공공 데이터에 질문하기 - 데이터에서 원하는 정보를 얻기

파이썬 코드 작성 - 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

‘data’의 각 행은 리스트 형이었음

date_list → 날짜를 요소로 하는 리스트

온도만 들어있는 리스트를 뽑고, 데이터만 들어있는 리스트를 뽑으면 된다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
header = next(data)       # header 제거
max_temp = -999
max_data = ''
for row in data:
  #최고 기온 정보는 행(리스트)의 맨 마지막 요소.
  if row[-1] == '':           # 맨 마지막 요소가 누락되었다면
    row[-1] = -1000           # 존재 할 수 없는 최고 기온.
  else:
    row[-1] = float(row[-1])    # 문자열 형 -> 숫자형으로 변환
  if max_temp < row[-1]:
    max_temp = row[-1]
    max_date = row[0]
f.close()
print("서울의 최고 기온이 가장 높았던 날은 "\\
      + max_date +"일이며 "+ str(max_temp) +"도였습니다.")

학연, 지연, 혈연은 중요치 않지만, 이유모르게 더 친근한 느낌이 드는 이유이기도 하다.

뭔가 의미있는 정보를 만들어내려고 하는 것이다.

최고 온도가 얼마이고 몇 도인지 궁금하다면 필요한 정보를 뽑아내야 한다.

공부하고 있는 아버지

→ 아들이 자연스럽게 책을 보는 것이 문화가 된다고 생각한다.

연합고사라 불리는 고등학교 시험이 있다.

서울에서 떨어진 곳에 있는 형, 누나들이 같이 살았다.

중학교 3학년 때 도서관에 앉아있는 것이 삶의 일부가 되었다.

→ 자연스럽게 나의 삶이 변하게 된다.

내 삶의 방식을 은연중에 보고 배운다.

→ 자연스럽게 보고 배울 것이다.

어떤 일을 스스로 할 수 있게 되기까지 10년은 걸린다.

아직 20살 넘어서 10년이 되지 않았다.

가르치는 입장, 구직하는 입장에서 보면

시간이 필요하다. → 이 시간을 줄일려고 노력하는 것이다.

  • 공통의 목적: 주어진 기간안에 큰 성장을 이루길 바란다.

둘째 마당- 데이터 시각화 기초

  • 기본 그래프 그리기

matplotlib 라이브러리란?

기본 그래프 그리기

import matplotlib.pyplot as plt
plt.plot([10, 20, 30, 40])         # y-축 데이터만 전달 했음.
plt.show()
import matplotlib.pyplot as plt
# x-축 데이터와 y-축 데이터 모두 전달
# x-축 데이터 개수와 y-축 데이터 개수 일치
plt.plot([1, 2, 3, 4], [10, 20, 30, 40])
plt.show()
  • 앞 페이지의 그래프와 비교할 것

  • numpy 모듈은 python으로 수학 계산을 고속으로 처리하기 위해 만들어졌다.
import numpy as np

x = np.arange(5)
print(x)
print(type(x))
=>
[0 1 2 3 4]
<class 'numpy.ndarray'>
x = range(5)
print(x)
print(list(x))
print(type(x))
=>
range(0, 5)
[0, 1, 2, 3, 4]
<class 'range'>
x = np.arange(1, 5)
print('x:', x)
print('2*x:', 2*x)
print('2*x+1:', 2*x+1)
=>
x: [1 2 3 4]
2*x: [2 4 6 8]
2*x+1: [3 5 7 9]

import numpy as np

x = np.arange(1, 5)
y = 2*x + 1
plt.plot(x, y, 'bo--')
plt.show()
  • 그래프에 옵션 추가하기
  1. 그래프에 제목 넣기
x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--')
plt.title('My Income')
plt.show()
x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--')

plt.title('My Income')
plt.xlabel('year')
plt.ylabel('$')
plt.show()

N개의 그래프를 하나의 그림(figure)에 넣기

x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo-')
plt.plot(x,y2,'rs:')
plt.title('title')
plt.show()

그래프에 범례 넣기

x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--', label='me')
plt.legend()
plt.show()
x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo--', label='me')
plt.plot(x,y2,'rs--', label='you')
plt.title('title')
plt.legend()
plt.show()
  • 웃자고 하는 소리 -

나는 한결 같이 꾸준히 노력했다. 비록 초기값이 너 보자 작지만 ...

너도 한결 같이 꾸준히 노력했다. 초기값이 나보다 높은 곳에서 시작하였하여

한 동안 나보다 큰 값을 가졌지만

너가 방황하는 동안 나는 늘 한결 같이 노력했다.

웃자고 하는 소리였습니다.

거렇다고 파란선이 승자냐? 그건 아니죠. x 축의 값이 4.0을 지나면서 또 어떤 일이 생길지 모릅니다. ㅎㅎㅎㅎ


x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo--', label='me')
plt.plot(x,y2,'rs--', label='you')
plt.title('title')
plt.legend(loc=4)
plt.show()

지구 평균 기온 상승을 그래프로 보이고 싶다.

왜 보이고 싶은가? 보이고 싶은 목적이란 무엇인가?

온도가 많이 상승한다고 하면, 이런 그래프를 보여주고 싶다.

평균기온이 상승한다고 하면, 그래프를 보고 설득시켜야 한다.

→ 내 말을 설득시키기 위해서

1908년 1년 평균치 온도부터 2023년 평균온도까지

여름 평균, 겨울 평균, 연평균을 모두 그린 다음,

내가 말하고자 하는 내용을 잘 나타내는 것을 보여주면 된다.

낚시를 한창 다니던 시절

옛날에는 한강이 얼었다.

서울 살아보면, 한강이 어는 일은 매우 드문 일이다.

내가 표현하고 싶은 것을 데이터에서 어떻게 보여줄것인가

  1. 데이터 읽어 오기
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)           # 헤더 제거

for row in data:
  print(row[-1])      # 최고 기온값만 출력

f.close()
  1. 데이터를 리스트에 저장하기

: 누락 데이터를 제외하고 최고 기온 값만 추출하여 리스트 형 데이터를 만든다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)            # 헤더 제거

max_temp_list =[]     # 최고 기온 데이터를 저장하기 위해 미리 빈 리스트 생성

for row in data:
  # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
  if row[-1] != '':
    # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장
    max_temp_list.append(float(row[-1]))

f.close()

print(max_temp_list)
print( len(max_temp_list) )
  1. 데이터 시각화
import matplotlib.pyplot as plt
plt.plot(max_temp_list, 'r')
plt.show()
  1. 날짜 데이터 추출하기

‘서울.csv’파일에서 구한 데이터는 아래와 같은 형태의 데이터이다.

['\\t2009-06-14', '108', '20.2', '18.2', '23.8']

위 리스트에서 날짜에 해당하는 정보는 첫 번쨰 요소로 단순 문자열로 기록되어 있다.

'\\t2009-06-14'

여기서 연, 월, 일 정보를 추출한다고 하자.

먼저 replace() 함수를 사용하여 \t를 제거한다.

date = '\\t2009-06-14'
date = date.replace('\\t', '')
print(date)

그리고 ‘2009-06-14’의 문자열은 split()함수를 이용하여 연, 월, 일을 분리한다.

ymd = date.split('-')
print(ymd)
=> ['2009', '06', '14']
print(ymd[0])   # 년: year
print(ymd[1])   # 월: month
print(ymd[2])   # 일: day
=>
2009
06
14

1년 중 가장 더운 8월 달의 최고 기온 데이터만 추출하여 그래프로 그린다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)

max_temp_list =[]

for row in data:
  if row[-1] != '':                         # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
    if row[0].split('-')[1] == '08':          # ['\\t2009-06-14', '108', '20.2', '18.2', '23.8']
      max_temp_list.append(float(row[-1]))    # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장

f.close()

plt.figure(figsize=(16, 4))
plt.plot(max_temp_list, 'r')
plt.show()
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)
max_temp_list =[]

for row in data:
  if row[-1] != '':                                                             # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
    if row[0].split('-')[1] == '01' and row[0].split('-')[2] =='24':
      max_temp_list.append(float(row[-1]))                                      # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장

f.close()

plt.figure(figsize=(16, 4))
plt.plot(max_temp_list, 'b.-')
plt.title('max. temp of January 24 every year')
plt.ylabel('temp')
plt.grid()
plt.show()
import csv
import matplotlib.pyplot as plt

f = open('서울.csv', 'r', encoding='cp949')
data = csv.reader(f)

next(data)
high = []
low = []
year =[]

for row in data :
    if row[-1] != '' and row[-2] != '':
        if 1981 <= int(row[0].split('-')[0]) : 
                if row[0].split('-')[1] == '09' and row[0].split('-')[2] == '30':
                    high.append(float(row[-1]))
                    low.append(float(row[-2]))
                    year.append(int(row[0].split('-')[0]))

plt.rc('font', family='NanumBarunGothic') 
plt.title('달빛샘 생일의 기온 변화 그래프(9월 30일)')    

plt.plot(year, high, 'r', label='최고')
plt.plot(year, low, 'b', label='최저')
plt.legend()

plt.show()

모두의 데이터분석 with 파이썬

(실생활 예제로 시작하는 데이터 분석 첫걸음)

바닷가 출신이지만, 몇 가지 생선만 골라서 먹는 사람이 있다.

밥상에 생선을 잘 올리지 않는다.

술안주로 회보단 육류를 생각하는 사람들이 많다.

대부분, 굶주리면 먹게 된다.

안동과 서울은 내륙이다.

서울 횟집 매운탕은 C급이다.

모든 음식의 1순위는 ‘산도(신선도)’이다.

C급은 양념으로 어느정도 먹을 수 있는 정도.

신 김치와 썩은 김치는 구분이 된다.

육류: 돼지, 소, 닭, 오리


기상 자료 개방 포털 (https://data.kma.go.kr)

아래한글로 작성된 문서를 메모장으로 열어보면,

자기만의 방식으로 저장된 것을 확인할 수 있다.

어떤 자료를 넘기면, 각자 자기만의 방식으로 저장하게 된다.

→ 데이터에선, 아스키 코드로 본다. (아스키 파일)

CSV파일은 기본값 ‘,’로 구분하여 저장하게 된다.

Excel 프로그램이 인식할 수 있음

데이터 분석을 할 때, 통계 자료를 제공하는 사이트를 뒤져서 특정 자료로 접근하는 것이 수월할 것이다.


  • csv 파일 열어보기
import csv

f = open('서울.csv', 'r')
data = csv.reader(f)
print(data)
f.close()
  • 1번 라인, import csv는 csv 모듈을 불러옴

각 행의 데이터가 대괄호([])로 둘러쌓임: 리스트

각 행, 리스트 데이터의 각 요소가 작은 따옴표(’ ‘)로 둘러쌓임: 문자열

누락된 데이터를 확인하기는 어렵다.


가장 쉬운 것: 제외하기

  • 헤더 확인하기

: next( )함수는 data의 한 행 데이터를 반환 후 data에서 그 행을 삭제

  • 이터러블한 데이터 중에서 next( )함수로 차례 차례 요소를 꺼낼 수 있는 것을 ‘이터레이터’라고 함
  • 리스트, 딕셔너리, 문자열, 튜플 등은 모두 ‘이터러블’(요소를 차례 차례 하나씩 꺼낼 수 있는)하다고 함.
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)

# 첫번째 행을 읽어와서 header에 할당
header = next(data)
print(header)

# 그 다음 행을 읽어와서 first_row에 할당
first_row = next(data)
print(first_row)
f.close()

데이터에서 어떤 정보를 추출해 낼 수 있는가?

→ 어떤 의미있는 정보를 자료로부터 끄집어내기 위해서

  • 언제 가장 더웠고, 얼마나 더웠을까?
  • 일교차가 가장 큰 날은 1년 중 언제였을까?

#사람마다 더위를 느끼는 정도가 다르다.

어떤 사람은 습도가 높을수록, 어떤 사람은 온도가 높을수록 덥다고 느낄 수 있다.

→ 가장 더웠던 날은 언제이고, 얼마나 더웠을까? 라는 질문을 다듬어서

기온, 습도, 풍속 등 정확한 정보로 언급하는 것이 신뢰성이 있다.

⇒ 기상 관측 이래, 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

  • 일별로 기록된 최고기온 중, 가장 높은 값은 얼마인가?

파이썬 코드 작성 - 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
header = next(data)    # header 제거
max_temp = -999
max_Data = ''

for row in data:
  # 최고 기온 정보는 행(리스트)의 맨 마지막 요소
  if row[-1] == '':        # 맨 마지막 요소가 누락되었다면
    row[-1] = -1000        # 존재할 수 없는 최고 기온. 
  else:
    row[-1] = float(row[-1])
  if max_temp < row[-1]:
    max_temp = row[-1]
    max_date = row[0]

f.close()
print("서울의 최고 기온이 가장 높았던 날은"\\ + max_data +"일이며 "+ str(max_temp) +"도였습니다.")

혼자 공부하는 파이썬

모두의 데이터분석 with 파이썬

이것이 MySQL이다.

혼자 공부하는 자바 스크립트

  • 기온 공공 데이터에 질문하기 - 데이터에서 원하는 정보를 얻기

파이썬 코드 작성 - 서울의 최고 기온이 가장 높았던 날은 언제였고 몇 도였을까?

‘data’의 각 행은 리스트 형이었음

date_list → 날짜를 요소로 하는 리스트

온도만 들어있는 리스트를 뽑고, 데이터만 들어있는 리스트를 뽑으면 된다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
header = next(data)       # header 제거
max_temp = -999
max_data = ''
for row in data:
  #최고 기온 정보는 행(리스트)의 맨 마지막 요소.
  if row[-1] == '':           # 맨 마지막 요소가 누락되었다면
    row[-1] = -1000           # 존재 할 수 없는 최고 기온.
  else:
    row[-1] = float(row[-1])    # 문자열 형 -> 숫자형으로 변환
  if max_temp < row[-1]:
    max_temp = row[-1]
    max_date = row[0]
f.close()
print("서울의 최고 기온이 가장 높았던 날은 "\\
      + max_date +"일이며 "+ str(max_temp) +"도였습니다.")

학연, 지연, 혈연은 중요치 않지만, 이유모르게 더 친근한 느낌이 드는 이유이기도 하다.

뭔가 의미있는 정보를 만들어내려고 하는 것이다.

최고 온도가 얼마이고 몇 도인지 궁금하다면 필요한 정보를 뽑아내야 한다.

공부하고 있는 아버지

→ 아들이 자연스럽게 책을 보는 것이 문화가 된다고 생각한다.

연합고사라 불리는 고등학교 시험이 있다.

서울에서 떨어진 곳에 있는 형, 누나들이 같이 살았다.

중학교 3학년 때 도서관에 앉아있는 것이 삶의 일부가 되었다.

→ 자연스럽게 나의 삶이 변하게 된다.

내 삶의 방식을 은연중에 보고 배운다.

→ 자연스럽게 보고 배울 것이다.

어떤 일을 스스로 할 수 있게 되기까지 10년은 걸린다.

아직 20살 넘어서 10년이 되지 않았다.

가르치는 입장, 구직하는 입장에서 보면

시간이 필요하다. → 이 시간을 줄일려고 노력하는 것이다.

  • 공통의 목적: 주어진 기간안에 큰 성장을 이루길 바란다.

둘째 마당- 데이터 시각화 기초

  • 기본 그래프 그리기

matplotlib 라이브러리란?

기본 그래프 그리기

import matplotlib.pyplot as plt
plt.plot([10, 20, 30, 40])         # y-축 데이터만 전달 했음.
plt.show()
import matplotlib.pyplot as plt
# x-축 데이터와 y-축 데이터 모두 전달
# x-축 데이터 개수와 y-축 데이터 개수 일치
plt.plot([1, 2, 3, 4], [10, 20, 30, 40])
plt.show()
  • 앞 페이지의 그래프와 비교할 것

  • numpy 모듈은 python으로 수학 계산을 고속으로 처리하기 위해 만들어졌다.
import numpy as np

x = np.arange(5)
print(x)
print(type(x))
=>
[0 1 2 3 4]
<class 'numpy.ndarray'>
x = range(5)
print(x)
print(list(x))
print(type(x))
=>
range(0, 5)
[0, 1, 2, 3, 4]
<class 'range'>
x = np.arange(1, 5)
print('x:', x)
print('2*x:', 2*x)
print('2*x+1:', 2*x+1)
=>
x: [1 2 3 4]
2*x: [2 4 6 8]
2*x+1: [3 5 7 9]

import numpy as np

x = np.arange(1, 5)
y = 2*x + 1
plt.plot(x, y, 'bo--')
plt.show()
  • 그래프에 옵션 추가하기
  1. 그래프에 제목 넣기
x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--')
plt.title('My Income')
plt.show()
x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--')

plt.title('My Income')
plt.xlabel('year')
plt.ylabel('$')
plt.show()

N개의 그래프를 하나의 그림(figure)에 넣기

x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo-')
plt.plot(x,y2,'rs:')
plt.title('title')
plt.show()

그래프에 범례 넣기

x = [1, 2, 3, 4]
y = [3, 5, 7, 9]
plt.plot(x,y,'bo--', label='me')
plt.legend()
plt.show()
x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo--', label='me')
plt.plot(x,y2,'rs--', label='you')
plt.title('title')
plt.legend()
plt.show()
  • 웃자고 하는 소리 -

나는 한결 같이 꾸준히 노력했다. 비록 초기값이 너 보자 작지만 ...

너도 한결 같이 꾸준히 노력했다. 초기값이 나보다 높은 곳에서 시작하였하여

한 동안 나보다 큰 값을 가졌지만

너가 방황하는 동안 나는 늘 한결 같이 노력했다.

웃자고 하는 소리였습니다.

거렇다고 파란선이 승자냐? 그건 아니죠. x 축의 값이 4.0을 지나면서 또 어떤 일이 생길지 모릅니다. ㅎㅎㅎㅎ


x = [1, 2, 3, 4]
y1 = [3, 5, 7, 9]
y2 = [4, 6, 6, 8]

plt.plot(x,y1,'bo--', label='me')
plt.plot(x,y2,'rs--', label='you')
plt.title('title')
plt.legend(loc=4)
plt.show()

지구 평균 기온 상승을 그래프로 보이고 싶다.

왜 보이고 싶은가? 보이고 싶은 목적이란 무엇인가?

온도가 많이 상승한다고 하면, 이런 그래프를 보여주고 싶다.

평균기온이 상승한다고 하면, 그래프를 보고 설득시켜야 한다.

→ 내 말을 설득시키기 위해서

1908년 1년 평균치 온도부터 2023년 평균온도까지

여름 평균, 겨울 평균, 연평균을 모두 그린 다음,

내가 말하고자 하는 내용을 잘 나타내는 것을 보여주면 된다.

낚시를 한창 다니던 시절

옛날에는 한강이 얼었다.

서울 살아보면, 한강이 어는 일은 매우 드문 일이다.

내가 표현하고 싶은 것을 데이터에서 어떻게 보여줄것인가

  1. 데이터 읽어 오기
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)           # 헤더 제거

for row in data:
  print(row[-1])      # 최고 기온값만 출력

f.close()
  1. 데이터를 리스트에 저장하기

: 누락 데이터를 제외하고 최고 기온 값만 추출하여 리스트 형 데이터를 만든다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)            # 헤더 제거

max_temp_list =[]     # 최고 기온 데이터를 저장하기 위해 미리 빈 리스트 생성

for row in data:
  # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
  if row[-1] != '':
    # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장
    max_temp_list.append(float(row[-1]))

f.close()

print(max_temp_list)
print( len(max_temp_list) )
  1. 데이터 시각화
import matplotlib.pyplot as plt
plt.plot(max_temp_list, 'r')
plt.show()
  1. 날짜 데이터 추출하기

‘서울.csv’파일에서 구한 데이터는 아래와 같은 형태의 데이터이다.

['\\t2009-06-14', '108', '20.2', '18.2', '23.8']

위 리스트에서 날짜에 해당하는 정보는 첫 번쨰 요소로 단순 문자열로 기록되어 있다.

'\\t2009-06-14'

여기서 연, 월, 일 정보를 추출한다고 하자.

먼저 replace() 함수를 사용하여 \t를 제거한다.

date = '\\t2009-06-14'
date = date.replace('\\t', '')
print(date)

그리고 ‘2009-06-14’의 문자열은 split()함수를 이용하여 연, 월, 일을 분리한다.

ymd = date.split('-')
print(ymd)
=> ['2009', '06', '14']
print(ymd[0])   # 년: year
print(ymd[1])   # 월: month
print(ymd[2])   # 일: day
=>
2009
06
14

1년 중 가장 더운 8월 달의 최고 기온 데이터만 추출하여 그래프로 그린다.

import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)

max_temp_list =[]

for row in data:
  if row[-1] != '':                         # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
    if row[0].split('-')[1] == '08':          # ['\\t2009-06-14', '108', '20.2', '18.2', '23.8']
      max_temp_list.append(float(row[-1]))    # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장

f.close()

plt.figure(figsize=(16, 4))
plt.plot(max_temp_list, 'r')
plt.show()
import csv
f = open('서울.csv', encoding='cp949')
data = csv.reader(f)
next(data)
max_temp_list =[]

for row in data:
  if row[-1] != '':                                                             # 누락된 데이터가 아닐 경우(데이터가 있을 경우)
    if row[0].split('-')[1] == '01' and row[0].split('-')[2] =='24':
      max_temp_list.append(float(row[-1]))                                      # row[-1]은 문자열 데이터임으로 float() 함수를 사용하여 숫자형 데이터로 변환 후 저장

f.close()

plt.figure(figsize=(16, 4))
plt.plot(max_temp_list, 'b.-')
plt.title('max. temp of January 24 every year')
plt.ylabel('temp')
plt.grid()
plt.show()
import csv
import matplotlib.pyplot as plt

f = open('서울.csv', 'r', encoding='cp949')
data = csv.reader(f)

next(data)
high = []
low = []
year =[]

for row in data :
    if row[-1] != '' and row[-2] != '':
        if 1981 <= int(row[0].split('-')[0]) : 
                if row[0].split('-')[1] == '09' and row[0].split('-')[2] == '30':
                    high.append(float(row[-1]))
                    low.append(float(row[-2]))
                    year.append(int(row[0].split('-')[0]))

plt.rc('font', family='NanumBarunGothic') 
plt.title('달빛샘 생일의 기온 변화 그래프(9월 30일)')    

plt.plot(year, high, 'r', label='최고')
plt.plot(year, low, 'b', label='최저')
plt.legend()

plt.show()
반응형
LIST