df['열이름'] => 시리즈 타입으로 추출됨df[['열1', '열2', '열3']] => 해당 컬럼 여러 개를 df로 추출df[불리언 배열]: True인 행만 추출df[df['age']>=20]df[(df['year'] == 2017) & (df['month'] ==6)]df[:3]: 인덱스 기준으로 0~2행만. df.loc[행 레이블 이름, 열 레이블 이름]df.loc[1:3]이면 1, 2, 3. 그리고 -1 등은 이름이 아니기에 접근 불가.df.iloc[행 정수 인덱스, 열 정수 인덱스]df.loc[-1] 등 음수로도 접근 가능.df.loc[0]: 0행, 모든 열을 추출df.loc[:, 0]: 모든 행, 0열을 추출. df.loc['행 인덱스 이름', '열이름']df.loc[[행 인덱스 이름, 행 인덱스 이름], [열이름, 열이름]]리스트로 일일히 지정 가능df.loc[1:5, '열이름1':'열이름10']처럼 슬라이싱으로 지정 가능.df.loc[[불리언]] 가능df.loc[:, [2, 4, -1]] 불가능. 번호라서. df.iloc[0, 0] 가능df.iloc[[행 인덱스 정수, 행 인덱스 정수], [2, 4, -1]] 리스트 지정 가능. 이 경우 -1은 마지막.df.iloc[[행 인덱스 정수, 행 인덱스 정수], list(range(2, 6, 2))] 가능.df.iloc[[행 인덱스 정수, 행 인덱스 정수], 2:6:2]] 슬라이싱 가능. 위와 같은 결과.df.iloc[:, ['year', 'pop']] 불가능. 이름이라. df.loc[0]의 데이터 타입은 시리즈. df.tail(n=1)은 1행짜리 데이터프레임. df['새칼럼이름'], df['새칼럼이름2'] = (시리즈1, 시리즈2)df['기존 칼럼 이름'] = 시리즈 or 값df[행조건][열조건] = 값df.drop(['열이름', '열 이름'], axis=1, inplace = True): axis=1 은 열 의미. 0이면 행. inplace=True면 원본도 이렇게 수정. df.drop([0,4]) 0, 4행 삭제. 기본이 행 삭제. del df['열 이름']: del 문은 python에서 객체를 삭제하는 문법. 변수, 리스트 항목, 딕셔너리 키 등 다양한 객체 삭제 가능.del 변수명 del 리스트명[인덱스] del 딕셔너리명['키'] 하면 각각 하나의 값들도 삭제 가능. df.duplicated(subset=['열이름', '열이름'], keep=False)
df.duplicated() => False만 나온다. DF 전체에 적용됐으므로, 행 전체가 중복값일 때만 해당된다. 그리고 A열에 중복값이 없다.df.duplicated(subset='B') False, False, True, False, True가 나온다.df.duplicated(subset=['B', 'C']) False, False, False, False, True가 나온다. 지정한 열의 모든 값이 중복값이어야지 True. sum(df.duplicated()): 중복된 행은 1로 반환되므로, 중복된 행 갯수. drop_duplicates(): 중복된 행 찾아서 그냥 삭제. subset, keep, inplace 모두 적용 가능. df['열이름'].unique(): 시리즈에서 고윳값(중복되지 않는 값)을 numpy 배열로 returndf1.update(df2): df1에서 df2와 인덱스 및 열이 일치하는 업데이트한다. df.column => 열 이름의 리스트가 나온다. 참고 가능.df.column[0] => 첫 번째 열 이름 나온다.df.column != ['year']: 불리언 배열이 나온다. 열 이름이 year이 아닌 것들만 True, year인 것만 False. df.query('sex == "male"'): DF 내에서 조건 만족하는 데이터 필터링. 이때 조건은 하나의 string으로 받는다. 즉, 'sex'=='male'이 아니라 'sex == "male"'이다. 이 안에 변수를 넣을거면 @을 변수 앞에 붙인다. np.where(조건, , x, y): 배열 내에서 조건을 만족하는 요소의 위치(인덱스)를 찾는 데 사용.np.where(df['열이름']>3): 그 열에서 3보다 큰 값만 선택np.where(welfare['sex'] == 9, np.nan, welfare['sex']): 9라는 이상치가 있으면 결측값으로 바꾸고, 아니면 기존의 값으로.welfare['sex'] = np.where(welfare['sex'] == 1, 'male', 'female') sex가 1이면 male로, 아닌 건 female.로