데이터분석

pandas basic 03

jaehwi0823 2019. 10. 10. 20:11

01. Subsetting

전체 테이블 중 일부 테이블을 선택하는 방법을 알아봅니다.

# Select a column with slicer
mydf['col1']

# iloc / loc indexer
mydf[5]
mydf[[10, 20]]
mydf.loc[index, column_names]
mydf.iloc[index_nums, column_nums]
mydf.loc[st_row:ed_row, st_col:ed_col]

# iat / at indexer
mydf.iat[row_num, col_num]
mydf.at[row, col]

# Select rows
mydf[mydf[col1] == value]

02. Boolean Indexing

불린 인덱싱에 대해 알아봅니다.

# A Boolean Series
mys = mydf[col1]
mys > 100
mys.sum()
mys.mean()
mys.value_counts(normalize=True)

# A Boolean Series 2
mys = mydf[col1] > mydf[col2]

# Making criteria
criteria = mydf.col1.isin(['val1'])
mydf[criteria]
mydf.loc[criteria]
mydf.loc[criteria, :]
mydf.iloc[criteria.values]

03. query & where & mask

Pandas Dataframe을 선택하는 세 가지 중요한 메소드를 살펴봅니다.

# query -> SQL문의 where절과 같은 역할을 하며, 문자열 안에 조건을 나열
condition = ['v1', 'v2', 'v3']
qr = "COL1 in @condition and COL2 == 'value' and 10 <= COL3 <= 30"
result = mydf.query(qr)

# where -> df의 shape을 유지하며, 조건에 해당하지 않는 대상의 값을 변경
mydf.where(cond, other=-999)

# mask -> mask 조건에 해당하는 대상의 값을 변경
mydf.mask(criteria).dropna(how='all')

04. Index Control

Index는 Series or DataFrame과 많은 부분이 비슷하지만 또 다른 면들도 존재합니다. 그러한 사항들에 대해 살펴봅니다.

columns = mydf.columns

 # 문자열 덧셈은 postfix를 생성함
 columns + '_post'

 # 비교식은 Boolean 리스트를 생성
 Columns > 'P'

# Index 생성 후, 바로 값 변경이 불가능함
Columns[1] = 'new_val'

# Index는 합집합, 교집합, 차집합, 대칭차집합 같은 연산이 가능함
columns1.union(columns2)
columns1.symmetric_difference(columns2)