그래서 bin (분류)하고 새로운 기능을 만들기 위해 결합하고자하는 두 세트의 기능이 있습니다. 지도상의 좌표를 그리드로 분류하는 것과 다르지 않습니다.팬더로 2 차원 비닝
문제는 기능이 균등하게 분산되어 있지 않으므로 두 기능/좌표 모두에서 비닝 (예 : pandas.qcut()
) 할 때 quantile을 사용하고 싶습니다.
두 기능 모두에서 을 수행 한 다음 결과 레이블을 연결하는 것보다 나은 방법이 있습니까?
그래서 bin (분류)하고 새로운 기능을 만들기 위해 결합하고자하는 두 세트의 기능이 있습니다. 지도상의 좌표를 그리드로 분류하는 것과 다르지 않습니다.팬더로 2 차원 비닝
문제는 기능이 균등하게 분산되어 있지 않으므로 두 기능/좌표 모두에서 비닝 (예 : pandas.qcut()
) 할 때 quantile을 사용하고 싶습니다.
두 기능 모두에서 을 수행 한 다음 결과 레이블을 연결하는 것보다 나은 방법이 있습니까?
카톤 제품을 범주 형으로 작성하십시오.
는 dataframe을 고려 df
df = pd.DataFrame(dict(A=np.random.rand(20), B=np.random.rand(20)))
A B
0 0.538186 0.038985
1 0.185523 0.438329
2 0.652151 0.067359
3 0.746060 0.774688
4 0.373741 0.009526
5 0.603536 0.149733
6 0.775801 0.585309
7 0.091238 0.811828
8 0.504035 0.639003
9 0.671320 0.132974
10 0.619939 0.883372
11 0.301644 0.882258
12 0.956463 0.391942
13 0.702457 0.099619
14 0.367810 0.071612
15 0.454935 0.651631
16 0.882029 0.015642
17 0.880251 0.348386
18 0.496250 0.606346
19 0.805688 0.401578
우리는 당신은 튜플과 범주 데카르트 제품을 만들 수 있습니다 pd.qcut
d1 = df.assign(
A_cut=pd.qcut(df.A, 2, labels=[1, 2]),
B_cut=pd.qcut(df.B, 2, labels=list('ab'))
)
A B A_cut B_cut
0 0.538186 0.038985 1 a
1 0.185523 0.438329 1 b
2 0.652151 0.067359 2 a
3 0.746060 0.774688 2 b
4 0.373741 0.009526 1 a
5 0.603536 0.149733 1 a
6 0.775801 0.585309 2 b
7 0.091238 0.811828 1 b
8 0.504035 0.639003 1 b
9 0.671320 0.132974 2 a
10 0.619939 0.883372 2 b
11 0.301644 0.882258 1 b
12 0.956463 0.391942 2 a
13 0.702457 0.099619 2 a
14 0.367810 0.071612 1 a
15 0.454935 0.651631 1 b
16 0.882029 0.015642 2 a
17 0.880251 0.348386 2 a
18 0.496250 0.606346 1 b
19 0.805688 0.401578 2 b
새로운 categoricals을 만들 수 있습니다
d2 = d1.assign(cartesian=pd.Categorical(d1.filter(regex='_cut').apply(tuple, 1)))
print(d2)
A B A_cut B_cut cartesian
0 0.538186 0.038985 1 a (1, a)
1 0.185523 0.438329 1 b (1, b)
2 0.652151 0.067359 2 a (2, a)
3 0.746060 0.774688 2 b (2, b)
4 0.373741 0.009526 1 a (1, a)
5 0.603536 0.149733 1 a (1, a)
6 0.775801 0.585309 2 b (2, b)
7 0.091238 0.811828 1 b (1, b)
8 0.504035 0.639003 1 b (1, b)
9 0.671320 0.132974 2 a (2, a)
10 0.619939 0.883372 2 b (2, b)
11 0.301644 0.882258 1 b (1, b)
12 0.956463 0.391942 2 a (2, a)
13 0.702457 0.099619 2 a (2, a)
14 0.367810 0.071612 1 a (1, a)
15 0.454935 0.651631 1 b (1, b)
16 0.882029 0.015642 2 a (2, a)
17 0.880251 0.348386 2 a (2, a)
18 0.496250 0.606346 1 b (1, b)
19 0.805688 0.401578 2 b (2, b)
당신이 그렇게 생각한다면, 당신은 그들에게 명령을 내릴 수 있습니다.
좋아 보인다. 감사! 다른 챌린저가없는 경우 합리적인 기간 내에이 답변을 수락합니다. –
@ReubenL. 천만에요 – piRSquared
나는 생각할 수 없다. 그것을하는 절대적인 적절한 방법 인 것 같습니다. 더 나은 기능은 내장 기능을 갖는 것입니다. – piRSquared
내가 틀렸어. 내가 더 좋아할만한 것이있다. – piRSquared
나는 진지하게 기다리고있다 ... –