☑️ 데이터 선택 하기
✔️`iloc` :행,열 번호로 특정 값을 선택
인덱스 번호로 행/열 슬라이싱 , 끝값 포함 안함
✔️`loc` :컬럼명으로 특정 문자를 확인해서 선택
인덱스와 컬럼명으로 행/열 슬라이싱 , 끝값 포함(인덱스 아니므로)
df = pd.DataFrame({
'A' : [1,2,3,4,5],
'B' : [10,20,30,40,50],
'C' : [100,200,300,400,500]
})
# iloc : 인덱스로 행 선택
df.iloc[0] #인덱스 0 값 행 출력
df.iloc[0::2] # 슬라이싱 인덱스 0부터 끝까지 2간격씩 출력
# iloc & 콤마 : 인덱스로 값 선택
df.iloc[0,0] # 슬라이싱 인덱스 (0,0) 행/렬 출력 = [0][0]와 같음
df.iloc[0:2,0:3] #0~1행 /0~2열 까지 출력
- `loc` : 컬럼명으로 특정 문자를 확인해서 선택
df = pd.DataFrame({
'A' : [1,2,3,4,5],
'B' : [10,20,30,40,50],
'C' : [100,200,300,400,500]
},index=['a', 'b', 'c', 'd', 'e'])
# loc : 인덱스로 행 선택
df.loc[:,'A'] #전체에서 A컬럼행 출력 (df.iloc[:,0] =df['A'])
df.loc['b':,'A'] # b행 (두번째행) 부터 0번째 열 출력하기
## 단,슬라이싱시 loc는 끝값 포함
df.loc['b':'e','A'] #(b~e)행 A열 -> e 행 포함
df.loc['b':'e','A':'B'] #(b~e)행 A열~B열 -> e 행 포함
- 여러개 컬럼 출력시 : [] 리스트형으로 감싸줌
# 여러 컬럼 출력, [컬럼1,컬럼2] 리스트로 감싸줌
df[['A','B']]
df[['B','A']] # 컬럼 순서도 바꿀수 있음
df.loc['a':'b', ['A','B']]
☑️ 데이터 선택하기 - 불리안 인덱싱 (조건별)
✔️ 데이터프레임 안에 들어갈수있는 값 : [컬럼명, 인덱스, 조건문]
- `DataFrame.[조건문]` : 조건별 값을 T or F 로 출력
- `DataFrame[DataFrame.[조건문] ]` : 조건문 True 해당하는 모든 행 출력
- `.isin()` : 특정 값이나 리스트안에 포함된 값을 찾는 메소드(원하는 값을 빠르게 선택 가능
- df['size'].isin([5]) 즉, df['size']==5 (동일)
- .isin({’컬럼’ : [값], ‘컬럼’ : [값]}) : 다중 값 확인 시 리스트로 감싸주면 됨.
# 1
df['tip']<2 # t or f 로 값 반환됨.
df[df['tip']<2] # df [ 조건문 ]이 true 때의 모든 행 출력 됨.
# 단일 컬럼 조건별 출력
df['sex']=='Male' #성이 남성 일때 t or f 로 값 반환
df[df['sex']=='Male'] #조건을 만족하는 행 출력
#다중 컬럼 조건별 출력 (and)
df[(df['sex']=='Male') & (df['smoker']=='Yes')] #남성이면서 흡연자 (&)
#다중 컬럼 조건별 출력 (ot)
df[(df['sex']=='Male') | (df['smoker']=='Yes')] #남성이거나 흡연자 (|)
# loc & 조건문 단일 컬럼 출력
df.loc[df['size']>3] #사이즈컬럼값이 3보다 클때 모든 행 출력
# loc & 조건문 다중 컬럼(특정 컬럼) 출력
df.loc[df['size']>3,'tip':'smoker'] #사이즈컬럼값이 3보다 클때 tip~smoker 만 출력
#size 컬럼 값이 5일떄 전체 출력
df[df['size'].isin([5])]
#여러 컬럼에 대해 값 선택 : 사이즈 컬럼 값이 5일고 스모크 컬럼이 yes 일때 전체 출력
df.isin({'size': [5], 'smoker': ['Yes']})
☑️ 컬럼 연산하기 (+ , /)
- df['new컬럼명'] = df['컬럼1'] + df['컬럼2'] : 컬럼1+ 컬럼2 합계
- df['new컬럼명'] = df['컬럼1'] / df['컬럼2'] : 컬럼2에 대한 컬럼1의 비중
# 값 연산하기 (컬럼+컬럼 이면 + 연산이 됨 )
df['revenue'] = df['total_bill'] + df['tip']
# 팁의 비중 구하기 (컬럼/컬럼 이면 / 연산이 됨 )
df['tip']/df['total_bill']*100