데이터분석 17

데이터 분석 - EDA(탐색적 데이터 분석) 개념

- EDA 쉽게 말하면 초기 데이터를 조사하고 주요 특징을 찾아 어떻게 분석해나갈지 찾아가는 데이터 분석의 기초 단계이다. 참고로 ADsP 자격증을 취득할 때 개념적으로 학습했었다. ​ ​ - EDA 종류 시각화 : seaborn, matplotlib 등의 시각화 라이브러리를 통해 차트, 그림 등으로 표현한다. 비시각화 : 통계 요약본의 값을 보며 정확한 값을 파악할 수 있다. ​ - EDA 대상 일변량 : 독립변수와 종속변수가 모두 1개인 경우이다. 그 대상을 관찰하고 분석하여 패턴을 얻는다. 다변량 : 독립변수와 종속변수가 여러 개인 경우이다. 주로 변수들간의 관계를 분석하는 것이 유용하다. ​ - EDA 유형 일변량 -> 비시각화, 시각화 다변량 -> 비시각화, 시각화 출처 : EDA (Explor..

토이프로젝트 - (4) 상관계수와 선형회귀

- 상관계수 pandas의 corr를 이용하여 두 변수간의 상관계수를 구할 수 있다. 공분산을 이용하여 상관계수를 구할 수 있는데 해당 내용은 아래 링크를 참조하면 된다. 통계학개론 - (4) 수치 척도(왜도, 공분산, 상관계수) 왜도 - 좌우측에 치우친 정도를 말한다. 1. 정대칭 : 왜도는 0이다. 평균은 중앙값과 같다. 2. 오른쪽 꼬리... blog.naver.com import pandas as pd import matplotlib.pyplot as plt def readData(name): return pd.read_csv(name+".csv") def madeData(name): value=readData(name) temp = pd.DataFrame({'Date':KS['date'],nam..

토이프로젝트 - (1) 데이터 수집 (코스피 크롤링)

- 기본 배경 데이터분석 - 토이프로젝트 계획(주가 지수의 관계) 사전 정보 - 일정 : 4월 초 ~ 6월초까지 약 2개월 - 사용언어 : python - 분석 이유 : 평소 미국 증시와 한... blog.naver.com 중간고사 기간은 끝났지만 아직 다음주에 시험이 1개 남아있다. 그래도 최근에 하루 1시간 정도 계획했던 토이프로젝트를 진행하는데 사용하고 있다. 현재 1단계인 "데이터 수집"을 python의 BeautifulSoup을 이용하여 진행 중이다. 사실 네이버에서 코스피, 나스닥, S&P500 등의 지수들을 추출하여 데이터프레임 형태로 형식에 맞게 저장하려고 하였다. 하지만 문제가 발생하여 조금 더 시간이 걸릴 것 같다. 문제는 아래에서 설명하겠다. - 네이버 코스피 크롤링 from bs4 ..

데이터분석 - 토이프로젝트 계획(주가 지수의 관계)

출처 : 주요 주가 지수 - Investing.com - 사전 정보 - 일정 : 4월 초 ~ 6월초까지 약 2개월 - 사용언어 : python - 분석 이유 : 평소 미국 증시와 한국 증시의 상관성이 궁금하였기 때문이다. 출처 : 빅데이터 분석기사 필기 - 빅데이터 분석 기획 #2 (tistory.com) - 분석 기획 1. 평소 미국 경제는 한국뿐만 아니라 전세계적으로 영향력이 큰 편이다. 그렇기에 우리나라 코스피 지수와 나스닥, s&p500 등의 관계를 알아보려고 한다. 2. 간단한 토이프로젝트를 목표로 진행하려고 하기에, 주가 지수의 관계를 살펴보고 크게 인사이트를 얻기 어려운 상황 등이 발생하면 모델링까지는 진행하지 않으려 한다. 3. 주가와 관련되었기에 회귀나 분류의 주제가 적합할 것 같다. -..

데이터 분석 - 데이터 추출 및 자료 구조 다루기

1. 데이터 추출 #조건에 맞는 행 추출 df['변수명'] -> 변수의 행을 추출한다. df['변수명']==? -> 조건에 맞는지 True, False로 확인할 수 있다. df[df['변수명']==?] -> 조건에 맞으면 추출한다. #열 추출 df['변수명'] df[['변수명','변수명2']] #조건을 충족하는 행에서 열 추출 df[df['변수명']==?]['변수명2','변수명3'] df.groupby('변수명')[['변수명2','변수명3']] #인덱스 문자열 지정해 행 추출 df.loc['문자열'] #인덱스 문자열 지정해 열 추출 df.loc['문자열','변수명'] #인덱스 번호 지정해 행 추출 df.loc[인덱스 번호] #연속된 행 추출 (시작 이상 끝 이하 추출) df.loc[시작:끝] #조건을 충..

데이터 분석 - 의사결정 나무 모델 만들기

1. 용어 정리 - 머신러닝 모델 : 함수 만들기와 비슷하다. 하지만 규칙을 컴퓨터가 데이터의 패턴을 찾아 정한다. - 예측 변수 : 예측하는 데 활용하는 변수 또는 모델에 입력하는 값 - 타켓 변수 : 예측하고자 하는 변수 또는 모델이 출력하는 값 - 크로스 밸리데이션 : 데이터를 분할해 일부는 모델을 만들 때 사용하고 일부는 평가할 때 사용하는 방법 - 컨퓨전 매트릭스 : 예측한 값 중 맞은 경우와 틀린 경우의 빈도를 나타낸 값 ​ - 의사결정나무 : 주어진 질문에 두 가지 선택지로 나뉘어 마지막에 결론을 얻는 구조 1단계 : 타켓 변수를 가장 잘 분리하는 예측 변수 선택 2단계 : 첫 번째 질문의 답변에 따라 데이터를 두 노드로 분할 3단계 : 노드에서 타켓 변수를 가장 잘 분리하는 예측 변수 선택..

데이터 분석 - 통계 분석 기법을 이용한 가설 검정

1. 용어 정리 - 기술 통계 : 데이터를 요약해 설명하는 통계 분석 기법 - 추론 통계 : 단순히 숫자를 요약하는 것을 넘어 어떤 값이 발생할 확률을 계산하는 분석 기법 ​ - 통계적 가설 검정 : 유의확률을 이용해 가설을 검정하는 방법 - 유의확률 : 실제로는 집단 간 차이가 없는데 우연히 차이가 있는 데이터가 추출될 확률 2. t검정 - 통계적 가설 검정 소스 코드 import pandas as pd mp = pd.read_csv('mp.csv') #각 집단의 데이터 준비 compact=mp.query('category=="compact"')['cty'] suv=mp.query('category=="suv"')['cty'] from scipy import stats #집단 간 분산이 같다고 가정 s..

실전 데이터 분석 - 데이터 수집부터 시각화까지(with 후쿠오카)

1. 시작에 앞서 요즘 데이터 분석 공부한 것을 활용도 하고, 2월 달에 갈 예정(?)인 후쿠오카에 대해 조사해보고 싶어 아침부터 열심히 코드를 작성했다. ​ 전체적인 틀은 약 340개의 후쿠오카 관련 포스팅의 내용 중에 많이 작성된 명사는 무엇인지 시각화하는 것이다. ​ 진행 단계 : 1. 웹 크롤링을 활용한 데이터 수집 2. 데이터 전처리 및 텍스트 마이닝 3. 데이터 시각화 2. import from selenium import webdriver from selenium.webdriver.common.keys import Keys import time from bs4 import BeautifulSoup import csv import pandas as pd import konlpy from wor..

데이터 분석 - 인터랙티브 그래프(with plotly.express)

1. 인터랙티브 그래프 마우스 움직임에 반응하며 실시간으로 변하는 그래프를 말한다. fig = px.line(df, x='Date', y='Close', title='{}의 종가(Close) '.format(company)) fig.update_xaxes( rangeslider_visible=True, rangeselector=dict( buttons=list([ dict(count=1, label="1m", step="month", stepmode="backward"), dict(count=3, label="3m", step="month", stepmode="backward"), dict(count=6, label="6m", step="month", stepmode="backward"), dict(st..

데이터 분석 - 지도 시각화(with folium)

1. 단계 구분도 지역별 통계치를 색의 차이로 표현한 지도 2. 시군구별 인구 단계 구분도 소스 코드 import json #지도 데이터 map = json.load(open('SIG.geojson', encoding='UTF-8')) import pandas as pd #통계 데이터 df=pd.read_csv('Population_SIG.csv') #문자형태로 변환 df['code']=df['code'].astype(str) #지역을 6개의 구간으로 나눔 bins=list(df["pop"].quantile([0,0.2,0.4,0.6,0.8,1])) import folium #배경 지도 map_sig = folium.Map(location=[35.95, 127.7], #지도 중심 좌표 zoom_start..