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

 
(같은 사용자의 중간 판 5개는 보이지 않습니다)
1번째 줄: 1번째 줄:
 
== 개요 ==
 
== 개요 ==
 +
파생변수에 대해 다루는 문서.
 +
 
dataframe의 평균, 합을 구한다든가 특정 연산을 수행해야 할 때가 있다. for문으로 일일이 할 수도 있지만, 효율이 그닥 좋진 않다.
 
dataframe의 평균, 합을 구한다든가 특정 연산을 수행해야 할 때가 있다. for문으로 일일이 할 수도 있지만, 효율이 그닥 좋진 않다.
  
93번째 줄: 95번째 줄:
 
|}
 
|}
  
= Dataframe 행간 연산 =
+
= Dataframe 조건 연산 =
 +
 
 +
=== numpy.where 사용 ===
 
{| class="wikitable"
 
{| class="wikitable"
 
!의도
 
!의도
103번째 줄: 107번째 줄:
 
간단하게 하려면 numpy가 필요하다.
 
간단하게 하려면 numpy가 필요하다.
  
* 다중조건인 경우 &으로 연결한다.
+
* 다중조건인 경우 <code>&</code>으로 연결한다.
 +
* or인 <code>|</code> 도 사용 가능.
 
* 중첩조건은 엑셀처럼 작성하면 된다.
 
* 중첩조건은 엑셀처럼 작성하면 된다.
 
|<code>df['over_5unit'] = np.where(df['1unit']>df['5unit'], True값, False값)</code>
 
|<code>df['over_5unit'] = np.where(df['1unit']>df['5unit'], True값, False값)</code>
 
<nowiki>#</nowiki> 1unit 행의 값이 5unit 행의 값보다 큰 때에만 True값을 넣는다.
 
<nowiki>#</nowiki> 1unit 행의 값이 5unit 행의 값보다 큰 때에만 True값을 넣는다.
  
 +
<code>df['열'] = np.where(조건, 참, np.where(조건, 참2, 거짓))</code>
 +
|-
 +
|다중연산
 +
|특정 범주 안에 들어있는가 파악하기.
 +
|<syntaxhighlight lang="python">
 +
변수 = np.where(
 +
    (df['category'] == '값1') | (df['category'] == '값2') | ... , '참값', '거짓값')
 +
</syntaxhighlight>위 형태로는 너무 코드가 길어져서... 아래와 같이 축약하곤 한다.<syntaxhighlight lang="python">
 +
변수 = np.where(
 +
    df['category'].isin([값1, 값2, ...]) , '참값', '거짓값')
 +
</syntaxhighlight>
 +
|}
 +
 +
=== dataframe 행 추출(조건 추출) ===
 +
df.query() 활용.
 +
{| class="wikitable"
 +
!의도
 +
!설명
 +
!방법
 +
|-
 +
|조건 추출
 +
|특정 조건에 해당하는 데이터프레임의 행을 추출한다.
 +
 +
&, |, in, >, >= 등 일반적으로 사용하는 연산자 사용 가능.
  
<code>df[''] = np.where(조건, 참, np.where(조건, 참2, 거짓))</code>
+
조건에 외부변수를 사용하려면 @변수명 형태로 기입한다.
 +
|
 +
* df.query('조건')  # 조건을 문자열 형태로 넣어야 한다. 조건은 일반 if문법을 따라간다.
 +
*: 예시) <code>df.query('열이름 == 1')</code>  # 해당 열에서 1 값을 갖는 행만 뽑아낸다.
 +
* 외부 변수를 조건에 활용하려면 <code>df.query('열이름 == @외부변수명')</code> 형태로 @를 사용한다.
 
|}
 
|}
 
[[분류:Pandas:DataFrame]]
 
[[분류:Pandas:DataFrame]]

2023년 2월 1일 (수) 12:10 기준 최신판

1 개요편집

파생변수에 대해 다루는 문서.

dataframe의 평균, 합을 구한다든가 특정 연산을 수행해야 할 때가 있다. for문으로 일일이 할 수도 있지만, 효율이 그닥 좋진 않다.

2 수치조작편집

2.1 평균 구하기편집

의도 설명 방법
행 평균 구하기 각 행 방향의 평균 구하기 df.mean(axis=1)
열 평균 구하기 각 열에 대한 평균을 구한다. df.mean(axis=0)
특정 열 평균 구하기 df["열이름"].mean(axis=0)
특정 행의 특정 열에 대한 평균만 구하기 특정 행의 특정 데이터만 연산해서 새로운 열을 추가한다. df['mean'] = df[['start', 'high', 'low', 'close']].mean(axis=1)

2.2 각종 통계값편집

의도 설명 방법
각 방향으로의 합을 구한다. axis 옵션으로 방향을 지정한다.

0 : 칼럼

1 : 행

df.sum(axis=0)
누적합 df.cumsum(axis=0)
표준편차 구하기 df.std(axis=0)
분산 구하기 df.var(axis=0)

이외 다양한 함수를 제공하는데, 공식문서를 참고하자.

왜도 구하기. df.skew()

첨도 구하기. df.kurtosis()

2.3 행별 연산편집

의도 설명 방법
순위 구하기 ascending은 점수가 낮을 때 상위.
method 옵션
옵션 설명
average 동점자들의 그룹 내 평균
min 그룹 내 최소순위
max 그룹 내 최대순위
first 동점자 없이, 관측되는 순서에 따라 순위 부여
dense min에 1을 더한 값.
df.rank(method='옵션', ascending=False)

3 Dataframe 조건 연산편집

3.1 numpy.where 사용편집

의도 설명 방법
특정 행 사이를 if연산 dataframe의 if 연산.

간단하게 하려면 numpy가 필요하다.

  • 다중조건인 경우 &으로 연결한다.
  • or인 | 도 사용 가능.
  • 중첩조건은 엑셀처럼 작성하면 된다.
df['over_5unit'] = np.where(df['1unit']>df['5unit'], True값, False값)

# 1unit 행의 값이 5unit 행의 값보다 큰 때에만 True값을 넣는다.

df['열'] = np.where(조건, 참, np.where(조건, 참2, 거짓))

다중연산 특정 범주 안에 들어있는가 파악하기.
변수 = np.where(
    (df['category'] == '값1') | (df['category'] == '값2') | ... , '참값', '거짓값')
위 형태로는 너무 코드가 길어져서... 아래와 같이 축약하곤 한다.
변수 = np.where(
    df['category'].isin([값1, 값2, ...]) , '참값', '거짓값')

3.2 dataframe 행 추출(조건 추출)편집

df.query() 활용.

의도 설명 방법
조건 추출 특정 조건에 해당하는 데이터프레임의 행을 추출한다.

&, |, in, >, >= 등 일반적으로 사용하는 연산자 사용 가능.

조건에 외부변수를 사용하려면 @변수명 형태로 기입한다.

  • df.query('조건') # 조건을 문자열 형태로 넣어야 한다. 조건은 일반 if문법을 따라간다.
    예시) df.query('열이름 == 1') # 해당 열에서 1 값을 갖는 행만 뽑아낸다.
  • 외부 변수를 조건에 활용하려면 df.query('열이름 == @외부변수명') 형태로 @를 사용한다.