데이터 불러오기
./
: 현재 경로 위치../
: 현재 경로 위치에서 한단계 내려가기
- os
import os
: 운영체제에서 제공하는 기능을 사용할 수 있게 해주는 라이브러리
os.getcwd()
: 현재 위치 확인하기os.listdir()
: 해당 위치에 있는 모든 폴더 및 파일 리스트로 읽어들이기
- pandas
import pandas as pd
: 행렬 데이터를 처리하기 위한 함수가 들어있는 라이브러리
pd.read_excel()
: excel 파일 데이터프레임으로 읽어들이기- header : 열 인덱스가 있는 행 번호 지정
- skipfooter : 가장 밑에서부터 제외하고자 하는 행의 갯수 입력
- usecols : 읽어들일 열의 범위. "A:E"와 같이 지정 가능
- sheet_name : 시트가 여러개 있을 때 불러올 시트 지정. 번호 또는 시트 이름으로 불러오기
pd.read_csv()
: csv 파일 데이터프레임으로 읽어들이기- txt 파일도 읽어들일 수 있음. 구분자는 sep 속성으로 알려줌
- 유니코드 에러 시 함수 안에 encoding="euc-kr" 또는 encoding="utf-8"
pd.read_json()
: json 파일 데이터프레임으로 읽어들이기
- json
import json
: json 파일 처리를 위한 라이브러리
json.load(open())
: json 파일 읽어들이기- 유니코드 에러 시 open() 함수 안에 encoding="euc-kr" 또는 encoding="utf-8"
데이터 생성하기
pd.DataFrame()
: 비어있는 데이터프레임 변수 생성- index : 인덱스 지정
- columns : 컬럼명 지정
- dtype : 데이터 타입 지정. 데이터프레임 전체에 적용됨
pd.DataFrame({ : []})
: 딕셔너리 데이터로 데이터프레임 생성pd.DataFrame([])
: 하나의 리스트를 한 행으로 하는 데이터프레임 생성
데이터 정보 확인
- 기본 정보
info()
: DataFrame 클래스 안 정보를 확인하는 함수
- RangeIndex : 전체 행의 갯수
- entries : 행 인덱스 번호의 범위
- Non-Null Count : Null이 아닌 갯수
⭐ 각 컬럼의 결측치 확인용으로 사용
- Dtype : Data Type을 의미
⭐ 각 컬럼의 이상치 확인용으로 사용
- 결측치 확인 방법
- 결측치 : 값이 없는 컬럼
- RangeIndex보다 각 컬럼의 Non_Null Count가 작은 컬럼 찾기
- 이상치 확인 방법
- 이상치 : 상식적인 값의 범위를 벗어났거나, 숫자 데이터에 문자값이 있는 경우
- 숫자만 있는 컬럼의 타입은 int 또는 float
- 컬럼 데이터 중 문자가 하나의 행이라도 들어있으면, object로 변환됨
- 공백이 있는 이상치 데이터는 int로 바꾸면 자동으로 공백 사라짐
# 데이터프레임 기본 정보 확인하기
sample.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: 272.0+ bytes
- 기초통계데이터
describe()
: 기초 통계 데이터. 숫자 컬럼에 대해서만 출력 ⭐ 각 컬럼의 이상치 확인용으로 사용
- count : 데이터 행의 갯수
- mean : 평균
- std : 표준편차
- min : 최소값
- max : 최대값
- 25%, 50%, 75% : 4분위수
# 기초통계데이터 확인하기
sample.describe()
>> 결과
관광 상용 공용 유학/연수 기타 계
count 67.00000 67.000000 67.000000 67.000000 67.000000 67.000000
mean 26396.80597 408.208955 132.507463 477.462687 5564.208955 32979.194030
std 102954.04969 1416.040302 474.406339 2009.484800 17209.438418 122821.369969
min 0.00000 0.000000 0.000000 0.000000 16.000000 54.000000
25% 505.00000 14.500000 2.500000 17.500000 260.000000 927.000000
50% 1304.00000 45.000000 14.000000 43.000000 912.000000 2695.000000
75% 8365.00000 176.500000 38.000000 182.000000 2824.500000 14905.500000
max 765082.00000 10837.000000 2657.000000 14087.000000 125521.000000 916950.000000
- 피벗테이블
pivot_table()
: 데이터를 집계해서 행렬 형태로 표시
- index : 행 인덱스
- columns : 열 인덱스
- values : 표시될 값
- aggfunc : 어떤 집계를 할 것인지 지정
- mean, max, min, sum 사용 가능
# 국적 및 기준년월별로 입국객수의 평균 데이터 조회
temp = sample.pivot_table(index="국적명", columns="기준년월", values="입국객수", aggfunc="mean")
>> 결과
전체비율(%)
국적
중국 32.114224
일본 28.352414
대만 6.648276
미국 6.035784
홍콩 4.646483
# 피벗테이블을 데이터프레임 형식으로 변환
# inplace = True : 처리된 결과를 사용하는 변수에 즉각 반영
temp.reset_index(inplace=True)
>> 결과
국적 전체비율(%)
0 중국 32.114224
1 일본 28.352414
2 대만 6.648276
3 미국 6.035784
4 홍콩 4.646483
- 크로스탭
pd.crosstab()
: 교차 데이터 생성. 범주형 데이터끼리 비교할 때 사용- margins=True : 전체 총계 값 추가
# 요일별/성별 교차 데이터 생성하기
pd.crosstab(df["성별"], df["요일"]).reset_index()
# margins=True : 전체 총계 추가
pd.crosstab(df["성별"], df["요일"], margins=True)