판다스(Pandas)
- 행렬 데이터를 처리하기 위한 다양한 함수를 지원하는 라이브러리
- 파일 읽기, 저장, 행렬데이터 처리, 기본 시각화 등 지원
- 데이터 전처리 과정에서 주로 사용됨
데이터 분석과정
- 데이터 수집 > 데이터 전처리 > 데이터 가공(필요시 전처리) > 데이터 분석 탐색/시각화(필요시 전처리) > 필요시 모델 훈련(머신러닝 or 딥러닝) > 웹서비스 또는 분석 보고서
- 책에 나온 일반적인 과정 : 데이터수집 > 전처리 > 분석 > 시각화로 설명되고 있다.
- 분석과정은 회사에 따라 다르다.
판다스(Pandas) 설치
- Anaconda Prompt에서 pip list로 pandas 설치 확인

- jupyter notebook에서 import
import pandas as pd
- 사용되는 데이터 파일 - 노란색 부분

컬럼 : 국적코드, 성별, 입국객수, 전년동기
행은 0행 부터 시작한다.
즉, 노란색 부분을 추출하려면 A열에서 C열, 1행에서 7행만 추출한다.
데이터 수집 시 확인 사항
- 날짜 확인 : 기준일로 사용
- 년월일시분이 나타나 있는게 좋다.|
- 최소한 년월까지는 있어야 한다. 최소 12개의 데이터를 확보할 수 있기 때문이다. - 범주형 데이터 확인 : 예로 남자 또는 여자와 같은 데이터
- 범주형 데이터가 많은 데이터가 좋다. 비교대상이 많아 지기 때문이다.
- 비교대상이 많아지면 데이터로 보여줄 수 있는게 많아진다
데이터 읽어오기
- 파일 위치 지정
- 상대경로로 지정한다.
file_path = "./files/sample_1.xlsx"
- 피일 데이터 추출하기
- file_path : 파일지정(위치 포함)
- header : 칼럼명으로 사용할 행의 위치(default - 0)
- skipfooter : 행의 가장 밑에서부터 포함하지 않을 행의 갯수(default - 0)
- usecols : 가지고 올 열의 범위(A분터 C까지의 열)(default - data가 있는 모든 열)
sample_1 = pd.read_excel(file_path,
header=1,
skipfooter=2,
usecols="A:C")

- csv, excel, json많이 사용
- csv는 순수한 text 파일로 처리 과정이 따로 안들어가서 가볍다. 즉, 용량을 더 많이 담을 수 있다.
- excel 파일 자체에 다양한 처리 과정이 같이 들어가기 때문에 무겁다.
- 데이터 조회하기
sample_1

- DataFrame 정보 확인하기
- DataFrame 타입 : 행렬을 저장 관리하는 타입
- info()함수는 데이터의 결측치(nan,null) 데이터 확인 가능
- RangeIndex : 전체 행(row)의 갯수 0 to 5 총 6개
- 전체 행의 갯수와 각 컬럼의 갯수가 안맞으면 결측 데이터가 존재한다는 의미.
sample_1.info()

# Non-Null = not null null이 아닌 데이터의 갯수
# Dtype = 데이터 타입
# object 문자열
# int 숫자
0 to 5 총 6개
- 데이터프레임 출력
- 데이터 행/열이 많은 경우 -> 기본 상위 5개, 하위 5개를 추출해서 보여줌
- 데이터 행/열의 갯수가 작으면 모두 보여줌 - head() : 상위 데이터 조회
- 상위 5개
sample_1.head()
- 상위 1개
sample_1.head(1)

- tail() : 마지막 데이터 조회
- default : 5개
- 하위 5개
sample_1.tail()
- 하위 1개
sample_1.tail(1)

- 기초 통계 데이터
sample_1.describe()

- count : 데이터 행의 갯수
- mean : 데이터 평균
- std : 표준편차
- min : 최솟값
- max : 최댓값
- 25%, 50%(중앙값), 75% : 4분위수 데이터
→ 4분위수 데이터를 이용해서 이상치(이상한) 데이터 확인
- 기초통계 데이터는 숫자값을 가지는 컬럼에 대해서만 확인
데이터 조회하기
- key 입력하고 value 받아오기
- 국적코드 데이터 조회하기
sample_1["국적코드"]

- dtype: object
→ 데이터 하나하나의 타입이 object이다.
- 타입 확인
- 데이터 전체의 타입
type(sample_1["국적코드"])

- Series : 튜플과 모양이 같다. (사용법도 동일)
- {"국적코드" : (데이터, 데이터, ...)}
- 2차원 행렬 형태로 조회
sample_1[["국적코드"]]

type(sample_1[["국적코드"]])

- [[ ]] : 2차원의 행렬인 DataFrame 타입
- 국적코드와 성별 모두 조회하기
- 컬럼 2개이상 조회시 [[ ]] 2차원 행렬 형태로 조회해야함
sample_1[["국적코드","성별"]]

기준년월 컬럼 추가하기
- 2019-11 값을 추가하기
sample_1["기준년월"] = '2019-11'
sample_1

데이터 필터링 하기
- 필터링 : 조건에 맞는 값 조회하기
- 성별 중에 여성인 데이터만 추출하기
condition = sample_1["성별"] == "여성"
condition

- default 값은 True
sample_1[condition == False]

- 한 줄로 조회하기
sample_1[(sample_1["성별"] == "여성") == True]

- 객체 주소 전달 방식
- 둘다 같은 곳을 바라 본다
- sample_1이 바뀌면 sample_2가 바뀌고 sample_2가 바뀌면 sample_1이 바뀜
sample_2 = sample_1
- copy()
- 메모리 복제방식 (신규로 동일하게 생성 됨)
- 신규로 만들어진 메모리 주소를 받아옴 (서로 영향 안받음)
- 주소를 넣는 방식이 아니라 메모리를 복제하는 방식
sample_2 = sample_1.copy()
'Digital Boot > Database' 카테고리의 다른 글
[Data Wrangling] 데이터베이스 테이블에 저장하기 (0) | 2023.11.28 |
---|---|
[Data Wrangling] 데이터 수집하기 (0) | 2023.11.28 |
[Database][SQL] 사용자 정의 함수 / VIEW / Procedure / 저장 모듈 (1) | 2023.11.27 |
[Database][SQL] UNION / UNION ALL / EXISTS / UPDATE (2) | 2023.11.24 |
[Database][SQL] Self Join / Outer Join (0) | 2023.11.24 |