import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(3,4)*10, columns = list("ABCD"), index = list("abc"))
print(df)
# loc 활용 : 특정 요소만 선택 [[행], [열]]
print(df.loc[['a','b'],['B','D']]) #a,b 행의 B,D 열
print(df.loc[:,'B':'D']) # label : B~D열의 모든 행
print(df.loc['b',], type(df.loc['b',])) # label : b행의 모든열 ->series로 출력
print(df.loc[['b']], type(df.loc[['b']])) # label : b행의 모든열 ->DataFrame으로 출력
print(df.loc['a','C']) # a행의 C열 -> Scalar 반환
print(df.loc['a':'b','A':'C']) # a~b 행의 A~C열
print(df.loc[df['C']>7,['A','B']]) # C 열의 값이 7보다 큰 행의 A,B 열
모두 같은 출력(series 형식)
dt = pd.DataFrame(np.arange(12).reshape(4,3), columns=list("ABC"), index=list('abcd'))
# 2번째 행('c'행) 의 모든 열을 Series 형식(List, 배열)으로 표현
print(dt.iloc[2])
print(dt.iloc[2,])
print(dt.iloc[2,:])
print(dt.loc['c'])
print(dt.loc['c',])
print(dt.loc['c',:])
Boolean Indexing
# loc 에서의 boolean indexing
print(dt.loc[dt['A']%6==0,['A','C']])
# iloc 에서의 boolean indexing
print(dt.iloc[(dt['A']%6==0).to_list(),[0,2]])
데이터 조회 및 정렬
### 데이터 조회 및 정렬 ###
test.tail(3)
test.head(3)
test.sort_index(axis=1, ascending=False)
test.sort_values('C') # C 열의 값 기준으로 졍렬
test.T # 전치 -> 행/열 바꿈
### 데이터 수정, 삭제 ###
np.random.seed(1000) # seed() 함수를 사용하면, 프로그램을 다시 실행해도 동일한 난수를 생성함.
dt1 = pd.DataFrame(np.random.random((10,4)), columns = list('ABCD'))
dt1.where(dt1<0.5,0)
### 데이터 인덱싱, 선택, 필터링 ###
dt2 = pd.DataFrame({'name':['kim','lee','park','ahn'], 'age':[24,27,34,19]})
dt2['name'].isin(['kim','ahn']) # name 열에 kim, ahn 가지고 있는지 -> Series 형태 Boolean
dt2.isin(['kim','ahn']) # kim, ahn 을 포함하는지