모두의 데이터 과학 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()함수로 전달.
웹 페이지에 있는 테이블을 클립보드로 복사해 일회용으로 추출 가능.
참고자료
'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 |
댓글