분석 Python/Pandas Tip(24)
-
pandas apply를 사용하여 다중 컬럼(multiple columns) 만들기
from sklearn.datasets import load_boston feature = load_boston() boston_data = pd.DataFrame(feature.data , columns=feature.feature_names) boston_data.head() def f(x, col1 , col2) : x , y = x[col1] , x[col2] plus = x+y minus = x-y multiply = x*y return pd.Series([plus,minus,multiply]) from functools import partial ff = partial(f , col1 = "CRIM", col2="RM") boston_data[["plus","minus","multiply"]]..
2020.06.09 -
pandas 의 filter 함수로 변수 선택하기
1. regex를 이용해서 특정 조건을 만족하는 변수만 찾아보기 a 에서는 _ 다음에 숫자 1~9 , 영어 a-z , 한글 가-힣 이 나오면 선택하기 b 에서는 _ 다음에 숫자 0~5 , 영어 a-z 나오면 선택하기 col = ["a_1111","a_23.0","a_3_rk","a_가","a_a", "a_0.0"] + ["b_1","b_2","b_89","b_가","b_a","b_0"] arr = np.random.uniform(size=(10,len(col))) data = pd.DataFrame(arr, columns=col) can = ["a","b"] filters = "_[1-9a-zA-Z가-힣]|".join(can)+"_[0-5a-zA-Z]" filters data.filter(regex = ..
2020.05.19 -
[ Python ] 정형데이터 용량 줄이는 함수 소개 (연속형, 이산형, 문자형)
광고 한 번씩 눌러주세요! 블로그 운영에 큰 힘이 됩니다 :) 파이썬에서 데이터를 그냥 사용하다 보면, 데이가 엄청 커서 불편할 때가 있다. 그래서 필자는 연속형,이산형,문자형에 따라 용량을 줄여주는 함수를 소개하겠다. ## 데이터 크기 확인 함수 def mem_usage(pandas_obj): if isinstance(pandas_obj,pd.DataFrame): usage_b = pandas_obj.memory_usage(deep=True).sum() else: # we assume if not a df it's a series usage_b = pandas_obj.memory_usage(deep=True) usage_mb = usage_b / 1024 ** 2 # convert bytes to me..
2020.04.12 -
pandas describe에 결측데이터 개수 포함해서 표현해보기
pandas에서 요약 통계를 적을 때 결측에 대한 정보는 제공하지 않는다. des1 = data[fac_col].astype(str).describe() des1 그래서 다음과 같은 방법으로 결측에 대한 정보나 다른 정보를 쉽게 합쳐서 표현할 수 있다. des1 = data[fac_col].astype(str).describe() des2 = data[fac_col].isnull().sum().to_frame(name = 'missing').T pd.concat([des1, des2]) 만약 결측률까지 포함시키고 싶다고 하면 다음과 같이 코드를 추가하면 된다. des1 = data[fac_col].astype(str).describe() des2 = data[fac_col].isnull().sum().t..
2020.04.08 -
[ Python ] pandas 읽고 쓰기 비교 (to_csv , to_pickle , to_feather)
도움이 되셨다면, 광고 한번만 눌러주세요. 블로그 관리에 큰 힘이 됩니다. 파이썬에서 분석을 하실 때 아무래도 가장 편하게 생각할 수 있는 것은 판다스를 활용하는 방법일 것이다. 그리고 저와 같은 개발쪽 초보자들은 가장 편한 to_csv , read_csv로 데이터를 저장하고 읽을 것이다. csv로 저장하면 다른 곳에서도 쓸 수 있어 편하지만, 데이터 자체를 저장하는 것에는 별로 좋지 않아 보인다. 왜냐하면 판다스로 읽고 쓰는 것이 빅데이터에서는 많은 시간을 소요하기 때문이다. 그래서 본 글에서는 csv , pickle, feather 총 3가지를 비교해보고자 한다. 여러 가지 방식(hdf , parquet)이 있지만, 이번 글에서는 다른 방식도 있다는 것을 말하고 싶기 때문에 궁금하시면 찾아서 하시면 ..
2019.12.21 -
[ Python ] Pandas idxmin , idxmax, pd.cut 함수 알아보기
데이터셋 만들기 from sklearn.datasets import load_iris import numpy as np import pandas as pd Iris = load_iris() concat = np.concatenate( (Iris.data , np.array(Iris.target).reshape(-1,1)) , axis = 1) data = pd.DataFrame(concat , columns = Iris.feature_names + ["Species"]) 가끔 먼가 데이터에서 가장 작은 값? 큰 값을 찾고 싶을 때가 있다. 그럴 때 보통 코드는 다음과 같다. idxmin() , idxmax() ## min data[data['sepal length (cm)'] == data['sepal ..
2019.10.29 -
[ Python ] modin 으로 pandas 더 빠르게 사용하기
https://modin.readthedocs.io/en/latest/installation.html 1. Installation — Modin 0.6.0 documentation 1. Installation There are a couple of ways to install Modin. Most users will want to install with pip, but some users may want to build from the master branch on the GitHub repo. 1.1. Installing with pip 1.1.1. Stable version Modin can be installed with pi modin.readthedocs.io 후배가 한번 언급을 해서 궁금해서 ..
2019.09.28 -
[ 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 -
[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 -
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