본문으로 바로가기

1. 기초 함수

1) 데이터 구조 확인

   - df.head()

   - df.tail()

   - df.describe() : 대표값(평균, 중위값, 최빈값), 개수, 분산, 표준편차의 사분위수(quantile)

   - df.info() : Column별로 Non-Null Count & Dtype

 

 

2) index 변경, 초기화

   - df.set_index('index_name', inplace=False, drop=True)   # 기존 인덱스를 변경하려면 inplace=True

   - df.reset_index()

 

 

3) 특정 행/열 기준으로 정렬

   # df.sort (X)

   # df.sort_index 또는 df.sort_values (O)

   - df.sort_values(by=' ', axis=0, ascending=True, inplace=False, ignore_index=False)

 

 

4) 특정 문자 포함하는 행/열 세기

   - sum(df["travel"].str.contains("계곡"))   # 여행지에 '계곡'이 있는 곳 count

 

 

5) 열 이름 변경

   # 전체 열 이름 다시 적어주기

   - df.columns = [ '전체 열 이름 적어주기' ]

 

   # 특정 열 이름만 변경

   - df.rename(columns = {'from1':'to1', 'from2':'to2', ..., inplace=True}   # inplace=True로 설정해야 덮어써짐

 


2. 특정 행/열 선택 및 삭제

### pd.Series가 아닌 pd.DataFrame으로 꺼내는 습관 들이기 [[ ]]

# pd.Series : 하나의 열 or 행으로 가져온다. (key 값이 있는 리스트 형식)

 

특정 행/열 선택

### 1) 행(row) 선택
df.loc[['bear']] / df.loc[['bear', 'wasp' ,'wolf']]
# index 행으로 선택 (index X)
# 0행/ 0,2,5행 / 3,4,5,6,7행 출력
# 권장하지 않음
df.iloc[[0]] / df.iloc[[0,2,5]] / df.iloc[[3:7]]  


### 2) 열(column) 선택
df.loc[:, ['feathers']] / df.loc[:, ['feathers', 'airborne', 'toothed']]
# index로 선택
df.iloc[[:, 0]] / df.iloc[:, [0,2,4]]


### 3) 특정 행, 열 선택
df.loc[3]['hair']

df.iloc[3:5, 0:3]

 

특정 행/열 삭제

# 1) 행(row) 삭제
df.drop(['row'])   # axis parameter 값을 조정하면 열도 삭제 가능


# 2) 열(column) 삭제
del df['column'] : 해당 열 데이터를 drop   # dict와 같은 방식

# df.drop(columns=[ ], axis=1) 이 방법도 가능함

 

특정 행/열 필터링

df[ df['관서명'] != '계' ].describe()

 

하나의 Cell의 값 선택

# DataFrame에서 하나의 Cell에 해당하는 값을 얻어내는 4가지 방법

df['amount'][0] # 열에 접근 후 Series의 index로 접근
df.loc[0]['amount'] # 행에 접근 후 Series의 index로 접근
df.loc[0, 'amount'] # 행 이름과 열 이름을 지정하여 접근 (loc 활용)
df.at[0, 'amount'] # 행 이름과 열 이름을 지정하여 접근 (at 활용)
df.iloc[0, 7] # indexed-location 기반으로 index number 기준 행 & 열 지정하여 접근

3. hist()

- 한 번에 모든 변수에 histogram을 그리는 것도 가능하다

df.hist(bins=50, figsize=(20,15))


4. pivot_table

- 특정 열(column)을 index로 하는 새로운 df를 만드는 방법 ('축'을 돌리는 것)

- pd.pivot_table(data, index, aggfunc=np.mean)

   - aggfunc : np.mean, np.max, ...

   - np.mean: index에 따라 나누어지는 비율에 관계 없이 평균값을 구해주기 때문에 주로 쓰임

pivot_df = pd.pivot_table(df_new, index='type', aggfunc=np.sum)
pivot_df

 


5. 결측치(missing data)를 다루는 대표적인 방법

- 랜덤하게 채워넣기 
- 주변 (행의) 값들로 채워넣기 
- 열의 대푯값을 계산해서 채워넣기 (mean, median중윗값)
- 전체 행들을 그룹으로 묶어낸 후 그룹 내 해당 열의 대푯값으로 채워넣기
- 나머지 열들로 머신러닝 예측모델을 만든 후 해당 열의 값을 예측해 채워넣기 
- 특정 기준 비율 이상으로 빠져있을 시 해당 열 삭제