자격증/빅데이터분석기사

[빅데이터분석기사/실기] 01. 데이터 전처리 1

najiwon 2023. 11. 26. 20:04

Pandas

  • 데이터 처리와 분석을 위한 라이브러리 
  • 행과 열로 이루어진 데이터 객체를 만들어 다룰 수 있음
  • 대용량의 데이터들을 처리하는데 매우 편리 

 

pandas 자료구조

  • Series : 1차원
  • DataFrame: 2차원
  • Panel: 3차원
# List -> Series
seires = pd.Series([1, 2, 3, 4]) 
# Series -> DataFrame
pd.DataFrame(seires)

 

데이터 import

import pandas as pd

# 데이터 로드
df = pd.read_csv(url)

# 구분자가 있는 데이터 로드 
df = pd.read_csv(url, sep='\t')

# 한글 컬럼있는 데이터 로드
df = pd.read_csv(url, encoding='euc-kr')

 

데이터 살펴보기

# 각 컬럼의 데이터수, 데이터타입을 한번에 확인
df.info()

# 통계정보 확인 - 개수, 평균, 표준편차, 최소, 사분위값, 최대
df.describe()

# 오브젝트 포함시 - 개수, unique한 값 개수, 빈도수 높은것, 그 개수
df.describe(include=object)

# 상위 5개 행 출력
df.head(5)

# 하위 5개 행 출력
df.tail(5)

# 데이터의 행과 열의 갯수
df.shape()    # (9621, 13)

# 데이터의 행 갯수
df.shape[0]   # 9621

# 데이터의 열 갯수
df.shape[1]   # 13

# 전체 컬럼 출력
df.columns  

# 6번째 컬럼명 출럭
df.columns[5]

# 6번째 컬럼의 데이터 타입
df.iloc[:,5].dtype   # dtype('float64')

# 데이터셋의 인덱스 구성
df.index

# 6번째 컬럼의 3번째 값
df.iloc[2,5]

# 수치형 변수를 가진 컬럼 출력
df.select_dtypes(exclude=object).columns 

# 범주형 변수를 가진 컬럼 출력
df.select_dtypes(include=object).columns

# 각 컬럼의 결측치 숫자 파악 
df.isnull().sum()

```
id          0
일자          0
시도명         0
읍면동명        0
거주인구        0
근무인구        0
방문인구        0
총 유동인구      0
평균 속도       0
평균 소요 시간    0
평균 기온       0
일강수량        0
평균 풍속       0
dtype: int64
```

 

! 메소드 기억 안 날 때

: dir() 로 메소드 찾아보기 

 

! 파라미터 기억 안 날 때

: 주피터 노트북은 () 안에 커서 놓고 shift + tab

: 그 외 help()

 

 

df['거주인구']

# 객체의 행이나 열의 총 합계를 구하는 메서드
df['거주인구'].sum()

# 행 개수 
df['거주인구'].count()

# 평균
df['거주인구'].mean()

# 최대
df['거주인구'].max()

# 최소
df['거주인구'].min()

# 분산
df['거주인구'].var()

# 표준편차 
df['거주인구'].std()

 

4분위 수 구하는 방법 quantile()

quantile은 수치 데이터를 크기 순서로 정렬 했을 때, 0% ~ 100% (0 ~ 1) 위치에 해당하는 숫자를 리턴

Q1 = 25% 

Q2 = 50%

Q3 = 75%

Q4 = 100%

를 파라미터로 주면 된다. 

# 평균 속도 컬럼의 4분위 범위(IQR) 값
# 사분위수 범위 Q3 - Q1
# 최소값 | 1사분위수 | 2사분위수(중앙값) | 3사분위수 | 최대값 
df['평균 속도'].quantile(0.75) - df['평균 속도'].quantile(0.25)

 

# 컬럼의 유일값 갯수 출력
df['읍면동명'].nunique()

# 컬럼의 유일값 모두 출력
df['읍면동명'].unique()

 

데이터 정렬

# 인덱스로 내림차순 정렬
df.sort_index(ascending=False)

# 특정 컬럼 오름차순 정렬
df.sort_values(by='컬럼명')

# 특정 컬럼 내림차순 정렬
df.sort_values(by='컬럼명',ascending=False)

# 특정 컬럼의 NaN을 가장 위에 정렬
df.sort_values(by='컬럼명', na_position='first')

# n개로 정렬
df.sort_values(by=['평균 속도', '평균 기온'], ascending=[False, True])

 

데이터 필터링

# 선택한 컬럼의 모든 행
df.loc[:,컬럼리스트]

# 선택한 컬럼의 3 ~ 8 행
df.loc[3:8:,['quantity','item_name']]

# 0 ~ 2 열의 3 ~ 8 행
df.iloc[3:8:, 0:2]

 

Boolean indexing

# 결과가 True, False로 나옴
df['quantity']==3

# quantity가 3인 데이터, True인 애들만 나옴
df[df['quantity']==3].head(3)

# quantity가 3인 선택한 열(quantity, item_name)의 데이터
df[df['quantity']==3][['quantity', 'item_name']].head(3)

# quantity컬럼 값이 3인 데이터를 추출하여 index를 0부터 정렬
df[df.quantity==3].head(3).reset_index(drop=True)

 

Indexing options with DataFrame 

Type Notes
df[val] Select single column or sequence of columns from the DataFrame
df.loc[val] Selects single row or subset of rows from the DataFrame by label
df.loc[:, val] Selects single column or subset of columns by label
df.loc[val1, val2] Select both rows and columns by label
df.iloc[where] Selects single row or subset of rows from the DataFrame by integer position
df.iloc[:, where] Selects single column or subset of columns by integer position
df.iloc[where_i, where_j] Select both rows and columns by integer position
df.at[label_i, label_j] Select a single scalar value by row and column label
df.iat[i, j] Select a single scalar value by row and column position (integers)
get_value(), set_value() Select single value by row and column label

 

 

5 장 Pandas | 파이썬 프로그래밍 기초

Pandas 데이터 처리와 분석을 위한 라이브러리 행과 열로 이루어진 데이터 객체를 만들어 다룰 수 있음 대용량의 데이터들을 처리하는데 매우 편리 pandas 자료구조 Series: 1차원 DataFrame: 2차원 Panel:

bigdata.dongguk.ac.kr