데이터분석 139

pandas dataframe 시계열 관련 함수

1. 시계열데이터로 바꾸는 함수 dataFrame.asfreq('단위',meathod='결측치채우는방법') # 단위 #'D':day, 'W':week, 'H':Hour # meathod # 'ffill' or 'pad' : forward fill, 앞에것으로 뒤에것을 채우는것 # 'bfill' or 'backfill' : 뒤에것으로 앞에것을 채우는것 2. 시계열데이터에서 결측치 확인하기 raw_all #결측치가 있는 값은 True를 반환한다 raw_all.asfreq('H').isnull().sum(axis=1)>0 #결측치가 있는 행을 반환한다 raw_all.asfreq('H')[raw_all.asfreq('H').isnull().sum(axis=1) > 0] 3. 시계열 분해(추세, 계절성, 잔차) ..

회귀분석 결과 해석시 SSR,SSE,SST의 의미와 용어 주의할점

회귀분석을 수행한 후 결과값을 해석할때 SSR,SSE,SST값을 이용한다. 이때 각 요소들의 의미와 용어의 헷갈리는 부분을 정리한다. 알아보기 쉽게 설명가능수치는 파란색 설명불가능한 수치는 빨간색으로 표시한다. 1. 설명가능한 수치 y값의 평균과 y값을 통해 구한 회귀선 간의 차이를 의미한다. y값들을 분석하여 이들을 설명하는 회귀식을 구했다. 이는 분석을 통해 설명이 가능해진 수치이다. 정리하면 아래와 같다. 2. 설명불가능한 수치 y실제값과 예측값 사이의 차이를 의미한다. y값을 회귀식으로 예측했다. 하지만 예측한 값과 실제값이 차이가 있을 수 있다. 이것은 회귀식으로는 설명할 수 없는 설명불가능한 수치이다. 정리하면 아래와 같다. 3. 총 변동 y값들의 평균값과 실제 y값의 차이로 총 변동을 의미한..

[타이타닉 데이터]seaboran의 distplot으로 시각화하기

import seaborn as sns #메틸렙에서 동작하는 시각화 라이브러리 f,ax=plt.subplots(1, 3, figsize=(20, 6)) sns.distplot(train[train['Pclass'] == 1].Fare,ax=ax[0]) ax[0].set_title('Fares in Pclass 1') sns.distplot(train[train['Pclass'] == 2].Fare,ax=ax[1]) ax[1].set_title('Fares in Pclass 2') sns.distplot(train[train['Pclass'] == 3].Fare,ax=ax[2]) ax[2].set_title('Fares in Pclass 3') plt.show()

[타이타닉 데이터] 바이올린 플룻

#바이올린 플룻 #왼쪽 그래프 f, ax = plt.subplots(1,2,figsize=(18,8)) #1행 2열, 크기 # x, y, 기준, 데이터, split(생존과 사망을 합칠지 분리할지), 왼쪽그래프 sns.violinplot("Pclass", "Age", hue="Survived", data=train, split=True, ax=ax[0]) ax[0].set_title('Pclass and Age vs Survived') #제목 ax[0].set_yticks(range(0, 110, 10)) #y축의 단위 (최소,최대,단위) #오른쪽 그래프 sns.violinplot("Survived","Age", hue="Sex", data=train, split=True, ax=ax[1]) ax[1].s..

판다스의 crosstab을 이용해서 시각화

1.기본구조 pd.crosstab(x, y, margin=?).style.background_gradient(cmap='summer_r') => 일때 x는 행, y는 열, margin은 행과 열의 합을 나타낼것인지를 판단해주는 파라미터. style.background_gradient(cmap='summer_r') 은 배경에 색깔일 입혀주는 파라미터 2. 예시 (1) 배경색 없는것 pd.crosstab(train.Survived, train.Pclass, margins=True) (2) margin이 False일때 pd.crosstab(train.Survived, train.Pclass, margins=False).style.background_gradient(cmap='summer_r') (3) 행렬이 ..

missingno 라이브러리를 통한 결측치 확인

* 타이타닉 데이터를 이용 import missingno # data는 dataFrame type missingno.matrix(data, figsize = (15,8)) 위에서부터 첫번째행, 맨아래가 마지막 1309행으로서 각 att의 결손을 보여줌. (하얀색이 결측치) - age와 cabin이 중간중간 결측치가 많음. - train+test된 데이터이기 때문에 survived의 아래쪽은 모두 비어있음 맨오른쪽은 파스크행 이라고 하여 데이터의 완전성을 나타낸다고 함 (정확히 뭔지 잘모르겠음..)

차원축소후 k-means 클러스터링

1. 차원축소하기(pca) : 여러가지 att가 존재할 때 내가 원하는만큼 차원을 축소 # [차원축소하기 PCA] import sklearn.decomposition import matplotlib.pyplot as plt import numpy as np def main(): X, attributes = input_data() pca_array = normalize(X) pca, pca_array = run_PCA(X, 2) visualize_2d_wine(pca_array) def input_data(): f = open("data/attributes.txt", 'r') attributes = [] while True: line = f.readline().strip("\n") if not line: ..

추론및 가설검정

1. 이항분포 # [이항분포] import numpy as np import matplotlib.pyplot as plt import scipy as sp from scipy import stats # 이항분포 생성 n, p = 10, 0.3 stat_bin = sp.stats.binom(n, p) # 그리기 fig, ax = plt.subplots() #확률밀도함수 x_axis = np.arange(n + 1) plt.bar(x_axis, stat_bin.pmf(x_axis)) plt.show() fig.savefig("pmf_plot.png") #확률질량함수 x_axis = np.arange(n + 1) plt.bar(x_axis, stat_bin.cdf(x_axis)) plt.show() fig.s..

데이터 시각화 (그래프 그리기)#pandas#numpy

# [도수분포표] import pandas as pd import numpy as np # drink 데이터 drink = pd.read_csv("drink.csv") # 전체 참석 횟수를 확인하는 도수분포표 drink_tab = pd.crosstab(index = drink["Attend"], columns = "count") print("전체 참석 횟수를 확인하는 도수분포표") print(drink_tab) #누가 몇 번 참석했는지 알 수 있는 도수분포표 drink_who = pd.crosstab(index = drink["Attend"], columns = drink["Name"]) print("누가 몇 번 참석했는지 알 수 있는 도수분포표") print(drink_who) # [원형 그래프] im..

자료의 형태

1. 수치형 자료 : 실수로 측정이 가능한 자료형 (키, 몸무게, 시험점수, 나이) (1) 연속형 자료 : 원주율, 시간, 키, 몸무게 등.. (2) 이산형 자료 : 시험점수, 나이, 동영상 조횟수 등.. 2. 범주형 자료 (1) 명목형 척도(nominal) : 구분할 수 있는 척도 (ex 혈액형, 성별) (2) 서열 척도 (ordinal) : 순서 관계를 밝혀주는 척도 (등수, 직위, 학력) (3) 등간 척도 (interval) : 덧셈 뺄셈이 가능한 척도, 배는 불가능 (섭씨 화씨온도, 시간) (4) 비율척도 (ratio): 비율로도 계산이 가능한 척도 (절대온도, 성적, 키, 무게, 인구수, 길이 수량 등등)

나이브베이즈 분류 #나이브 베이즈#확률통계

1. 나이브 베이즈 확률 def main(): sensitivity = float(input()) prior_prob = float(input()) false_alarm = float(input()) print("%.2lf%%" % (100 * mammogram_test(sensitivity, prior_prob, false_alarm))) def mammogram_test(sensitivity, prior_prob, false_alarm): p_a1_b1 = sensitivity # p(A = 1 | B = 1) p_b1 = prior_prob # p(B = 1) p_b0 = 1-prior_prob # p(B = 0) p_a1_b0 = false_alarm # p(A = 1|B = 0) p_a1 = p..

회귀분석 #사이킷런#넘파이#numpy#scikit-learn

1. 점찍기 x,y점들을 matplot라이브러리를 이용하여 점찍기 # [점그리기] import matplotlib.pyplot as plt import numpy as np # 1. x,y값 X = [8.70153760, 3.90825773, 1.89362433, 3.28730045, 7.39333004, 2.98984649, 2.25757240, 9.84450732, 9.94589513, 5.48321616] Y = [5.64413093, 3.75876583, 3.87233310, 4.40990425, 6.43845020, 4.02827829, 2.26105955, 7.15768995, 6.29097441, 5.19692852] plt.scatter(X, Y) # (x, y) 점그리기 plt.show(..