1 개요
데이터의 전체 구조를 조작하는 방법에 대해.
2 지우기
의도
|
설명
|
방법
|
열 삭제
|
칼럼을 삭제한다. 시리즈로 변환하여 반환한 후 삭제한다.
|
col = df.pop('열이름')
|
열 삭제
|
그냥 삭제.
|
df.del('열이름')
df.drop(columns = '열이름')
df.drop(columns = ['열1', '열2', ...]) # 여러 개의 열을 지울 경우.
|
|
|
|
3 자르기
데이터프레임을 df[:숫자] 형태로 자르고 나면, 인덱스가 그대로 남는다. 이 인덱스를 초기화하기 위해선 다음과 같이 진행한다.
df.reset_index(inplace=True, drop=True) # drop을 안하면 기존 인덱스가 새로운 열로 남는다.
의도
|
설명
|
방법
|
행 분할
|
유의. 가장 마지막까지 가져온다는 의미로 -1을 넣기도 하는데, range와 같은 방식으로 작동하는지, -2의 값을 가져온다.
때문에 불편하지만 len(df)를 이용하는 편이 정신건강에 좋다.( :를 쓰는 호출이 아니라면 -1이 잘 먹힌다.)
|
df = df[시작번호:끝번호]
|
4 붙이기
4.1 리스트 붙이기
리스트를 행으로 붙이고 싶을 때. 기본적으로 리스트는 열로 인식하므로, 행을 추가하고 싶다면 시리즈로 변환하여 추가해야 한다.
의도
|
설명
|
방법
|
리스트를 df에 마지막 행으로 붙인다.
|
리스트를 가장 아래 행으로.
|
# 붙이기 위해 리스트를 시리즈화 한다.
a = pd.Series(item, index=df.columns) # index=df.columns이 없으면 새로운 열을 만들어 붙인다.
df = df.append(a,
ignore_index=True) # 인덱스를 무시하고 df에 순차적으로 넣고 싶은 경우.
|
4.2 dataframe끼리 붙이기
[아직 완성하지 않음;;;]
의도
|
설명
|
방법
|
위아래로 붙이기
|
두 df를 아래로 이어붙이기.
df 목록은 리스트로 준다.
|
df = pd.concat([df, df2])
|
옆으로 붙이기
|
|
df = pd.concat([df, df2], axis=1)
|
기존 인덱스 무시하고 붙이기
|
|
concat에 ignore_index=True 옵션을 준다.
|
4.3 끼어넣기
의도
|
설명
|
방법
|
열을 중간에 삽입
|
|
df.insert(끼워넣을 열 번호, '열이름', 내용)
|
5 행 선택
의도
|
설명
|
방법
|
인덱스로 선택
|
인덱스가 순차적인 데이터인 경우.
|
df.loc[시작인덱스:끝인덱스]
|
순서로 선택
|
인덱스가 아닌, df의 순서로 선택할 경우.
|
df.iloc[시작번호:끝번호]
|
|
|
|
6 열 선택
의도
|
설명
|
방법
|
인덱스로 선택
|
이중대괄호로 선택하는 경우는 dataframe으로,
대괄호 하나로 선택하는 경우엔 series로 추출한다.
|
df.loc[:, ['열이름', '열이름2', ...]]
df[['열이름', '열이름2', ...]] # dataframe으로 반환
df['열이름', '열이름2', ...] # series로 반환
|
순서로 선택
|
인덱스가 아닌, df의 순서로 선택할 경우.
|
처음의 :는 모든 행에 대해 선택한다는 의미.
df.iloc[:, [1,2,3,5,6,...]]
연속된 걸 선택할 땐 다음과 같이.
df.iloc[:, 0:3]
|
칼럼 순서 바꾸기
|
데이터프레임2 = DataFrame(데이터프레임1, columns=[열이름1, 열이름2, ...])
|
7 데이터 프레임끼리의 연산
사칙연산 뿐 아니라 ==, !=, > 등의 논리연산도 가능하다. 기본적으로 칼럼과 레이블이 같은 위치의 값들끼리 연산한다.
7.1 파생변수 만들기
데이터프레임 행별 연산을 통해 파생변수를 만들 수 있다.
의도
|
설명
|
방법
|
대괄호로 생성
|
- 행별 연산을 통해 새로운 열 생성.
- np.where로 조건문의 사용도 가능하다.
|
df['새로운열'] = df['열1'] + df['열2']
|
assign으로 생성
|
위와 동일.
|
df.assign(새로운열1 = df['열1'] + df['열2'], 새로운열2 = 연산...) # 새로운 열은 따옴표로 감싸지 않는 것에 유의.
|
8 정렬
의도
|
설명
|
방법
|
특정 열을 기준으로 정렬
|
기본적으로 오름차순.
ascending=False 옵션을 주면 내림차순.
|
- df.sort_values('열이름', inplace=True, ascending=False)
- df.sort_values(['열1', '열2', ...], inplace=True, ascending=[Ture, False, ...]) # 여러 열에 대하여 각각의 정렬조건을 지정 가능. 앞에서부터 정렬한다.
|