본문 바로가기

데이터사이언스/파이썬기본

안까먹으려고 작성하는 금융데이터 분석 - 파이썬 DataFrame 다루기 2

파이썬데이터분석

 

인덱스를 활용한 데이터 접근 메소드 2

loc와 유사한 역할을 하는 at

iloc와 유사한 역할을 하는 iat

 

* at, iat 사용  = 특정 scalar 값 -> 그 값만 가져오고싶으면 

* loc, iloc = 특정 subset, 특정 테이블로 만들고 싶다.

# use .at,  iat

df.loc[100, '이익']
df.at[100,'이익']

# 이 둘의 차이는 결과는 비슷한데
# 속도에서 차이가 남
# loc보다 at이 더 빠름

# 속도 확인하는방법은 
# >>>> %timeit

 

조건에 해당하는 인덱스나 컬럼 접근방법

tmp_series = pd.Series({"a":1, "b":2})

tmp_series > 2 #value가 2보다 큰 것인가 체크함

#결과
# a False
# b False

# 위 boolean 체크는 DataFrame에서도 가능
cond = df['순이익률']  > df['영업이익률']

df[cond]
df[cond].shape
df.loc[cond].shape #loc을 통해서도 조건값을 전달 가능

# cond 도 여러개 조합 가능(=multiple boolean series)
# 빅데이터분석기사에서도 자주해봤음

cond1 = 조건1
cond2 = 조건 2
df[cond1 & cond2]
df[cond1 | cond2] 

#위 두개 가능
# 다른 방법을 isin()을 활용

name_list = ['삼성','현대','삼성2']
df[df['종목명'].isin(name_list)]
df.loc[df['종목명'].isin(name_list)]
df.loc[df['종목명'].isin(name_list),['원하는 칼럼1','원하는 칼럼2','원하는 칼럼3']]

# set_index로 인덱스를 종목명으로 바꾼후
# 종목리스트를 loc로 접근한다.

 

DataFrame 끼리 연산을 할때는 

index_column이 일치하는것만 연산하고 나머지는 nan처리 한다(교집합만 계산한다는 뜻)

 

print(df - df[['A','B']].iloc[:,2])
# 위 코드 실행 시
# A와 B 칼럼의 인덱스의 위치가 0,1인 A,와 B의 값만 0이 되고  나머지는 nan이 될것이다.
# 왜냐면 데이터프레임 연산은 인덱스, 칼럼이 같은값이 있는 것만 계산하고 나머지는 nan처리함