전처리 기초
1. 판다스(pandas) : 파이썬, 라이브러리
- 파이썬 사용하는 이유 : 가볍고 직관적임, 웹프로그래밍이 가능하다. 데이터 처리 라이브러리가 잘 만들어져 있다.
2. 데이터 분석과정
3. 데이터 전처리
판다스
판다스(pandas) 🐾
- 행렬 데이터를 처리하기 위한 다양한 함수를 지원하는 라이브러리
- 파일 읽기, 저장, 행렬데이터 처리, 기본시각화 등 지원
- 데이터 전처리 과정에서 주로 사용
데이터 분석과정
데이터 분석과정 🐾
- 데이터 수집 > 데이터 전처리 > 데이터 가공(필요시 전처리) > 데이터 분석 탐색/시각화(필요시 전처리)
> 필요시 모델 훈련(머신러닝 or 딥러닝) > 웹서비스 또는 분석보고서
- 일반적으로 책에서는 " 데이터수집 > 전처리 > 분석 > 시각화 " 로 설명되고 있음
- 분석과정은 회사에 따라 다름
데이터 수집 시 확인사항
데이터 수집 시 확인 사항 🐾
- 날짜 확인 : 기준일로 사용 ('년월일 시분' 까지 - 최소한 '년월'은 있어야 한다.)
- 범주형 데이터 확인 : 예로 남자 또는 여자와 같은 데이터 / 연령대
< pandas 준비 >
1. 폴더 생성
"C:\Users\user\gj_202311\04_데이터_처리_시각화\01_데이터_전처리기초"
2. pandas 라이브러리 있는지 확인(prompt)
(base) C:\Users\user>conda env list
(base) C:\Users\user>conda activate gj_env_01
(gj_env_01) C:\Users\user>pip list
리스트 목록(pip로 설치한 라이브러리 목록)
(gj_env_01) C:\Users\user>conda list
3. pandas 있는지 확인후 주피터노트북 실행
(gj_env_01) C:\Users\user> jupyter notebook
4. 주피터 노트북
4-1. pandas 라이브러리 import 하기(pandas 별칭 보통 pd로 약속)
import pandas as pd
4-2. 데이터(xlsx) 다운로드 - 구글드라이브 file
(경로 : "C:\Users\user\gj_202311\04_데이터_처리_시각화\01_데이터_전처리기초\files")
4-3. 데이터 분석
컬럼 : 국적코드, 성별, 입국객수, 기준년
파이썬에서는 1행이 0부터 시작!!
4-4. 노란색 데이터만 가져오기
< pandas 사용 >
1. 파일 위치 지정 (절대경로, 상대경로)
- 보통 상대경로를 쓰는게 좋음(파일 위치 변경될 수 있으므로)
file_path = "./files/sample_1.xlsx"
2. 파일 데이터 추출하기
- pd.read_ '탭키' : pd.read_csv(텍스트파일, 가볍고 용량 적음), pd.read_excel(엑셀파일), pd.read_json
위 3개 제일 많이 사용
- 첫번째 : 파일 지정(위치 포함)
- 두번째 : 컬럼명으로 사용할 행의 위치(디폴트 0)
- 세번째 : 행의 가장 밑에서부터 포함하지 않을 행의 갯수(디폴트 0)
- 네번째 : 가지고 올 열의 범위(A:C)(디폴트 데이터가 있는 모든 열)
sample_1 = pd.read_excel(file_path,
header=1,
skipfooter=2,
usecols="A:C")
3. 데이터프레임 정보 확인하기
- DataFrame 타입 : 행렬을 저장 관리하는 타입 (파이썬에서 대부분 대문자로 시작 : class객체)
- class 왼쪽 : 보통 파일명(pandas 안에 core 안에 frame 안에 ...)
- RangeIndex : 전체 행(row)의 갯수
- Dtype(데이터타입) : object(문자), int64(숫자), float(실수)
- 눈에 보이는 인덱스 값 -> 수정가능 // 따로 메모리공간 인덱스가 있음 (중요)
- info()함수는 데이터의 결측치(nan, null)데이터 확인 가능 (중요)
- 전체 행의 갯수(RangeIndex: 6)와 각 컬럼의 갯수(0 to 5)가 안맞으면 -> 결측 데이터가 존재한다는 의미
- non-Null : null이 아닌 데이터의 갯수
sample_1.info()
![](https://blog.kakaocdn.net/dn/0F9jL/btsA0bFua2L/kBlcqCFV4yvsV77IjEGD4k/img.png)
4. 데이터프레임 출력
- 데이터 행/열이 많은 경우 : 기본 상위 5개, 하위 5개를 추출해서 보여줌
- 데이터 행/열의 갯수가 적으면 모두 보여줌
- 가장 왼쪽 : 인덱스 번호(행의 위치값)
sample_1
![](https://blog.kakaocdn.net/dn/ceVJyV/btsA20DwMJL/rmIOHCdzlHTvRYxn0kMzTk/img.png)
5. head(), tail()
- head() : 상위 데이터 조회할때 원하는 개수의 데이터 뽑는 함수 , 보통 1을 많이 사용, 인덱스 0부터 시작
- tail() : 마지막 데이터부터 원하는 개수의 데이터 뽑는 함수(디폴트 5개 조회) , 보통 1을 많이 사용, 인덱스 1부터 시작
sample_1.head()
![](https://blog.kakaocdn.net/dn/cyO1sL/btsA2uLuDoj/U4vkdTtMfG2qTrbZ8sKSe1/img.png)
sample_1.tail()
![](https://blog.kakaocdn.net/dn/uNjUC/btsA1eovPGS/HPwS0irndS2SgcprrXqocK/img.png)
6. describe()
- describe함수: 기초통계 데이터
- count : 행의 갯수
- mean : 평균
- std : 표준편차
- min : 최소값
- max : 최대값
- 25%, 50%, 75% : 4분위수 데이터(50% -> 중앙)
-> 4분위수 데이터를 이용해서 이상치(이상한)데이터 확인한다. ;극상치데이터?
- 기초통계 데이터는 숫자값을 가지는 컬럼에 대해서만 확인
sample_1.describe()
![](https://blog.kakaocdn.net/dn/cKUKy6/btsAYEnvqiC/lvPq31BlN5mhD0Tl1X3K91/img.png)
7. 데이터 조회하기
- 딕셔너리 형태로 조회하면 된다. ("키를 줄테니 값을 다오")
- 1차원 조회 : [ ] → 튜플 형태로
sample_1["국적코드"]
※ Series 타입 : 튜플과 모양()이 같다.(사용법도 동일)
※ {"국적코드" : (데이터, 데이터, ...)}
![](https://blog.kakaocdn.net/dn/nIViw/btsAVpEgB28/IYeKeBAA8jGrDqL7HkxkNK/img.png)
- 2차원 조회 : [[ ]] → 행열 형태로
sample_1[["국적코드", "성별"]]
※ DataFrame 타입
※ 2개이상 조회시 무조건 2차원[[]]으로 해야함
![](https://blog.kakaocdn.net/dn/TA2lI/btsAXhspwXq/srvQLgkghnxc08vw8j8X2K/img.png)
8. 컬럼 추가하기
- 기준년월 컬럼 주가하기 (값 : 2019-11)
- 딕셔너리 값 추가와 동일
sample_1["기준년월"] = '2019-11'
sample_1
![](https://blog.kakaocdn.net/dn/bcAptT/btsA3ASd810/kaHg8qfmuzWhoNXzvZLdgK/img.png)
9. 데이터 필터링 하기
- 성별 중에 여성인 데이터만 추출하기
- 비교연산으로 true인 정보들의 인덱스를 체크하고 해당 인덱스 번호의 행을 조회한다.
condition = sample_1["성별"] == "여성"
condition
![](https://blog.kakaocdn.net/dn/bjWQuY/btsA5fNxvRP/pcPLfQEyi9wnbkEykHKhh1/img.png)
- 디폴트값 True 조회
sample_1[condition]
![](https://blog.kakaocdn.net/dn/WoKRd/btsAUKhqour/yFTH9GxzeNgwu107ULGSm1/img.png)
- False 조회
sample_1[condition == False]
![](https://blog.kakaocdn.net/dn/csE2YH/btsA0amfCCz/Mkdaa3NgLmobzuiKPIY4V1/img.png)
- 한 줄로 조회하기
sample_1[(sample_1["성별"] == "여성") == True]
![](https://blog.kakaocdn.net/dn/rPKhw/btsA5fzZDoI/K9Tnm0vLKEqQzyVS92GV11/img.png)
10. 객체 주소 전달 방식
- sample_2 = sample_1 : 둘 다 같은 곳을 바라본다(주소 참조), 데이터가 변경되면 변경된 내용을 같이 본다.
11. copy()
- copy() : 메모리 복제방식(신규로 동일하게 생성됨)
- 신규로 만들어진 메모리 주소를 받아옴(서로 영향 받지 않음)
- 데이터 처리시 copy해야 원본이 훼손되지 않음!!
sample_3 = sample_1.copy()
✨경로 알아보기
절대경로, 상대경로
1. 절대경로(Absolute Path) : 파일이나 디렉토리의 전체 경로
- 윈도우 시스템 : C:\Users\사용자명\문서\파일.txt
- 리눅스/유닉스 시스템 : /home/사용자명/문서/파일.txt
2. 상대경로(Relative Path) : 현재 작업 중인 디렉토리를 기준으로 경로를 표현
- 문서/파일.txt
3. 웹경로
- 웹에서는 주로 URL을 사용하여 경로를 지정
- URL : 리소스(예: 웹 페이지, 이미지, 파일)의 위치를 가리키는 주소
- 도메인 : 해당 리소스가 위치한 서버의 주소
www.example.com
- 루트경로 (Root Path) : 도메인의 최상위 디렉토리
/
- 웹 경로를 작성할 때는 도메인과 루트경로를 함께 사용하여 해당 리소스의 정확한 위치를 지정한다.
4. ' ./ ' VS ' / '
- ./ (현재 디렉토리) : 현재 작업 중인 디렉토리
- / (루트 디렉토리) : 루트 디렉토리, 최상위 디렉토리부터 시작함을 의미(상대경로에서)
'Back-End > 데이터베이스' 카테고리의 다른 글
[DB] 데이터베이스 테이블에 저장하기, 설계하기 (DB 연결, 저장, 자원반환) (2) | 2023.11.28 |
---|---|
[DB] 데이터 수집하기 (0) | 2023.11.28 |
[DB]데이터베이스(MariaDB) - 함수, 뷰(view), 프로시저(procedure) (10) | 2023.11.27 |
[DB]데이터베이스 그룹함수 - WITH ROLLUP, CUBE, GROUPING SETS (5) | 2023.11.27 |
[DB] 데이터베이스 - self Join, outer Join, union, exists (1) | 2023.11.24 |