"Pandas:DataFrame:구조 조작"의 두 판 사이의 차이

Pywiki
둘러보기로 가기 검색하러 가기
33번째 줄: 33번째 줄:
  
 
== 붙이기 ==
 
== 붙이기 ==
 +
 +
=== 리스트 붙이기 ===
 +
리스트를 행으로 붙이고 싶을 때. 기본적으로 리스트는 열로 인식하므로, 행을 추가하고 싶다면 시리즈로 변환하여 추가해야 한다.
 +
{| class="wikitable"
 +
!의도
 +
!설명
 +
!방법
 +
|-
 +
|리스트를 df에 마지막 행으로 붙인다.
 +
|리스트를 가장 아래 행으로.
 +
|<syntaxhighlight lang="python">
 +
df = df.append(pd.Series(list,
 +
                        index=df.columns,  # 기존 df의 컬럼 안에 들어가게끔.(이게 없으면 새 컬럼을 만들어버린다.)
 +
                        name='인덱스에 들어갈 내용'),
 +
                ignore_index=True  # 인덱스를 무시하고 df에 순차적으로 넣고 싶은 경우.
 +
                )
 +
# 또다른 방법.
 +
df = df.append(df.iloc[-1], ignore_index=True)  # 마지막 행을 하나 더 복사한다.
 +
df.iloc[-1] = list  # 마지막 자리에 리스트를 넣는다.
 +
print_df(df)
 +
</syntaxhighlight>
 +
|}
 +
 +
=== dataframe끼리 붙이기 ===
 
[아직 완성하지 않음;;;]
 
[아직 완성하지 않음;;;]
 
{| class="wikitable"
 
{| class="wikitable"

2022년 10월 18일 (화) 10:36 판

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에 마지막 행으로 붙인다. 리스트를 가장 아래 행으로.
df = df.append(pd.Series(list, 
                        index=df.columns,  # 기존 df의 컬럼 안에 들어가게끔.(이게 없으면 새 컬럼을 만들어버린다.)
                        name='인덱스에 들어갈 내용'),
                ignore_index=True  # 인덱스를 무시하고 df에 순차적으로 넣고 싶은 경우.
                )
# 또다른 방법. 
df = df.append(df.iloc[-1], ignore_index=True)  # 마지막 행을 하나 더 복사한다.
df.iloc[-1] = list  # 마지막 자리에 리스트를 넣는다.
print_df(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 데이터 프레임끼리의 연산

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