국비지원교육/교육일지

4주차 교육일지: SQL / Numpy, Pandas

민서타 2023. 8. 12. 12:09

1. 모델링: 복잡한 현실세계를 단순화 시켜 포현하는 것, 현실세계를 추상화, 단순화, 명확화 하여 데이터 모델로 표현

2. 모델링의 3가지 관점

  • 데이터 관점(어떤 데이터와 관련이 있는지)
  • 프로세스 관점(무엇을 해야 하는지)
  • 상관 관점(일의 방법에 따라 데이터는 어떻게 영향을 받고 있는지)

3. 데이터 모델이 제공하는 기능: 가시화, 명세화, 구조화된 틀 제공, 문서화, 다양한 관점 제공, 구체화된 표현방법

4. 프로젝트 생명주기에서의 데이터 모델링: 정보전략계획->분석->설계->개발->테스트->전환/이행

5. 데이터 모델링의 3 요소

  • 업무가 관여하는 어떤 것(Things) 
  • 어떤 것이 가지는 성격(Attributes) ->관계
  • 어떤 것 간의 관계(Relationships) ->속성

6. 정규화

  • 데이터를 결정하는 결정자에 의해 함수적 종속을 가지고 있는 일반 속성을 의존자로 하여 이상현상 제거
  • 한 테이블의 데이터 용량이 최소화되는 효과
  • 정규화된 테이블은 데이터 처리 시 속도가 빨라질 수도 느려질 수도 있음
  • 정규화된 데이터 모델은 조회 시에는 처리 조건에 따라 성능이 향상 혹은 저하
  • 정규화된 데이터 모델은 입력/수정/삭제 시 무조건 성능이 향상

7. 함수적 종속성: 데이터들이 어떤 기준값에 의해 종속되는 현상, 기준값을 결정자, 종속값을 종속자

8. 반정규화: 정규화된 엔터티, 속성, 관게에 대해 성능향상 등을 위해 중복, 통합, 분리 등을 수행하는 모델링 기법


Numpy 대표 명령어

  • np.shape(축의 크기)
  • np.ndim(축의 개수)
  • np.dtype(각 요소의 타입)
  • np.itemsize(각 요소의 타입의 바이트 크기)
  • np.size(전체 요소 개수)
  • np.zeros(0으로 구성) np.ones(1로), np.empty(초기화되지 않은 N차원 배열 생성)
  • np.arange: N 만큼 차이 나는 숫자 생성
  • np.linspace: N 등분한 숫자 생성
  • np.reshape(m.n): m,n 형식으로 출력
  • np.argmax: 모든 요소 중 최대값의 인덱스
  • np.cumsum: 모든 요소의 누적합
  • np.vstack: axis 0 기준 합치기
  • np.hstack: axis 1 기준 합치기
  • np.hsplit: 숫자 1개가 들어갈 경우 X개로 등분
  • np.hsplit: 리스트로 넣을 경우 axis=1 기준 인덱스로 데이터 분할
  • np.where: (조건식(bool값), True일 떄 return1, False일 때 return2) #결과값은 array로

Universial function(unfunc): ndarray 안에 있는 데이터 원소 별로 연산을 수행하는 함수

(다른 함수에 약간의 기능을 덧씌워 사용하는 래퍼함수와 비슷)


Pandas 대표 명령어

  • read_excel('경로명', sheet_name) # sheet_name None으로 설정 후 df.values() 키값 시트 이름, 벨류로 concat 가능
  • df.sort_values(by = '기준', ascending=False) #오름차순 내림차순 기준 설정
  • df.rename(columns = { 'k' : 'key'}) #열 이름 변경
  • df. sort_index, df.reset_index #인덱스 정렬 또는 초기화
  • df.loc['행 인덱스', '열 인덱스'] # 값 기준 검색, 논리형 bool값을 통한 비교 연산자값 확인 가능
  • df.iloc['인덱스 번호', '인덱스 번호'] # 인덱스 값 기준 검색
  • df.groupby(by = 'col')
  • concat과 merge 차이: concat(단순히 행 또는 열을 붙임), merge(엑셀의 vlookup처럼 특정 조건 기준 붙이기 가능)
  • pd.concat([df1, df2], axis= 0 or 1) #axis = 0 기본값, 밑에 붙임 / axis = 1 옆에 붙임
  • pd.merge(left_df, right_df, how = 'left', on = '열 이름') # how(left, right, inner, outer) 왼쪽, 오른쪽 기준, 교집합, 합집합
  • df.dropna(), df.fillna() # NA값 버리기, 채우기, inplace = TRUE 설정해야 원 데이터 반영   
  • pd.pivot_table(index = '행 위치 열', columns = '열 위치 열', values = '데이터로 사용할 열', aggfunc = '집계함수')
  • pd.read_html('경로명', match = '.+', header= None, index_col = None) # 
  • pd.mask(bool조건식, True일 때 반환값)
  • pd.cut(x(구간을 나눌 배열, 1차원), bins(정수, 순서의 배열), right(우측 경계를 포함할 지 여부), labels(왼쪽부터 이름))
반응형