pandas(33)
-
[ Python ] 모델 예측 TOP N번까지 값 뽑고 N번까지 Accuracy 계산하기
예측 정확도를 뽑다보면, 추천도 그렇듯이 TOP1만 보는 것이 아니라 TOP N번까지 보는 경우가 많다. 이런 경우 TOP N 번까지 결과값과 TOP N번까지 고려했을 때 정확도를 궁금해하는 경우가 흔하다. Python으로는 다음과 같이 하면 된다! 예를 들어 이런 다중 클래스에서 예측을 한다고 하자. 아무리 모델이 좋아도 1개의 클래스를 예측하는 것에 성능을 왠만하면 기대하기 어려울 것이다. pd.DataFrame(pred).head() 방법은 다음과 같다 top_n 함수를 잘 보면 된다. 저 함수를 이용해서 N번째로 큰 값을 찾을 수 있다. import numpy as np def top_n(data , n ) : return list(map(lambda x: np.argpartition(x, -n)..
2019.07.16 -
[ Python ] Pandas Lambda, apply를 활용하여 복잡한 로직 적용하기
도움이 되셨다면, 광고 한번만 눌러주세요. 블로그 관리에 큰 힘이 됩니다 ^^ 아래에 참고한 medium 사이트가 있으니, 한번 보시고 저것도 보시면 될 것 같습니다! Pandas에서 변수에 대해서 먼가 변형을 해서 새로운 변수로 만들거나 필터링을 하고 싶을 때가 있는데, 이거 복잡한 로직이 들어가게 되면 쉽게 잘 되지가 않습니다. 이러한 것들을 lambda와 apply로 몇 가지 예시를 보여주려고 합니다! 데이터는 Kaggle에 있는 포켓몬 데이터를 활용하였습니다. 복잡한 로직을 처리하면서 새로운 변수를 만들어야할 때 만약 type1이 dragon 이면 hp를 100을 더 주고 Normal 이면 hp를 절반으로 주는 칼럼을 만든다고 하자. ## 기본틀 df.apply(lambda x: func(x['c..
2019.07.13 -
Python Group 별로 Bar Graph 그릴 때,
그룹별로 시각화할 일이 있어서 찾아보는데, R과 같이 제공해주는 것도 있지만, 잘 생각해서 해야 하는 것도 있다 목적은 train과 test 별로 각각의 Category 비율 파악을 하는 것이 목적 f, ax = plt.subplots(3,4 , figsize = (20,20)) axx = ax.flatten() f2, ax2 = plt.subplots(3,4 , figsize = (20,20)) axx3 = ax2.flatten() for axx2 , axx4 , j in zip(axx, axx3, catcols) : #output = data.iloc[index_info[0]].reset_index(drop=True).iloc[idx][j].value_counts() tr = data.iloc[ind..
2019.06.09 -
[ Python ] Python에서도 R처럼 data.table을 사용할 수 있어요.
Python에서 대부분의 데이터를 읽을 때 주로 Pandas를 사용하지만, 작은 데이터를 읽을 때는 상관이 없다. 하지만 최근에 34GB짜리를 읽어보려고 했는데, 시간을 많이 잡아먹어서 스트레스를 너무 많이 받았다. 머 Spark나 이런 걸 사용하면 된다고 하지만, 전처리를 좀 하고 싶었던 게 있었는데, 아직 내가 Spark 같은 것을 잘 사용하지 못해서 결국 Pandas로 하였다. data.table은 알려진 바로는 단일 머신으로 했을 때 가장 빠르게 데이터 핸들링을 할 수 있는 도구다. 이 글에서는 100GB까지 된다고 하니, 잘 사용할 줄 알아야겠다. ## 리눅스 버전 # If you have Python 3.5 pip install https://s3.amazonaws.com/h2o-release..
2019.06.02 -
[TIP / Pandas] Pandas를 보다 올바르게 사용하는 방법
https://towardsdatascience.com/how-to-use-pandas-the-right-way-to-speed-up-your-code-4a19bd89926d How to use Pandas the RIGHT way to speed up your code The Pandas library has been a heavenly gift to the Data Science community. Ask any Data Scientist how they like to handle their datasets… towardsdatascience.com 원글을 참고하면 더욱 좋습니다. Pandas하면 파이썬에서 자주 사용하는 패키지인데요. 이것이 작은 데이터에서는 할만한데, 큰 데이터를 가끔 다룰 때는 ..
2019.05.23 -
[ 변수 생성] pandas groupby 와 merge로 파생변수 넣기
인터넷에 R처럼 파이썬에서 Groupby후 컬럼을 바로 생성하는 게 잘 보이지 않아서 공유합니다. data[['Location','month' , 'Sunshine']].head() 이러한 변수가 있을 때, 해보고 싶은 것은 지역과 월을 이용하여서 평균 온도를 넣고 싶을 때가 있다. 그럴 때 다음과 같이 하면 된다. newdata = data.groupby(['Location','month'], group_keys=False).apply(lambda x: x.Sunshine.mean() ).reset_index() newdata.columns = ["Location", 'month', "Shunshine_mean"] data2 = pd.merge(data, newdata, how='left') 다음과 같..
2019.05.21 -
Multiprocessing pandas package 2개 소개
일단 이전에 내가 하고 싶었던 replace에 대해서 둘다 적용이 되지는 않는 것 같다. ㅠㅠㅠ https://data-newbie.tistory.com/95 multiprocessing으로 pandas replace 하면 더 빠를까? 피드백을 좋아합니다! 머신러닝을 할 때 category 형식은 숫자 형식으로 바꿔줘야 한다. 이럴 때 가장 쉬운 방법은 cat.codes를 사용하면 빠르게 바꿀 수 있다. category["nameDest"].cat.codes 하지만 가끔 이렇.. data-newbie.tistory.com 구조를 잘 못 짠걸수도 있지만 현재 상황은 그렇다. 둘다 progress bar 지원해줌 두 패키지를 소개 하려고 한다. pandas_multiprocess URL pip install..
2019.05.08 -
multiprocessing으로 pandas replace 하면 더 빠를까?
피드백을 좋아합니다! 머신러닝을 할 때 category 형식은 숫자 형식으로 바꿔줘야 한다. 이럴 때 가장 쉬운 방법은 cat.codes를 사용하면 빠르게 바꿀 수 있다. category["nameDest"].cat.codes 하지만 가끔 이렇게 바꾼 코드를 다시 바꿔서 사용해야 할 때가 있다. 저런 식으로 5개짜리 category랑 2722362 같이 엄청나게 많은 숫자가 나오는 것을 알 수 있다. 실제로 여러가지 multiprocessing으로도 테스트를 해보고 그냥 해본 것도 해보니 결론적으로 그냥 한 개씩 하는 것이 내가 했을 때는 빨랐다... 왜 그럴까?.... ㅠㅠㅠ 암튼 다음과 같이 결과물을 공유하려 한다. 버전 1 partition을 나눠서 했을 경우 column 별로 multiproces..
2019.05.08 -
Pandas에서 보는 옵션 설정하는 방법
도움이 되셨다면, 광고 한번만 눌러주세요. 블로그 관리에 큰 힘이 됩니다 ^^ from IPython.core.display import display, HTML ## 전체 구간을 넓게 display(HTML("")) ## 각 컬럼 width 최대로 pd.set_option('display.max_colwidth', -1) ## rows 500 pd.set_option('display.max_rows', 500) ## columns pd.set_option('display.max_columns', 500) pd.set_option('display.width', 1000)
2019.05.01