파이썬 판다스 assign 으로 새로운 컬럼 만들기,qcut으로 binning, bucketing 하기

1.Pandas 기초 - 파이썬 판다스 assign 으로 새로운 컬럼 만들기, qcut으로 binning, bucketing 하기

import pandas as pd
import numpy as np
df = pd.DataFrame({'A': range(1, 11), 'B': np.random.randn(10)})
df
A B
0 1 -2.173554
1 2 0.373508
2 3 2.305635
3 4 -0.250364
4 5 -1.567004
5 6 -0.937419
6 7 -0.107459
7 8 -1.705911
8 9 -0.957453
9 10 0.289418

assign()함수에 대한 키워드 인수. DataFrame에 할당 할 열 이름은 키워드 인수로 전달됩니다.

df.assign?

예제 코드: numpy.log()

import numpy as np

arr = [1, np.e, np.e2, np.e3]

print(np.log(arr))

출력:

[0. 1. 2. 3.]

df.assign(ln_A = lambda x: np.log(x.A)).head()
A B ln_A
0 1 -2.173554 0.000000
1 2 0.373508 0.693147
2 3 2.305635 1.098612
3 4 -0.250364 1.386294
4 5 -1.567004 1.609438
df.ln_A = np.log(df.A)
df
A B
0 1 -2.173554
1 2 0.373508
2 3 2.305635
3 4 -0.250364
4 5 -1.567004
5 6 -0.937419
6 7 -0.107459
7 8 -1.705911
8 9 -0.957453
9 10 0.289418

cut 함수 / qcut 함수 비교 참고

https://kimdingko-world.tistory.com/209

pd.qcut(df.B, 2, labels=["good", "bad"])
0    good
1     bad
2     bad
3     bad
4    good
5    good
6     bad
7    good
8    good
9     bad
Name: B, dtype: category
Categories (2, object): ['good' < 'bad']

cut 함수와 다르게 qcut 함수는 동일한 갯수로 구간을 나누는 것을 확인할 수 있다.

df.max(axis=0)
A    10.000000
B     2.305635
dtype: float64
df.min(axis=0) # axis=0은 index기준/ axis=1은 컬럼기준 
A    1.000000
B   -2.173554
dtype: float64

numpy.clip() 사용법

numpy.clip(array, min, max)

array 내의 element들에 대해서

min 값 보다 작은 값들을 min값으로 바꿔주고

max 값 보다 큰 값들을 max값으로 바꿔주는 함수.

예시

import numpy as np

arr1 = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

arr2 = np.clip(arr1, 3, 7)

print(arr2)

 

# 결과

    [ 3 3 3 3 4 5 6 7 7 7]
 df
A B
0 1 -2.173554
1 2 0.373508
2 3 2.305635
3 4 -0.250364
4 5 -1.567004
5 6 -0.937419
6 7 -0.107459
7 8 -1.705911
8 9 -0.957453
9 10 0.289418
df["B"].clip(lower=1,upper=3)
0    1.000000
1    1.000000
2    2.305635
3    1.000000
4    1.000000
5    1.000000
6    1.000000
7    1.000000
8    1.000000
9    1.000000
Name: B, dtype: float64
df["B"].abs()
0    2.173554
1    0.373508
2    2.305635
3    0.250364
4    1.567004
5    0.937419
6    0.107459
7    1.705911
8    0.957453
9    0.289418
Name: B, dtype: float64

»> abs(number)

전달한 숫자의 절대값을 돌려준다.

예제)

정수

abs(-1)

1

실수

abs(-1.75)

1.75