본문 바로가기
빅데이터전문가양성과정

데이터 분석 (7일차)

by HoneyIT 2020. 10. 26.

 

df2d.loc[:, '평균'] = df2d.iloc[:, :8].mean(axis=1)

위의 데이터중 모든 열의 7행까지 가로방향의 평균을 구한다.

 

df2d.sort_values(by=["평균"], ascending=True)

평균 값을 기준으로 ascending을 이용하여 오름차순으로 바꾼다.

 

 

순위 구하기

  • first : DataFrame에 같은 값이 존재하는 경우 저장되어 있는 순서대로 순위를 지정 (값 : 100, 85, 85, 70 ==> 순위 : 1, 2, 3, 4)
    • 주의 : first 방법은 숫자 타입만 가능, numeric_only=True도 같이 설정해야 함
  • min : 중복 값이 있는 만큼 순위를 건너뛰고 표시 (값 : 100, 85, 85, 70 ==> 순위 : 1, 2, 2, 4)
  • max : (값 : 100, 85, 85, 70 ==> 순위 : 1, 3, 3, 4)
r = df2d['평균'].rank(method='min', ascending=False).astype('int32')
df2d.loc[:, '순위'] = r

평균을 기준으로 순위를 매긴다.

순위라는 컬럼을 생성하고 모든 행에 적용한다.

 

 

합계와 평균 구하기

df2d.loc[:, '월별합계'] = df2d.sum(axis=1)
imsi = df2d.iloc[:, :8]
df2d.loc[:, '월별평균']=imsi.mean(axis=1)

다음과 같이 합계와 평균을 구할 수 있다.

 

df2d.mean(axis=1, skipna=False) # NaN을 제외하지 않음

skipna를 통해 NaN을 제외하거나 제외하지 않을 수 있다.

 

 

요약정보

  • count : NaN 값을 제외한 값의 개수를 반환
  • describe : Series나 DataFrame의 각 칼럼에 대한 요약 통계를 계산
  • min, max : 최솟값과 최댓값을 계산
  • argmin, argmax : 각각 최솟값과 최댓값을 가지고 있는 색인의 위치를 정수로 반환
  • idmin, idmax : 각각 최솟값과 최댓값을 가지고 있는 색인의 값을 반환
  • quantile : 0부터 1까지의 분위수를 계산
  • mean : 평균 계산
  • median : 중앙값을 계산
  • mad : 평균값에서 평균 절대편차를 계산
  • prod : 모든 값의 곱을 계산
  • var : 표본 분산 값을 계산
  • std : 표본 표준편차 값을 계산
  • cumsum : 누적합을 계산
  • cumprod : 누적곱을 계산
  • diff : 1차 산술차를 계산, 시계열 데이터 처리 시 유용

 

상관관계와 공분산


 

공분산과 상관계수
공분산은 두 변수간의 단위로 인한 모호한 크기량을 갖고 있는데, 이를 표준화한 것이 '상관계수'이다.

 

상관관계

  • 두 쌍의 인자(X, Y)가 필요
  • X가 증감할 때 Y가 얼마나 증감하는가를 나타내는 관계
  • -1과 1 사이의 상관계수를 통해 함께 늘어나는지 아니면 반대로 줄어드는지를 설명할 수 있음
  • -1과 1에 가까울수록 상관성이 강하고, 0에 가까울수록 상관성이 약함

 

 

import numpy as np
import pandas as pd
import pandas_datareader.data as web
all_data = {ticker : web.get_data_yahoo(ticker) for ticker in ['AAPL', 'IBM', 'MSFT', 'GOOG']}
price = pd.DataFrame({ticker : data['Adj Close'] for ticker, data in all_data.items()})
returns= price.pct_change() # (퍼센트 변화율 계산)

야후에서 제공하는 기업 코드로 주가와 시가총액을 알 수 있다.

 

# 4개 회사의 주식 수익율 사이의 피어슨 상관분석
returns.corr(method='pearson')

 

 

이 회사 간의 상관관계를 분석한다.

예를 들어 apple과 IBM 사이의 관계는 큰 영향을 가지고 있지 않다고 볼 수 있다.

 

 

returns['MSFT'].cov(returns['IBM'])

다음과 같이 두 회사 간의 분석을 볼 수 있다.

 

 

삼성과 엘지의 주가 상관관계 분석


 

import numpy as np
import pandas as pd
import pandas_datareader.data as web
import matplotlib.pyplot as plt
samsungEI=web.get_data_yahoo('005930.KS', start='2017-01-01', end='2020-10-22')
lgEI=web.get_data_yahoo('066570.KS', start='2017-01-01', end='2020-10-22')
samsungEI

 

 

삼성과 엘지의 주가 데이터를 가져옵니다.

 

 

import matplotlib.pyplot as plt

plt.title('Samsung & LG')
plt.plot(samsungEI.loc[:,'Close'], label='samsung')
plt.plot(lgEI.loc[:, 'Close'], label='lg')
plt.legend()

plt.show()

 

 

비교하기 쉽게 시각화하여 나타냈습니다.

 

 

samsungEI['Close'].cov(lgEI['Close'])

 

 

다음과 같은 수치가 나옵니다.

두 기업간의 관계가 낮은 것을 확인할 수 있었습니다.