Pandas:DataFrame:구조 조작

Pywiki
Sam (토론 | 기여)님의 2022년 10월 19일 (수) 17:50 판
둘러보기로 가기 검색하러 가기

1 개요

데이터의 전체 구조를 조작하는 방법에 대해.

2 지우기

의도 설명 방법
행 삭제 칼럼을 삭제한다. 시리즈로 변환하여 반환한 후 삭제한다. col = df.pop('열이름')
행 삭제 그냥 삭제. df.del('열이름')

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 데이터 프레임끼리의 연산

사칙연산 뿐 아니라 ==, !=, > 등의 논리연산도 가능하다. 기본적으로 칼럼과 레이블이 같은 위치의 값들끼리 연산한다.

7 정렬

의도 설명 방법
특정 열을 기준으로 정렬 기본적으로 오름차순.

ascending=False 옵션을 주면 내림차순.

df.sort_values('sum', inplace=True, ascending=False)