본문 바로가기
Data/[SeSAC 성동1기 전Z전능 데이터 분석가]

[성동1기 전Z전능 데이터 분석가] Day 35

by MIN_JOON 2023. 12. 1.
  • 그래프
    • 데이터를 보기 쉽게 그림으로 표현
    • 추세와 경향성이 드러나 데이터의 특징을 쉽게 이해할 수 있음
    • 새로운 패턴 발견, 데이터의 특징을 잘 전달
    • 다양한 그래프가 존재(2차원, 3차원, 지도 그래프, 네트워크 그래프, 모션 차트 등등)
  • seaborn 패키지: 그래프를 만들 때 자주 사용되는 패키지로 코드가 쉽고 간결함
  • 산점도(scatter plot)
    • 데이터를 x축과 y축에 점으로 표현한 그래프
    • 나이와 소득처럼 연속값으로 된 두 변수의 관계를 표현할 때 사용
#산점도 만들기
#x축은 displ,y축은 hwy
sns.scatterplot(data=mpg,x='displ',y='hwy');

#x축 범위를 3~6,y축 범위를 10~30으로 제한
sns.scatterplot(data=mpg,x='displ',y='hwy')\
    .set(xlim=[3,6],ylim=[10,30]);
    
#drv별로 표식 색깔 바꾸기
# sns.scatterplot(data=mpg.query('manufacturer=="hyundai"'),x='displ',y='hwy',hue='drv');
sns.scatterplot(data=mpg,x='displ',y='hwy',hue='drv');
  • 막대그래프(bar chart)
    • 데이터의 크기를 막대의 길이로 표현
    • 집단 간의 차이를 표현할 때 사용
    • 빈도 막대 그래프: 여러 집단의 빈도를 비교
#평균 막대 그래프 만들기
#집단별 평균표 작성(seaborn에서 출력하기 위해서는 값이 변수에 담겨있어야함, as_index 필수)
df_mpg=mpg.groupby('drv',as_index=False)\
        .agg(mean_hwy=('hwy','mean'))
        
#막대그래프 그리기
sns.barplot(data=df_mpg,x='drv',y='mean_hwy');

#크기순 정렬하기 
#데이터 프레임 정렬
df_mpg=df_mpg.sort_values('mean_hwy',ascending=False)
sns.barplot(data=df_mpg, x = 'drv', y='mean_hwy')

#빈도 막대 그래프 만들기
#집단별 빈도표 만들기
df_mpg = mpg.groupby('drv',as_index=False)\
            .agg(n=('drv','count'))
            
#막대 그래프
sns.barplot(data=df_mpg,x='drv',y='n');

#countplot으로 빈도 막대 그래프 작성
sns.countplot(data=mpg,x='drv');

#막대 정렬하기
#4,f,r 순으로 막대 정렬
sns.countplot(data=mpg,x='drv',order=['4','f','r']);

#빈도가 높은 순으로 막대 정렬
sns.countplot(data=mpg,x='drv',order=mpg['drv'].value_counts().index);
  • 선 그래프(line chart)
    • 데이터를 선으로 표현
    • 시간에 따라 달라지는 데이터를 표현
    • 시계열 데이터: 일정 시간 간격을 두고 나열된 데이터
    • 시계열 그래프: 시계열 데이터를 선으로 표현
#시계열 그래프 만들기
#economics 데이터 불러오기
economics=pd.read_csv('economics.csv')
economics.head()

#그래프 그리기
sns.lineplot(data=economics,x='date',y='unemploy');

#x축에 연도 표시하기
#날짜 시간 타입 변수 만들기
economics['date2']=pd.to_datetime(economics['date'])
economics.info() #변수타입 확인

#연 추출
economics['date2'].dt.year
#월 추출
economics['date2'].dt.month
#일 추출
economics['date2'].dt.day

#연도 변수 추가
economics['year']=economics['date2'].dt.year

#x축에 연도 표시하기
sns.lineplot(data=economics,x='year',y='unemploy');

#신뢰구간 제거
sns.lineplot(data=economics,x='year',y='unemploy',errorbar=None);
  • 상자그림(box plot)
    • 데이터의 분포 또는 퍼져있는 형태를 직사각형 상자 모양으로 표현한 그래프
    • 데이터가 어떻게 분포하고 있는지 알 수 있다.
    • 평균값만 볼 때보다 데이터의 특징을 더 자세히 이해할 수 있다.
#상자그림 만들기
sns.boxplot(data=mpg, x='drv',y='hwy');

  • 데이터 분석 절차
    1. 변수 검토 및 전처리: 분석에 활용할 변수 전처리
      • 변수의 특징 파악, 이상치와 결측치 정제
      • 변수의 값을 다루기 편하게 바꾸기
    2. 변수 간 관계 분석
      • 데이터 요약 표,그래프 만들기
      • 분석결과 해석
  • 데이터 마이닝
    • 대량 데이터 세트의 처리 및 탐색을 위한 분석에 사용되는 방법
    • 데이터 마이닝 도구와 방법을 사용해 데이터에 숨겨진 패턴과 관계를 찾음
    • 원시 데이터 →실용적인 지식
    • 위 지식을 사용해 문제를 해결하고  비즈니스 의사 결정의 향후 영향을 분석하여 이윤을 증가
  • 데이터 마이닝 과정
    • 데이터→선정→목표데이터→사전처리→변형→데이터 마이닝→패턴→해석 및 평가→지식
  • Micro data 
    • 원인과 결과, 관련된 여러 변수들의 인과관계를 모형으로 만들어 검증
      1. 선행 연구 조사: 선행 연구를 통한 논문, 업계 전문가들의 노하우, 만연한 상식 등을 통해 해당 인과관계 모형 구조화
      2. 데이터 퀄리티: 타겟하는 특징을 포착하기 위한 데이터 퀄리티(resolution, sampling rate)
      3. 데이터 변형
    • 장점: 현상에 대한 역학적인 분석에 기반하는 논리가 탄탄함
    • 단점: 분석에 공수가 많이 들어가 실험이 제한적, 현상에 관여하는 변수가 많고 다양할수록 관계를 구조화하기 어렵고 검증에 많은 데이터나 실험이 필요함
  • Macro data
    • 실험군과 대조군을 나누어 적절한 실험을 설계
    • 선행연구, 데이터 퀄리티 확인은 micro data와 동일
    • 실험설계
      1. 지역,날씨 등 다른 변수들을 모두 같은 조건으로 통제(선택편향 제거)
      2. 개입집단과 대조집단 구분
      3. 각 샘플마다 데이터를 다양한 방식으로 변환 후 예측모델 적용
    • 장점: 데이터가 확보되어 있다면 시간 효율적
    • 단점: 많은 데이터 필요해 적용 조건이 까다롭고 편함의 유무를 완전히 제거했다고 보증하기 어려움
  • 적절한 방법: 보유한 데이터에 따라 문제의 복잡성에 따라 등등 방법이 달라짐