Python pandas - 상관관계 분석 -1

2018. 11. 6. 21:29Python/pandas

   Python 을 이용해서 상관관계 분석을 실행하기에 앞서 상관관계분석이란 무엇인지 간단하게 알아보고왔다.




상관 분석(correlation analysis)은 확률론과 통계학에서 두 변수간에 어떤 선형적 관계를 갖고 있는 지를 분석하는 방법이다. 두변수는 서로 독립적인 관계이거나 상관된 관계일 수 있으며 이때 두 변수간의 관계의 강도를 상관관계(Correlation, Correlation coefficient)라 한다. 상관분석에서는 상관관계의 정도를 나타내는 단위로 모상관계수 ρ를 사용한다.

상관관계의 정도를 파악하는 상관계수(Correlation coefficient)는 두 변수간의 연관된 정도를 나타낼 뿐 인과관계를 설명하는 것은 아니다. 변수간에 원인과 결과의 인과관계가 있는지에 대한 것은 회귀분석을 통해 인과관계의 방향, 정도와 수학적 모델을 확인해 볼 수 있다.

상관계수 : 등간척도 이상의 두 변수 중에서 한 변수의 변화가 다른 변수의 변화에 따라 어떤 변화가 일어나는지를 보여주는 지표. (-1.00 ~ +1.00) 의 값



상관관계 : 한 변수의 변화에 따른 변수의 변화 정도와 방향을 예측하는 분석기법






분석에대해 전혀 모르는 내가 이해한 상관관계 분석이란


a, b 가있을때 a값이 증가,감소에따라 b는 어떻게변하는지를 상관계수로 표현하고 그상관계수를 이용해 

2차원 그래프를 그리면  (수학에서 배운 y=x) 그걸보고 값이 증가하는지, 감소하는지를 판별한다고 생각하였다....




그리고 jupyter notebook 이란걸 알게되어 여기서 작업하면 더 잘보일것같아서 적용후 작업했다.




import pandas as pd from pandas import DataFrame from pandas import Series import numpy as np import matplotlib.pyplot as plt # Reading abalone data set pd.set_option('display.float_format', None) co = pd.read_excel("D:\Project\myProject\python\pandas\CO.xlsx", sheet_name='Sheet1') # 필요한열만가지고옴# co2 = co[ ["남여구분","업무구분","보장구분"] ] ## 월소득액이 nan 인거 제거 co2 = co2.dropna() #data_group = co2.groupby(co2['업무구분']).count() co2

업무구분
0 0 34 20
1 돌봄위기가정 39 28
2 빈곤위기 25308 19647
3 빈곤위기,돌봄위기가정 6 4
4 빈곤위기,양육가정 8 5
5 빈곤위기,출산가정 9 3
6 양육가정 62 44
7 어르신 8332 6309
8 어르신,돌봄위기가정 1 4
9 어르신,빈곤위기 2403 1219
10 어르신,출산가정 1 1
11 출산가정 740 763




지난공부와 똑같이 데이터를 만들었는데 jupyter notebook? 의 가장 좋은점은 바로 위와같이 데이터가 깔끔하게 정렬되는것인것 같다.

data_group1 = co2.loc[co2["남여구분"] == "여성",["업무구분"]]


data_group2 = co2.loc[co2["남여구분"] == "남성",["업무구분"]]


data_group1


업무구분
0빈곤위기
1빈곤위기
2빈곤위기
3빈곤위기
4빈곤위기
5빈곤위기
6빈곤위기
7출산가정
8어르신
12빈곤위기
13빈곤위기
14빈곤위기
15빈곤위기
16빈곤위기
17빈곤위기
18빈곤위기
20어르신
22어르신
24빈곤위기
30빈곤위기
31빈곤위기
32빈곤위기
33빈곤위기
34빈곤위기
35빈곤위기
36빈곤위기
37빈곤위기
38빈곤위기
39빈곤위기
40빈곤위기
......
64968빈곤위기
64969빈곤위기
64970빈곤위기
64971빈곤위기
64972빈곤위기
64973빈곤위기
64974양육가정
64975출산가정
64976출산가정
64977출산가정
64978양육가정
64979빈곤위기
64980출산가정
64981양육가정
64982양육가정
64983출산가정
64984출산가정
64985출산가정
64986출산가정
64988빈곤위기
64989빈곤위기
64990출산가정
64991출산가정
64992어르신
64993출산가정
64994출산가정
64995빈곤위기
64996빈곤위기
64997빈곤위기
64998빈곤위기

36952 rows × 1 columns

In [55]:
data_group_ct1 = data_group1.groupby(data_group1["업무구분"]).size().reset_index(name='여')
data_group_ct2 = data_group2.groupby(data_group2["업무구분"]).size().reset_index(name='남')
In [56]:
data_group_ct1
Out[56]:
업무구분
0034
1돌봄위기가정39
2빈곤위기25308
3빈곤위기,돌봄위기가정6
4빈곤위기,양육가정8
5빈곤위기,출산가정9
6양육가정62
7양육가정,돌봄위기가정1
8어르신8332
9어르신,돌봄위기가정1
10어르신,빈곤위기2403
11어르신,양육가정1
12어르신,출산가정1
13출산가정740
14출산가정,양육가정6
15출산가정,양육가정,돌봄위기가정1
In [57]:
df_sex = pd.merge(data_group_ct1,data_group_ct2,on="업무구분")
df_sex
Out[57]:
업무구분
003420
1돌봄위기가정3928
2빈곤위기2530819647
3빈곤위기,돌봄위기가정64
4빈곤위기,양육가정85
5빈곤위기,출산가정93
6양육가정6244
7어르신83326309
8어르신,돌봄위기가정14
9어르신,빈곤위기24031219
10어르신,출산가정11
11출산가정740763

??????드래그하니까 갑자기 엄청이쁘게나온다.


위에소스는 결국 저번 공부랑 똑같은건데 맨아래의 데이터를 만들기위해 사용하였다.

이제 pandas의 상관관계분석 함수인

Out[65]:
0.9993863256628628
를적용하니 위와같은 out 값을 얻었다.!!!




그런데 0.999 면 거의완벽한 상관관계에있다는건데 뭘의미하는지 하나도 모르겠고, 
상관관계 분석을 이렇게 사용하는게 아닌거같다.. 

데이터를 잘못만들었다고 판단하고 상관관계를 할만한 데이터를 어떻게 만들어야될까 생각해보고
데이터를 처음부터 다시 만들었다.


반응형

'Python > pandas' 카테고리의 다른 글

Python pandas - 상관관계 분석 -2  (0) 2018.11.06
Pandas 엑셀파일읽고 데이터 컨트롤  (0) 2018.10.17
Python Pandas 시작  (0) 2018.09.28