보통은 유닉스 timestamp 를 많이 사용하기 때문에, 단순하게 아래처럼 하면 된다.

import pandas as pd

data['event_time']=pd.to_datetime(data['event_time'], unit='s')

 

 그런데, 간혹 엑셀에서 나오는 1900/01/01 기반의 날짜수를 계산해서 나오는 것이 존재하고는 한다.

이 문제로 이틀을 고민했는데 해결 방안은 생각보다 어렵지 않았다.

from datetime import datetime, timedelta

data['event_time']=data['event_time'].apply(lambda x: datetime(1900, 1, 1) + timedelta(days=x))

 

 회사 옮기면서 주력으로 사용하는 것은 오라클과 임팔라 그리고 파이썬이다. 파이썬의 경우 모델링을 할 때에는 정말 많이 사용하는데, 한동안 분석 및 솔루션 관련 일만 하면서 파이썬을 안하다 보니까 감이 많이 떨어졌다. 예전에 면접 본다고 할때에는 많이 했는데, 이제 열심히 써봐야겠다는 생각을 많이 한다.

 

어찌 된게 시각화보다 데이터 핸들링하는데 더 애를 먹느냐는 말이지. :) 그래도 힘내서 즐겁게 일해보자.

 

 

반응형

1. nltk에 필요한 파일들을 별도로 내려 받아 놓음

2. nlt의 path에 참조할 경로를 추가해준다.

import nltk

nltk.data.path.append("/home/parkselec/space_common/users/kp19983/NLTK")

3. 개별 download 해야 하는 데이터별로 경로가 다르므로 디렉터리를 적절히 생성해서 데이터를 저장해야 한다.

 

https://www.nltk.org/howto/data.html

반응형

 파이썬에서 여러 테이블을 하나로 머지할 때, 예전에는 pd.merge(a, b, on = 'key', how='left', validaiton='m:m') 을 중첩해서 사용해야만 했다. 예전 회사에서는 급하게 코딩하느라 이런 것을 생각하지 않았는데, 파이썬에서 여러개 테이블을 한번에 JOIN하는 아주 아름다운 방법이 있었다.

 

from functools import reduce

dfs=[df1, df2, df3, df4, df5]

base_df=reduce(lambda left, right: pd.merge(left, right, on='KEY', how='left', validate='m:m'), df)

 

 위와 같은 방식으로 하면 여러번 중첩하지 않아도 되는 테이블을 만들 수 있다. 물론 사전에 데이터프레임별로 중복되거나 하는 것들을 미리 정리하고 해야 하는 번거로움이 있기는 하지만 pd.merge(pd.merge())를 여러번에 걸쳐서 사용하는 것보다 훨씬 간편하고 효율적이라고 말해주고 싶다.

반응형

 1. 숫자형 컬럼

 num_cols=cpt_d1.dtypes(include=np.number).columns

 cpt_d1[num_cols] = cpt_d1[num_cols].fillna(0)

2. 문자형 컬럼

 str_cols=cpt_d1.dtypes(include=np.number).columns

 cpt_dt1[str_cols] = cpt_dt1[str_cols].fillna('')

 

 이렇게 하면 급하게 문자 및 숫자 missing값을 찾아서 보정이 가능합니다.

반응형

 회사 시스템에서는 플랫폼 화면 자료를 JSON으로 저장하고 이를 Text로 인코딩하여 테이블의 Clob 포맷으로 저장되어 있었다. 내가 원하는 것은 해당 자료를 디코딩해서 JSON String 포맷으로 만들고 여기서 내가 원하는 워드가 몇개 포함되어 있는 확인하는 것이었다. 가장 먼저 해야 할 것은 Text를 JSON String으로 변환하는 것이었다. 나를 도와주신 분은 Tech background가 있고, Java/C 기반 배경을 갖고 있고 나는 Python으로 해야 해서 검색을 해서 찾아낸 것이 바로 base64 library 였다.

 

import base64

str = 'ABDkjhdkobldop'

str_bytes = str.decode('UTF-8')

str_bytes

 

이렇게 하니까 내가 원하는 String 포맷으로 자료가 나왔다. 이 다음에 String 자료를 정제하고 함수를 이용해서 내가 원하는 워드를 포함한 것을 산출할 수 있었다. 구체적인 것은 다음에 코딩 자료를 추가하고, 구글에서 검색했던 자료를 링크해 본다.

 

https://webisfree.com/2020-11-07/python-base64-%EC%9D%B8%EC%BD%94%EB%94%A9-%EB%94%94%EC%BD%94%EB%94%A9-%EB%B3%80%ED%99%98-%EB%B0%A9%EB%B2%95

 

 원래는 자바로만 되는줄 알았는데 파이썬에서 된다고 해서 아주 빠르게 업무 처리가 가능해졌다는 것을 알 수 있었다.

 

반응형

 LightGBM에서 plot_tree()에서 에러가 나서, 해당 트리 모형을 수기로 그리는 것 이외에는 별다른 방법이 없다.

아래가 찾고 찾아서 만든 트리 모델 정보 가져오는  코드를 설명해주는 사이트이다. 아래 코드에서 clf.booster_trees_to_dataframe() 는 작동하지 않는다.

 

https://stackoverflow.com/questions/71305141/is-there-a-way-to-get-tree-data-as-a-list-with-the-lightgbm-classifier

 

Is there a way to get tree data as a list with the LightGBM Classifier

In random forest type models, there is usually an attribute like "estimators" which returns all the tree split as a list of lists. I can't seem find something similar with lightgbm. The c...

stackoverflow.com

 

반응형

+ Recent posts