-
15주차 화 1128 (데이터_전처리기초)광주인력개발원 일일포스팅(메모장) 2023. 11. 28. 13:34728x90반응형
""" <판다스(pandas)> - 행렬 데이터를 처리하기 위한 다양한 함수를 지원하는 라이브러리 - 파일 읽기, 저장, 행렬데이터 처리, 기본시각화 등 지원 - 데이터 전처리 과정에서 주로 사용됨 <데이터 분석과정> 데이터 수집 > 데이터 전처리 > 데이터 가공(필요시 전처리) > 데이터 분석 탐색 / 시각화(필요시 전처리) > 필요시 모델 훈련(머신러닝 or 딥러닝) > 웹서비스 또는 분석보고서 * 일반적으로 책에서는 : 데이터수집 > 전처리 > 분석 > 시각화로 설명되고 있다. * 분석과정은 회사에 따라 다름. """
판다스 임포트!
import pandas as pd
""" <데이터 수집 시 확인 사> - 날짜 확인 : 기준일로 사용 - 범주형 데이터 확인 : 예로 남자 또는 여자와 같은 데이터(연령) - """
### 데이터 읽어들이기 ### 파일 위치 지정 file_path = "./files/sample_1.xlsx" ### 파일 데이터 추출하기 # - 첫번째 : 파일 지정(위치 포함) # - 두번째 : 컬럼명으로 사용할 행의 위치(디폴트 0) # - 세번째 : 행의 가장 밑에서부터 포함하지 않을 행의 갯수(디폴트 0) # - 네번째 : 가지고 올 열의 범위(A부터 C까지의 열) (디폴트 데이터가 있는 모든 열) sample_1 = pd.read_excel(file_path, header=1, skipfooter=2, usecols="A:C")
국적코드 성별 입국객수 0 A01 남성 106320 1 A01 여성 191436 2 A31 남성 319 3 A31 여성 42 4 A18 남성 158912 5 A18 여성 232943
### 데이터프레임 정보 확인하기 # - DataFrame 타입 : 행렬을 저장 관리하는 타입 # - 클래스 왼쪽에 있는 애들 보통은 파일 # - (중요) info()함수는 데이터의 결측치(nan, null) 데이터 확인 가능 # - RangeIndex : 전체 행(row)의 갯수 # - 전체 행의 갯수와 각 컬럼의 갯수가 안 맞으면 -> 결측 데이터가 존재한다는 의미 # - 컬럼과 행에는 눈에보이는 인덱스(인덱스 값)와 뒤쪽에 있는 인덱스(인덱스 번호)가있다. # - 인덱스 값을 (0 > 일)로 바꾸더라도 인덱스 번호는 0번이다. # - Dtype에서 object는 문자 / int는 숫자 sample_1.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 6 entries, 0 to 5 Data columns (total 3 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 국적코드 6 non-null object 1 성별 6 non-null object 2 입국객수 6 non-null int64 dtypes: int64(1), object(2) memory usage: 276.0+ bytes
위와 같이 데이터 타입과 행의 갯수 등 여러가지 정보를 알 수 있다.
### 데이터프레임 출력 # - 데이터 행 / 열이 많은 경우 -> 기본 상위 5개, 하위 5개를 추출해서 보여줌 # - 데이터 행 / 열의 갯수가 작으면 모두 보여줌 sample_1
국적코드 성별 입국객수 0 A01 남성 106320 1 A01 여성 191436 2 A31 남성 319 3 A31 여성 42 4 A18 남성 158912 5 A18 여성 232943
데이터가 어떤 형태인지 볼때 한줄만 꺼내서 볼 수 있다.
### head() : 상위 데이터 조회할 때 (기본 5개) sample_1.head() sample_1.head(1)
국적코드 성별 입국객수 0 A01 남성 106320
### tail() : 마지막 데이터 확인(기본 5개) sample_1.tail() sample_1.tail(1) 국적코드 성별 입국객수 5 A18 여성 232943
마지막 데이터 확인시
기초통계 데이터 확인하
### 기초통계 데이터 # - count : 데이터 행의 갯수 # - mean : 평균 # - std : 표준편차 # - min : 최소값 # - amx : 최대값 # 25%, 50%, 75% : 4분위수 데이터(50% -> 중앙값) # -> 4분위수 데이터를 이용해서 이상치(이상한) 데이터 확인합니다. # - 기초통계 데이터는 숫자값을 가지는 컬럼에 대해서만 확인 sample_1.describe()
입국객수 count 6.000000 mean 114995.333333 std 98105.752006 min 42.000000 25% 26819.250000 50% 132616.000000 75% 183305.000000 max 232943.000000
데이터 조회하기 ### 국적코드 데이터 조회하기 sample_1["국적코드"] 0 A01 1 A01 2 A31 3 A31 4 A18 5 A18 Name: 국적코드, dtype: object
### 타입 확인하기 # Series : 튜플과 모양이 같습니다.(사용법도 동일합니다.) # {"국적코드" : (데이터, 데이터, ...)} type(sample_1["국적코드"]) pandas.core.series.Series
### 성별 데이터 조회하기 sample_1["성별"] 0 남성 1 여성 2 남성 3 여성 4 남성 5 여성 Name: 성별, dtype: object
sample_1[["성별"]] 성별 0 남성 1 여성 2 남성 3 여성 4 남성 5 여성
2차원 데이터로 나오며 타입이
pandas.core.frame.DataFrame
DataFrame으로 바뀐다.
sample_1[["국적코드","성별"]] 국적코드 성별 0 A01 남성 1 A01 여성 2 A31 남성 3 A31 여성 4 A18 남성 5 A18 여성
sample_1 국적코드 성별 입국객수 0 A01 남성 106320 1 A01 여성 191436 2 A31 남성 319 3 A31 여성 42 4 A18 남성 158912 5 A18 여성 232943
기준년월 컬럼 추가하기 ### 2019-11 값을 추가하기 sample_1["기준년월"] = '2019-11' sample_1 국적코드 성별 입국객수 기준년월 0 A01 남성 106320 2019-11 1 A01 여성 191436 2019-11 2 A31 남성 319 2019-11 3 A31 여성 42 2019-11 4 A18 남성 158912 2019-11 5 A18 여성 232943 2019-11
데이터 필터링하기 ### 성별 중에 여성인 데이터만 추출하기 condition = sample_1["성별"] == "여성" condition 0 False 1 True 2 False 3 True 4 False 5 True Name: 성별, dtype: bool
sample_1[condition == False] 국적코드 성별 입국객수 기준년월 0 A01 남성 106320 2019-11 2 A31 남성 319 2019-11 4 A18 남성 158912 2019-11
sample_1[(sample_1["성별"] == "여성") == True] 국적코드 성별 입국객수 기준년월 1 A01 여성 191436 2019-11 3 A31 여성 42 2019-11 5 A18 여성 232943 2019-11
### 객체 주소 전달 방식 # - 둘다 같은 곳을 바라봅니다. sample_2 = sample_1
### copy() : 메모리 복제방식 (신규로 동일하게 생성됨) # - 신규로 만들어진 메모리 주소를 받아옴 (서로 영향 안 받음) sample_2 = sample_1.copy()
728x90반응형'광주인력개발원 일일포스팅(메모장)' 카테고리의 다른 글
15주차 화 1128(테이블 저장하기) (0) 2023.11.28 15주차 화 1128(데이터_수집하기) (4) 2023.11.28 14주차 금 1124(데이터 분석, 조인관련..) (2) 2023.11.24 14주차 목 1123(데이터 분석, 조인(Join) (2) 2023.11.23 14주차 수 1122(데이터분석, 그룹함수 와 집합함수) (1) 2023.11.22