바뀜

4,239 바이트 추가됨 ,  2023년 2월 1일 (수) 13:01
편집 요약 없음
1번째 줄: 1번째 줄:  +
{{Pandas:DataFrame}}
 +
 
== 개요 ==
 
== 개요 ==
 
데이터의 전체 구조를 조작하는 방법에 대해.
 
데이터의 전체 구조를 조작하는 방법에 대해.
8번째 줄: 10번째 줄:  
!방법
 
!방법
 
|-
 
|-
|삭제
+
|삭제
 
|칼럼을 삭제한다. 시리즈로 변환하여 반환한 후 삭제한다.
 
|칼럼을 삭제한다. 시리즈로 변환하여 반환한 후 삭제한다.
 
|col = df.pop('열이름')
 
|col = df.pop('열이름')
 
|-
 
|-
|삭제
+
|삭제
 
|그냥 삭제.
 
|그냥 삭제.
 
|df.del('열이름')
 
|df.del('열이름')
 +
df.drop(columns = '열이름')
 +
 +
df.drop(columns = ['열1', '열2', ...])  # 여러 개의 열을 지울 경우.
 +
|-
 +
|
 +
|
 +
|
 
|}
 
|}
 
== 자르기 ==
 
== 자르기 ==
27번째 줄: 36번째 줄:  
|-
 
|-
 
|행 분할
 
|행 분할
|
+
|유의. 가장 마지막까지 가져온다는 의미로 -1을 넣기도 하는데, range와 같은 방식으로 작동하는지, -2의 값을 가져온다.
 +
때문에 불편하지만 len(df)를 이용하는 편이 정신건강에 좋다.( :를 쓰는 호출이 아니라면 -1이 잘 먹힌다.)
 
|df = df[시작번호:끝번호]
 
|df = df[시작번호:끝번호]
 
|}
 
|}
 +
 
== 붙이기 ==
 
== 붙이기 ==
[아직 완성하지 않음;;;]
+
 
 +
=== 리스트 붙이기 ===
 +
리스트를 행으로 붙이고 싶을 때. 기본적으로 리스트는 열로 인식하므로, 행을 추가하고 싶다면 시리즈로 변환하여 추가해야 한다.
 
{| class="wikitable"
 
{| class="wikitable"
 
!의도
 
!의도
37번째 줄: 50번째 줄:  
!방법
 
!방법
 
|-
 
|-
|위아래로 붙이기
+
|리스트를 df에 마지막 행으로 붙인다.
|두 df를 아래로 이어붙이기.
+
|리스트를 가장 아래 행으로.
df 목록은 리스트로 준다.
+
|<syntaxhighlight lang="python">
|df = pd.concat([df, df2])
+
# 붙이기 위해 리스트를 시리즈화 한다.
|-
+
a = pd.Series(item, index=df.columns) # index=df.columns이 없으면 새로운 열을 만들어 붙인다.
|옆으로 붙이기
+
df = df.append(a,
|
+
            ignore_index=True) # 인덱스를 무시하고 df에 순차적으로 넣고 싶은 경우.
|df = pd.concat([df, df2], axis=1)
+
</syntaxhighlight>
|-
  −
|기존 인덱스 무시하고 붙이기
  −
|
  −
|concat에 <code>ignore_index=True</code> 옵션을 준다.
   
|}
 
|}
    +
=== dataframe끼리 붙이기 ===
 +
[아직 완성하지 않음;;;]
 
=== 끼어넣기 ===
 
=== 끼어넣기 ===
 
{| class="wikitable"
 
{| class="wikitable"
79번째 줄: 90번째 줄:  
|
 
|
 
|
 
|
 +
|}
 +
 +
== 열 선택 ==
 +
{| 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]]