1번째 줄: |
1번째 줄: |
| + | {{Pandas:DataFrame}} |
| + | |
| == 개요 == | | == 개요 == |
| 데이터의 전체 구조를 조작하는 방법에 대해. | | 데이터의 전체 구조를 조작하는 방법에 대해. |
8번째 줄: |
10번째 줄: |
| !방법 | | !방법 |
| |- | | |- |
− | |행 삭제 | + | |열 삭제 |
| |칼럼을 삭제한다. 시리즈로 변환하여 반환한 후 삭제한다. | | |칼럼을 삭제한다. 시리즈로 변환하여 반환한 후 삭제한다. |
| |col = df.pop('열이름') | | |col = df.pop('열이름') |
| |- | | |- |
− | |행 삭제 | + | |열 삭제 |
| |그냥 삭제. | | |그냥 삭제. |
| |df.del('열이름') | | |df.del('열이름') |
| + | df.drop(columns = '열이름') |
| + | |
| + | df.drop(columns = ['열1', '열2', ...]) # 여러 개의 열을 지울 경우. |
| + | |- |
| + | | |
| + | | |
| + | | |
| |} | | |} |
| == 자르기 == | | == 자르기 == |
44번째 줄: |
53번째 줄: |
| |리스트를 가장 아래 행으로. | | |리스트를 가장 아래 행으로. |
| |<syntaxhighlight lang="python"> | | |<syntaxhighlight lang="python"> |
− | df = df.append(pd.Series(list,
| + | # 붙이기 위해 리스트를 시리즈화 한다. |
− | index=df.columns, # 기존 df의 컬럼 안에 들어가게끔.(이게 없으면 새 컬럼을 만들어버린다.)
| + | a = pd.Series(item, index=df.columns) # index=df.columns이 없으면 새로운 열을 만들어 붙인다. |
− | name='인덱스에 들어갈 내용'),
| + | df = df.append(a, |
− | ignore_index=True # 인덱스를 무시하고 df에 순차적으로 넣고 싶은 경우.
| + | ignore_index=True) # 인덱스를 무시하고 df에 순차적으로 넣고 싶은 경우. |
− | )
| |
− | # 또다른 방법.
| |
− | df = df.append(df.iloc[-1], ignore_index=True) # 마지막 행을 하나 더 복사한다.
| |
− | df.iloc[-1] = list # 마지막 자리에 리스트를 넣는다.
| |
− | print_df(df)
| |
| </syntaxhighlight> | | </syntaxhighlight> |
| |} | | |} |
58번째 줄: |
62번째 줄: |
| === dataframe끼리 붙이기 === | | === dataframe끼리 붙이기 === |
| [아직 완성하지 않음;;;] | | [아직 완성하지 않음;;;] |
− | {| class="wikitable"
| |
− | !의도
| |
− | !설명
| |
− | !방법
| |
− | |-
| |
− | |위아래로 붙이기
| |
− | |두 df를 아래로 이어붙이기.
| |
− | df 목록은 리스트로 준다.
| |
− | |df = pd.concat([df, df2])
| |
− | |-
| |
− | |옆으로 붙이기
| |
− | |
| |
− | |df = pd.concat([df, df2], axis=1)
| |
− | |-
| |
− | |기존 인덱스 무시하고 붙이기
| |
− | |
| |
− | |concat에 <code>ignore_index=True</code> 옵션을 준다.
| |
− | |}
| |
− |
| |
| === 끼어넣기 === | | === 끼어넣기 === |
| {| class="wikitable" | | {| class="wikitable" |
107번째 줄: |
92번째 줄: |
| |} | | |} |
| | | |
− | == 데이터 프레임끼리의 연산 == | + | == 열 선택 == |
| + | {| class="wikitable" |
| + | !의도 |
| + | !설명 |
| + | !방법 |
| + | |- |
| + | |인덱스로 선택 |
| + | |이중대괄호로 선택하는 경우는 dataframe으로, |
| + | 대괄호 하나로 선택하는 경우엔 series로 추출한다. |
| + | |<code>df.loc[:, ['열이름', '열이름2', ...]]</code> |
| + | df<nowiki>[['열이름', '열이름2', ...]]</nowiki> # dataframe으로 반환 |
| + | |
| + | df['열이름', '열이름2', ...] # series로 반환 |
| + | |- |
| + | |순서로 선택 |
| + | |인덱스가 아닌, df의 순서로 선택할 경우. |
| + | |처음의 :는 모든 행에 대해 선택한다는 의미. |
| + | <code>df.iloc[:, [1,2,3,5,6,...]]</code> |
| + | |
| + | 연속된 걸 선택할 땐 다음과 같이. |
| + | |
| + | <code>df.iloc[:, 0:3]</code> |
| + | |} |
| + | {| class="wikitable" |
| + | |- |
| + | |칼럼 순서 바꾸기 |
| + | |<syntaxhighlight lang="python"> |
| + | 데이터프레임2 = DataFrame(데이터프레임1, columns=[열이름1, 열이름2, ...]) |
| + | </syntaxhighlight> |
| + | |} |
| + | = 데이터 프레임끼리의 연산 = |
| 사칙연산 뿐 아니라 ==, !=, > 등의 논리연산도 가능하다. 기본적으로 칼럼과 레이블이 같은 위치의 값들끼리 연산한다. | | 사칙연산 뿐 아니라 ==, !=, > 등의 논리연산도 가능하다. 기본적으로 칼럼과 레이블이 같은 위치의 값들끼리 연산한다. |
| + | |
| + | ===열 조작=== |
| + | {| class="wikitable" |
| + | !의도 |
| + | !방법 |
| + | !설명 |
| + | |- |
| + | |열 선택 |
| + | |df.<nowiki>[['열1', '열2', ...]]</nowiki> |
| + | |해당 df에서 열을 선택하는 방법. |
| + | 열이 1개일 땐 대괄호 하나에 열이름으로 선택이 되지만, 2개 이상일 땐 대괄호 2개로 묶어주어야 한다. |
| + | |- |
| + | |열 리스트 얻기 |
| + | |df.columns |
| + | |어떤 칼럼이 있는지 알려준다. |
| + | |- |
| + | |열 이름 바꾸기 |
| + | |데이터프레임.rename(columns={'구이름':'신이름', '구이름2':'신이름2'}, inplace=True) |
| + | |inplace=True 이 옵션이 뭔진 모르겠네;; 숫자칼럼을 바꾸려면 붙어야 적용이 된다. |
| + | |- |
| + | |열 순서 바꾸기 및 추출 |
| + | |df<nowiki>[['열이름1', '열이름2']]</nowiki> |
| + | |열이름에 해당하는 순서로 해당 열들만 추출된다. |
| + | |- |
| + | | 열 제거 |
| + | |df = df.drop(columns='열이름') |
| + | | |
| + | |- |
| + | |열 붙이기 |
| + | |df['새로운 칼럼'] = 칼럼 |
| + | |행의 크기가 같은 칼럼을 붙일 수 있다. |
| + | |- |
| + | |새로운 칼럼 만들기 |
| + | |df['새 칼럼'] = df['열이름'].rank() |
| + | |크기가 같은 칼럼을 만든 후 덧붙일 수 있다. |
| + | |- |
| + | | |
| + | | |
| + | | |
| + | |- |
| + | |최댓값 구하기 |
| + | | df['열이름'].max() |
| + | | |
| + | |- |
| + | |최댓값의 인덱스 |
| + | |df['열이름'].idxmax() |
| + | | |
| + | |- |
| + | |최솟값 구하기 |
| + | |df['열이름'].min() |
| + | | |
| + | |- |
| + | |정규화 |
| + | |norm(df, '열이름') |
| + | |최솟값을 0, 최대값을 1로 정규화한다. |
| + | 전체 데이터에서 최솟값을 빼고, 최댓값과 최솟값의 차로 나눈다. |
| + | |} |
| + | == 파생변수 만들기 == |
| + | 데이터프레임 행별 연산을 통해 파생변수를 만들 수 있다. |
| + | {| class="wikitable" |
| + | !의도 |
| + | !설명 |
| + | !방법 |
| + | |- |
| + | |대괄호로 생성 |
| + | | |
| + | * 행별 연산을 통해 새로운 열 생성. |
| + | * np.where로 조건문의 사용도 가능하다. |
| + | |<code>df['새로운열'] = df['열1'] + df['열2']</code> |
| + | |- |
| + | |assign으로 생성 |
| + | |위와 동일. |
| + | |<code>df.assign(새로운열1 = df['열1'] + df['열2'], 새로운열2 = 연산...)</code> # 새로운 열은 따옴표로 감싸지 않는 것에 유의. |
| + | |} |
| + | = 정렬 = |
| + | {| class="wikitable" |
| + | !의도 |
| + | !설명 |
| + | !방법 |
| + | |- |
| + | |특정 열을 기준으로 정렬 |
| + | |기본적으로 오름차순. |
| + | ascending=False 옵션을 주면 내림차순. |
| + | | |
| + | * df.sort_values('열이름', inplace=True, ascending=False) |
| + | * df.sort_values(['열1', '열2', ...], inplace=True, ascending=[Ture, False, ...]) # 여러 열에 대하여 각각의 정렬조건을 지정 가능. 앞에서부터 정렬한다. |
| + | |} |
| [[분류:Pandas:DataFrame]] | | [[분류:Pandas:DataFrame]] |