데이터를 import 후 pivot_table함수로 collaborative filtering format으로 변경한다.

 

최소 80개이상 데이터가 있는 것만 상관계수를 뽑기 위해서 min_periods 파라미터에 80을 대입한다.

myRatings를 통해 추천을 받으려고한다. Movie Name column에서 nan값을 dropna하고 내림차순 정렬후 데이터프레임으로 만든 뒤 별점을 곱해서 weight column을 만든다. similar_movies_list에 정리하면 다음과 같다.

데이터를 import 했다. Date column을 datetime64로 바꾸고 인덱스로 설정해주면 resample함수를 사용할 수 있다.

resample 'Y'는 년도다. 년도로 리샘플한 후 , 각 년도별 몇개의 범죄 데이터를 가지고 있는지 확인한다.

월별 범죄 발생 건수를 확인해보자.

데이터 타입이 datetime64인 Series나 column에 dt속성을 통해 여러 속성들을 사용가능하다,

위 사진은  dayofweek 0 ~ 6 으로 월요일부터 일요일을 나타내고 day는 몇 일 인지 나온다.

weekday를 통해서 0 ~ 6 으로 요일을 나타낼 수도 있다.

데이터프레임의 날짜문자열 컬럼을, datetime64로 변경할 수 있다.

Date column에는 날짜문자열이 들어 있었는데 이것을 pd.to_datetime함수를 통해 datetime64로 변경한다.

이때 format에 문자열 형식을 적어 줘야한다. strftime section 이 링크를 참고해서 바꾸면 된다.

csv 파일이 comma로 제대로 분리 되어있지 않으면 read_csv에서 에러가 발생할 수 있다.

이 때 error_bad_lines = False 파라미터를 사용하면 위 사진처럼 문제가 있는 line을 건너뛰고 읽어온다.

df = pd.DataFrame({'Animal': ['Falcon', 'Falcon',
                              'Parrot', 'Parrot'],
                   'Max Speed': [380., 370., 24., 26.]})
df
   Animal  Max Speed
0  Falcon      380.0
1  Falcon      370.0
2  Parrot       24.0
3  Parrot       26.0

DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=NoDefault.no_default, observed=False, dropna=True) 에서 by에 원하는 column으로 묶어서 함수를 적용 시킬 수 있다.

df.groupby(['Animal']).mean()
       Max Speed
Animal
Falcon      375.0
Parrot       25.0

max(), min(), sum() 등의 함수가 있다.

문자를 숫자로 바꾸어 주는 방법은 One-Hot Encoding이 있다.

import numpy as np   
import pandas as pd   

fruit = pd.DataFrame({'name':['apple', 'banana', 'cherry', 'durian', np.nan],
                      'color':['red', 'yellow', 'red', 'green', np.nan]})

get_dummies

name column에는 4개의 고유한 데이터가 있다. 이것을 행으로 바꿔 있다 없다를 1과 0으로 원핫인코딩한다.

데이터

matplotlib.pyplot.hist2d(x, y, bins=10, range=None, density=False, weights=None, cmin=None, cmax=None, *, data=None, **kwargs) 에서

data: df, x,y: 원하는 column, bins:간격을 넣고 cmin,cmap으로 꾸며 준다.

날짜가 들어간 문자열에 pd.to_datetime(문자열)을 통해 DatetimeIndex를 만들 수 있다.

pd.to_timedelta를 통해 시간이나 날짜단위를 더할 수 있다.

timedelta

pd.date_range는 시작일과 종료일을 셋팅하면, 알아서 날짜를 채우도록 하는 함수

pd.timedelta_range 반복회수와 시간을 셋팅하면 배열을 반환한다.

상관 관계 분석에 대해서 알아봅니다.

https://ko.wikipedia.org/wiki/%EC%83%81%EA%B4%80_%EB%B6%84%EC%84%9D

 

상관 분석 - 위키백과, 우리 모두의 백과사전

상관 분석(相關 分析, Correlation analysis)은 확률론과 통계학에서 두 변수 간에 어떤 선형적 관계를 갖고 있는 지를 분석하는 방법이다. 두 변수는 서로 독립적인 관계이거나 상관된 관계일 수 있으

ko.wikipedia.org

상관계수는 -1부터 1까지의 값을 갖는다.1일 때 완벽한 양의 상관관계가 되고, -1일 때 완벽한 음의 상관관계가 된다. 0이라면 별다른 상관관계가 없음을 의미한다. 상관계수가 0.1 이하면 관계가 없고, 0.3 이하면 약한관계 입니다.

 

data

먼저 필요한 라이브러리를 import해준다. 아래 코드는 한글출력을 위한 코드다.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sb

%matplotlib inline

import platform

from matplotlib import font_manager, rc
plt.rcParams['axes.unicode_minus'] = False

if platform.system() == 'Darwin':
    rc('font', family='AppleGothic')
elif platform.system() == 'Windows':
    path = "c:/Windows/Fonts/malgun.ttf"
    font_name = font_manager.FontProperties(fname=path).get_name()
    rc('font', family=font_name)
else:
    print('Unknown system... sorry~~~~')

corr

sb.regplot은 점그래프와 상관계수를 시각화 한것이다. pd.corr()을 통해 원하는 column끼리의 상관계수를 알 수 있다.

+ Recent posts