df.loc[행,열]
df.loc[:,[’이름',’생년월일']] : 모든 행에 이름, 생년월일 열
df.loc[3:8,[’이름',’생년월일']] : 3번부터 8번까지 행, 이름, 생년월일 열
df.loc[2:5,’이름':’생년월일'] : 2번부터 5번까지 행, 이름부터 생년월일까지의 열
df.iloc[:, [0,2]] : 0번째와 2번째 열
df.iloc[1:5,[0,2]] : 1번째부터 4번째 행, 0번째와 2번째 열
df.loc[ df[’키'] > 180, ‘이름':’성별' ] : 키 column 이 180 초과인 ‘이름'부터 ‘성별'까지의 열
df.loc[ df[’키'] > 180, [‘이름':’키'] ] : 키 column 이 180 초과인 ‘이름'과 ‘키'의 열
조건을 걸고자 하는 값이 정의한 list에 있을 때만 색인하려는 경우 사용
my_list = [’하나', ‘둘']
df[’숫자'].isin(my_list): 숫자 column에 값이 my_list 의 값 중 한개이면 True
df.loc[df[’숫자'].isin(my_list)] : 위 boolean 에 True 인 값들만 색인
df.loc[df[’숫자'].isin(my_list),’숫자'] : 그 중에 숫자 column 만 색인
비어있는 값
pandas 에서는 NaN으로 표기
df.info() 로 확인 할 수 있음
df.isna() : 비어 있는 값은 True 가 리턴 되는 값이 NaN
df[’숫자'].isnull() : 숫자 column 에 비어있는 값은 True를 반환
df[’숫자']df[’숫자’].isna()] : Nan값만 색인
df[’숫자']df[’숫자’].isnull()] : 위와 동일
df[’숫자'].notnull() : 비어있지 않은 값이 True 로 반환
df[’숫자']df[’숫자'].notnull()] : True 를 반환하는 값들만 색인
df.loc[df[’숫자'].notnull()] : 비어 있지 않은 값들 색인
row 추가
df.append({’이름': ‘하나', ‘성별' : ‘여’}, ignore_index=True)
반드시 ignore_index=True 옵션 같이 추가
append() 후 다시 df 에 대입해줘야 변경 값이 유지 됨.
column 추가
df[’새로운컬럼'] = ‘대입할 값’
전부 동일한 값이 추가되면서 column 값도 추가 됨
df.loc[df[’이름'] == ‘하나' , ’성별' ] = ‘남' : 이름 컬럼이 하나 인 사람의 성별 을 ‘남'으로 바꿈
pd.pivot_table(df, index=’이름' , columns=’성별', values=’궁극적으로 보고 싶은 데이터')
aggfun=np.mean 또는 np.sum 으로 옵션 추가 가능 - 기본값은 평균
데이터를 그룹으로 묶어서 분석할 때 사용
df.groupby(’이름').count()
행 인덱스를 복합적으로 구성하고 싶은 경우 인덱스를 리스트로 만든다.
df.groupby([’혈액형',’성별']).mean() : 혈액형으로 우선 나뉘고 그 안에 성별로 나뉨
인덱스 초기화
multi-index 로 구성된 데이터 프레임의 인덱스를 초기화 시켜줌.
df.reset_index()
df[’키'] .fillna(-1) : 누락된 키 컬럼에 -1 을 채움.
유지시키려면 inplace = True 옵션 추가
빈 값이 있는 행을 제거 시키는 메소드
df.dropna()
df.dropna(axis=0) 행을 드랍
df.dropna(axis=1) 열을 드랍
df[’키'].drop_duplicates() : 키 컬럼에 중복된 값 드랍, 첫 번째 값 유지
df.drop_duplicates(’키') : 키 컬럼에 중복된 값이 있으면 행 전체 제거
df.drop(’키',axis=1) : 키 컬럼이 드랍
df.drop([’키',’이름'],axis=1) : 키, 이름 컬럼이 드랍
df.drop(3,axis=0) : 3번 인덱스 제거
df.drop([3,5],axis=0) : 3, 5번 인덱스 제거
row 기준 합치기
pd.concat[df,df2], sort=false)
sort 를 false로 지정해 순서가 유지되도록 한다.
concat을 하고 나서는 reset_index 를 적용하여 인덱스를 새로 설정해준다.
df_concat.reset_index(drop=True)
(drop=True 옵션 설정, 새로운 인덱스가 생성되는 것을 막는다)
column 기준 합치기
pd.concat[df,df2],axis=1)
특정 고유한 키 값을 기준으로 합치기
df 와 df2 가 이름이라는 컬럼이 겹치는 경우
이름을 기준으로 dataframe 을 병합 가능
pd.merge(left, right, on=’기준 column’, how=’left)
series 나 dataframe 에 더 구체적인 로직을 적용하고 싶은 경우 활용
apply 를 적용하기 위해서는 함수가 먼저 정의되어야 함
apply는 정의한 로직 함수를 인자로 넘겨 줌
df[’성별'].apply(lambda x : 1 if x ==’남자' else 0)
: 성별 컬럼이 남자면 1, 남자가 아니면 0
my_map = {’남자’ : 1 , ‘여자' :0 }
딕셔너리 형태 사용
df[’성별'].map(my_map)
원핫인코딩은 한개의 요소는 True, 나머지 요소는 False로 만들어 주는 기법
pd.get_dummies(’변환하고자하는 시리즈')
pd.get_dummies(df[’혈액형'], prefix=’혈액형')
prefix 옵션으로 생성된 더미 컬럼명 지정 가능