본문 바로가기
IT Basic/Data

[Data] 6장, 데이터 시리즈와 프레임 다루기

by HouseDust 2022. 7. 5.
반응형
 

모두의 데이터 과학 with 파이썬 - 교보문고

수집 정리 탐구 예측 가치로 배우는 기초 데이터 과학 | 누구나 파이썬으로 데이터를 분석하고 시각화할 수 있다! UNIT 1~12 | 데이터 과학의 개념과 파이썬 핵심 배우기데이터 과학이 무엇인지 개

www.kyobobook.co.kr

제 6장, 데이터 시리즈와 프레임 다루기

 

Pandas 데이터 구조

사칙 연산자

모양과 구조가 같은 데이터 프레임, 데이터 프레임 열과 시리즈, 모양이 같은 시리즈를 결합

모든 사칙 연산자는 인덱스를 보존한다. - 데이터 정렬(data alignment)


 

데이터 모양 바꾸기

사칙 연산자

모양과 구조가 같은 데이터 프레임, 데이터 프레임 열과 시리즈, 모양이 같은 시리즈를 결합

모든 사칙 연산자는 인덱스를 보존한다. - 데이터 정렬(data alignment)


 

데이터 누락 다루기

사칙 연산자

모양과 구조가 같은 데이터 프레임, 데이터 프레임 열과 시리즈, 모양이 같은 시리즈를 결합

모든 사칙 연산자는 인덱스를 보존한다. - 데이터 정렬(data alignment)


 

데이터 합치기

사칙 연산자

모양과 구조가 같은 데이터 프레임, 데이터 프레임 열과 시리즈, 모양이 같은 시리즈를 결합

모든 사칙 연산자는 인덱스를 보존한다. - 데이터 정렬(data alignment)


 

데이터 정렬하기

사칙 연산자

모양과 구조가 같은 데이터 프레임, 데이터 프레임 열과 시리즈, 모양이 같은 시리즈를 결합

모든 사칙 연산자는 인덱스를 보존한다. - 데이터 정렬(data alignment)


 

Pandas 파일 입출력

데이터 변환

사칙 연산자

모양과 구조가 같은 데이터 프레임, 데이터 프레임 열과 시리즈, 모양이 같은 시리즈를 결합

모든 사칙 연산자는 인덱스를 보존한다. - 데이터 정렬(data alignment)

 

데이터 집계

'분리' - '적용' - '결합' 의 3단계

데이터 집계의 두가지 방법

1. 그룹화 : groupby()

  • count() : 개수
  • sum() : 합계
  • mean() : 평균
  • median() : 중앙값
  • std() : 분산
  • var() : 표준편차(자료의 분산 정도를 나타내는 수치)
  • min() : 최솟값
  • max() : 최댓값
  • prod() : 수치 행들의 곱셈
  • first() : 첫번째행
  • last() : 마지막행

인덱스를 리셋하여 새로운 열로 데이터를 묶는(grouping) 방법 ↓

data_noidx = data.reset_index()
sum_data = data_noidx.groupby("새로운 열 이름").sum()​

데이터 분리 시 2개 이상의 열을 사용하면, 자동으로 멀티 인덱스가 생성된다.

for 루프를 사용하여 그룹별 내용에 접근할 수 있다 ↓

for year, year_frame in data_noidx.groupby("Year"):
    year 에 접근
    year_frame 에 접근

 

2. 카테고리화 : cut()

이산화(discretization) : 히스토그램이나 머신 러닝을 하려고 연속적인 변수를 이산(카테고리) 변수로 변환하는 것

cur()함수는 첫 번째 파라미터로 넘긴 배열이나 시리즈를 반열린 구간(bin) 카테고리로 분리한다. 두 번째 파라미터는 크기가 같은 구간 개수나 구간 경계 리스트다.

  • labels() : cut()에서 자신만의 카테고리 레이블을 만들고 싶을 때 사용하는 옵셔널 파라미터
  • qcut() : 구간 크기가 아닌 분위수(quantile)를 기준으로 작동
  • get_dummies() : 배열, 시리즈, 데이터 프레임을 원본 객체와 같은 인덱스와 더미 변수를 표현하는 열을 가진 또 다른 데이터 프레임으로 변환
  • columns() : get_dummies()에서 객체가 데이터 프레임일 때 사용하는 옵셔널 파라미터

 

매핑(Mapping)

데이터 변환의 가장 일반적인 형태

map() 함수는 시리즈를 받아 모든 항목에 대해 지정한 함수를 적용하는 것.

lamda 식을 사용할 수도 있다.

lambda "전달받을 변수":"처리할 내용"

map은 많이 비효율 적이라서, 지양한다.

 

ex) 주 이름의 앞 3글자만 따서 대문자로 변환한 short name 값을 추출하고자 할 때(Alabama -> ALA) ↓

state_short_name = states["State"].map(lambda x:x[:3].upper())​

 

교차집계(Cross-tabulation)

crosstab() : 그룹별 빈도를 산출하고 다른 두 카테고리 변수를 표현하는 행과 열로 된 데이터 프레임을 반환한다.

margins=True 옵셔널 파라미터를 사용하여 행과 열의 소계도 계산할 수 있다.


 

Pandas 파일 입출력

pandas에서 제공하는 기능

  • 자동 인덱싱 및 열 이름 추출
  • 데이터 타입 추론, 데이터 변환, 결측치 탐지
  • 날짜 및 시간 파싱
  • 불필요한 데이터 제거
  • 데이터 묶기

 

read_csv() 함수 : 지정된 파일에서 데이터 프레임을 읽어온다.

 

- 주요 옵셔널 파라미터

  • sep, delimiter : 열 구분자. (정규 표현식도 인자로 처리할 수 있다)
  • header : 열로 사용할 행 넘버. 별도의 열 이름 리스트가 있다면 None 전달
  • index_col : 인덱스로 사용할 열 이름. False로 전달 시 기본 수치형 인덱스 자동 생성
  • skiprows : 파일에서 생략해야 할 첫 n번째 행이나 행 넘버 리스트
  • thousands : 큰 숫자에서 천 단위 구분을 하는 데 사용된 문자
  • names : 열 이름 리스트
  • na_values : 결측치로서 처리할 문자열이나 문자열 리스트. 열마다 다른 문자열 사용 가능({열이름 : 문자열, ...})

 

chunksize(줄 수) : read_csv()에 파라미터로 넘기면, 데이터를 n줄씩 묶어 불러올 수 있다.

한 번에 다 읽어오기에 부담스러운 경우에 사용한다.

 

read_json() 함수 : JSON 파일에서 데이터 프레임을 읽어온다.

JSON은 계층적 구조이기 때문에 항상 가능하지는 않다.

 

read_fwf() : 고정폭 파일에서 데이터 프레임을 읽어온다.

colspecs(열의 시작과 끝+1 위치 값으로 된 튜플의 리스트)나 widths(열 폭의 리스트)를 사용한다.

 

read_clipboard() : 시스템 클립보드에서 텍스트를 읽고 read_table()함수로 전달.

웹 페이지에 있는 테이블을 클립보드로 복사해 일회용으로 추출 가능.



참고자료

드미트리 지노비에프, 『모두의 데이터과학 with 파이썬』, 황준식, 길벗, 119-174p

반응형

'IT Basic > Data' 카테고리의 다른 글

[DB] 분산을 고려한 MySQL 운용  (0) 2023.01.30
[Data] 8장, 플로팅하기  (0) 2022.07.06
[DB] 3장, 관계형 데이터 모델  (0) 2022.04.20
[DB] 2장, 데이터베이스 시스템  (0) 2022.04.20
[DB] 1장, 데이터베이스의 개념  (0) 2022.04.20

댓글