데이터 취업스쿨 스터디노트(7주차)

김다희·2024년 5월 13일

5.13
오늘 수강한 분량: 시계열분석 1

05. forecast(시계열분석)

1. 배경 및 설치

설치 방법(순서대로 실행)

주피터 노트북으로 모듈 가져오기

  • from pandas_datareader import data
  • from prophet import Prophet

함수의 기초

def test_def(a,b):
return a + b

  • 가장 기초적인 모양의 def 정의
  • 이름(test_df)과 입력 인자(a, b)를 정해준다
  • 출력(return)을 작성

전역변수와 지역변수

전역변수(global)
a = 1
def edit_a(i):
지역변수(local)
global a
a = i

  • glabal 변수를 def 내에서 사용하고 싶다면 global로 선언
  • def 내에서의 변수와 밖에서의 변수는 같은 이름이어도 같은 것이 아니다

주피터 노트북에서 수학 용어 쓰기

$$ y = asin(2\pi ft + t_0) + b $$

plotSineWave 그리기

  • import matplotlib.pyplot as plt
  • import numpy as np
  • %matplotlib inline

기본형태

기본형태 실행

더 쉽게 이용하는 방법

쉬운형태 실행

쉬운형태에서 몇 개의 값만 변경해보기

5.14
오늘 수강한 분량: 시계열분석 2

내가만든 함수 import


주기=5 설정: freq=5

그래프 한글 설정하는 사용자 모듈 만들기

2. prophet 기초

1

(1) 데이터 만들기


(2) prophet 이용하여 예측 그래프 만들기

2

(1) 1-(1) 그래프에 + time 해서 데이터 만들기

(2) prophet 이용하여 예측 그래프 만들기

3

(1) 2-(1) 그래프에 + np.random.randn(365*2)/4 해서 그래프 만들기

(2) prophet 이용하여 예측 그래프 만들기

3. 시계열 데이터 실전 이용해보기

0. 이용 전 모듈 실행

1. 일간이용자수 그래프 만들기

1. pinkwink 사이트 일간 접속자 수 이용하여 데이터 만들기

2. 전체 데이터 그려보기 & trend 분석 시각화 위한 x축 값 만들기

3. 에러를 계산할 함수 만들기

4. 그래프 그려보기(1차원, 2차원, 3차원, 15차원)

prophet 이용하여 예측 그래프 만들기

1. 이용 전 데이터 프레임 날짜 format 해주기 & 인덱스 재정렬

2. prophet 이용하여 60일 데이터 예측

4. 기존 데이터 + 예측 데이터 시각화

5. 여러 시각화 그래프 불러오기

m.plot_components(forecast);

5.15
오늘 수강한 분량: naver API 1~2

06. Naver API

1. 네이버 API 사용 등록

2. 네이버 검색 API 사용하기

https://developers.naver.com/docs/serviceapi/search/blog/blog.md#%EB%B8%94%EB%A1%9C%EA%B7%B8 # 개발 가이드

  • urllib: http 프로토콜에 따라서 서버의 요청/응답을 처리하기 위한 모듈
  • urllib.request: 클라이언트의 요청을 처리하는 모듈
  • urllib.parse: url 주소에 대한 분석

검색: 블로그, 책, 영화, 카페, 쇼핑, 백과사전

  • 블로그: blog
  • 책: book
  • 영화: movie
  • 카페: cafearticle
  • 쇼핑: shop
  • 백과사전: encyc

잘 응답했는지 확인하는 방법

글자로 읽을 경우, decode utf-8 설정

print(response_body.decode("utf-8"))

3. 상품 검색

  • ex. "몰스킨" 검색

1. gen_search_url

2. get_result_onepage()


3. get_fields()


4. delete_tag()


5. actMain()



6. to_excel()

7. 시각화

  • plt.xticks(rotation=90): x축 글씨를 세로로 보이게 함

5.17

  • 오늘 수강한 분량: 인구분석1~3

Population

1. 배경

  • 목표
    - 인구 소멸 위기 지역 파악
    - 인구 소멸 위기 지역의 지도 표현
    - 지도 표현에 대한 카르토그램 표현

2. 데이터 읽고 인구 소멸 지역 계산하기

데이터 읽기 전 모듈 실행


fillna()

  • 설정한 부분의 값을 다른 값으로 바꿔주는 함수

    • fillna_df.fillna(value=0)
      - value=n: NaN값이 n으로 채워짐
    • method : {'backfill', 'bfill', 'ffill', None}, default None Method to use for filling holes in reindexed Series:
    • ffill: propagate last valid observation forward to next valid.
    • backfill / bfill: use next valid observation to fill gap.-
  • 원본 데이터

  • fillna() 데이터

  • 특정 부분을 NaN 값으로 바꾸기

  • method = "pad": 앞에 있는 값으로 NaN를 채워줌


데이터 가져오기

컬럼 이름 변경

소계 제거

구분 열 값의 이름 정리

소멸 지역 조사하기 위한 데이터

pivot_table 만들기

소멸 비율 계산

소멸 위기 지역

소멸 위기 지역 조회

인덱스 재정렬

열 이름 정리하기

3. 지도 시각화를 위한 지역별 ID 만들기

si_name 열 추가

지역 딕셔너리 만들기

(1) 일반 시 이름과 세종시, 광역시도 일반 구 정리

(2) 행정구

(3) 고성군

pivot table에 ID값 넣기

필요한 값만 남기기

(4) 지도 그리기(카르토그램)

지도에 있는 지역명 데이터 가져오기

.stack()

  • DataFrame의 열을 행으로 피벗(pivot)하는 역할

stacked 한 데이터 인덱스 재정렬

열 이름 바꾸기

카르토그램 그리기 전 위치 값 넣기

글자 정리 함수 작성

그래프 그리는 함수 작성

그래프 초안

검증 작업

  • 그래프 내 지역 데이터 값에서 내가 정리한 데이터 ID 값을 뺐을 때 'set()'이 나와야 함

merge

그림을 그리기 위한 데이터를 계산하는 함수

  • 색상을 만들 때, 최소값을 흰색
  • blockedMap: 인구현황(pop)
  • targetData: 그리고 싶은 컬럼



여기서부터 이해가 잘 안간당 .. ㅠ_ㅠ

인구수합계 지도 그리기

소멸위기지역 지도 그리기

여성비로 지도 그리기

2030 여성비로 지도 그리기

folium 을 통한 시각화

시각화 전 준비

인구수합계 지도 시각화

소멸위기지역 지도 시각화

5.18

  • 오늘 수강한 분량: EDA테스트2, EDA과제2 진행

5.19

  • 오늘 수강한 분량: sql 1~2

SQL

Database 정의

Database

-> 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합체

DBMS (Database Management System)

-> 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고 데이터베이스를 관리해주는 소프트웨어

관계형 데이터베이스 (RDB : Relational Database)

-> 서로간에 관계가 있는 데이터 테이블들을 모아둔 데이터 저장공간

SQL (Structured Query Language)

-> 데이터베이스에서 데이터를 정의, 조작, 제어하기 위해 사용하는 언어

SQL 구성

• 데이터 정의 언어 (DDL: Data Definition Language)
- CREATE, ALTER, DROP 등의 명령어
• 데이터 조작 언어 (DML: Data Manipulation Language)
- INSERT, UPDATE, DELETE, SELECT 등의 명령어
• 데이터 제어 언어 (DCL: Data Control Language)
- GRANT, REVOKE, COMMIT, ROLLBACK 등의 명령어

Database 관리

MySQL 8.0 Command Line Client 접속 -> password 입력

데이터베이스 만들기

create database mydb(데이터베이스 이름);

데이터베이스 확인하기

show databases;

데이터베이스 삭제

drop database mydb(데이터베이스 이름);

데이터베이스 선택

use mysql(데이터베이스 이름)

USER 관리

USER 목록 확인

select host, user from user;

USER 생성(내부접속)

create user 'zerobase(유저이름)'@'localhost' identified by '1234(비밀번호)';

USER 생성(내부접속)

create user 'zerobase(유저이름)'@'% identified by '5678(비밀번호)';

USER 삭제

  • 내부: drop user 'zerobase(유저이름)'@'localhost'
  • 외부: drop user 'zerobase(유저이름)'@'%'

USER 권한 부여

USER 권한 확인

show grants for 'zerobase'@'localhost';

USER 권한 부여

grant all on testdb.* to 'zerobase'@'localhost';

  • grant all on: 권한을 부여하는 코드
  • testdb.*: testdb 데이터베이스에 있는 모든 권한
    - *: '모든 것'을 의미 함

USER 권한 삭제

revoke all on testdb.* from 'zerobase'@'localhost';

새로고침

flush privileges;

Table 만들기

table 만들기 전 준비

Table

Table 생성

create table tablename(테이블명)

Table 목록 확인

show tables;

Table 상세 정보 확인

desc tablename(테이블명);

profile
안녕하세요

0개의 댓글