Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- pig
- 결정계수
- 밀도기반
- list
- 교차검증
- join
- 다중공선성
- 분산분석
- k-means
- 딕셔너리
- 하둡
- SQL on 하둡
- 유사도
- cross validation
- T-검정
- distribution
- 가설검정
- 데이터프레임
- Sawzall
- 병렬 쿼리 시스템
- hive
- 분포
- Python
- DBSCAN
- pca
- dict
- p-value
- DataFrame
- merge
- SPLIT
Archives
- Today
- Total
one of a kind scene
[python] 데이터 프레임 column 끼리 연산하여 새로운 column 만들어주기(df.apply, lambda 활용) 본문
Python/데이터 핸들링
[python] 데이터 프레임 column 끼리 연산하여 새로운 column 만들어주기(df.apply, lambda 활용)
specialscene 2019. 12. 10. 23:19(상황)
데이터 프레임이 아래와 같을때 column1과 column2의 코사인 유사도를 계산하려고 한다
(데이터)
df로 명명
idx | column1 | column2 | column3 |
1 | [1,0,1] | [1,1,0] |
# cosin_similarity를 구하기 위한 라이브러리 import
from sklearn.metrics.pairwise import cosine_similarity
# cosine_similariy 계산해줄 수 있는 함수 cos_sim 정의
# 인자 a,b는 list형식으로 들어온다고 가정
# reshape은 계산 가능한 형태로 만들어주기 위해 해주는 것
def cos_sim(a,b):
similarity = cosine_similarity(np.array(a).reshape(1,len(a)), np.array(b).reshape(1,len(a)))
return similarity[0][0]
df['column3'] = df.apply(lambda x: cos_sim(x['column1'], x['column2']), axis=1)
(이렇게 이해하면 쉬웠음)
df.apply(lambda x: 어쩌구 저쩌구)를 써주면 for문 없이 row들이 순서대로 들어가
x로 받는다고 생각하면 이해하기 쉬웠음
(이렇게 해줄때 편한점)
예전에는 for문으로 코드를 억지로 만들어주는 느낌이 있었는데,
apply를 활용하면 좀 더 간결하게 column을 가지고 연산하여 새로운 column을 만들 수 있음
(이걸 몰랐을때 당황했던 경험)
1) cosine_similarity함수의 인자로는 np.array형태가 들어가는데
cosine_similarity(df['column1'], df['column2'])는 안되니깐 어떻게해야할지 몰랐음
2) for문으로 .iloc()을 이용해서 이상한 코드를 만들어서 썻었음
'Python > 데이터 핸들링' 카테고리의 다른 글
[python] index를 나타내는 list를 가지고 onehot 인코딩한 vector 형태의 list 만들어주기 (0) | 2019.12.11 |
---|---|
[python] 데이터 프레임 정렬 및 정렬 후 index reset하기 (0) | 2019.12.10 |
[python] 빈 데이터 프레임 만들기 (0) | 2019.12.10 |
[python] 데이터프레임으로 SQL의 join하기 (0) | 2019.12.10 |