분석시각화 대회 코드 공유 게시물은
내용 확인 후
좋아요(투표) 가능합니다.
Deleted Comment
openbabel 코랩에서 설치 너무 까다롭네요ㅠㅠ
혹시 설치방법 공유해주실 수 있으실까요?
으윽 바로 아래 게시글에 미니콘다로 설치하는 방법이 있었네요. 등잔밑이 어두워서 세시간 날렸습니다...
#코랩에서 sdf_load 하는데 5시간걸린데서 페러럴하게 짜봤습니다.
import pandas as pd
import numpy as np
from multiprocessing import Pool
num_cores = 4
#num_cores = multiprocessing.cpu_count()
def func(train_df):
mols = dict()
for n in tqdm(train_df.index):
mol = [i for i in pybel.readfile('sdf',sdf_load(n))]
if len(mol) > 0:
mols[n] = mol[0]
mols_df = pds.DataFrame().from_dict({n:v.calcdesc()for n,v in mols.items()}).transpose()
mols_df = mols_df.dropna(axis = 1)
mols_df.loc[:,'uid'] = [f'train_{n}' for n in mols.keys()]
df = pd.merge(train_df,mols_df,'outer',on='uid').dropna()
df['y'] = df['S1_energy(eV)'] - df['T1_energy(eV)']
return df
def parallelize_dataframe(df, func):
df_split = np.array_split(df, num_cores)
pool = Pool(num_cores)
df = pd.concat(pool.map(func, df_split))
pool.close()
pool.join()
return df
train = parallelize_dataframe(train_df, func)
현재 위 코드를 돌릴 때에는 'rotors' 칼럼이 제외되어 20 칼럼이 나오네요. 혹시 이것이 잘못된 것은 아닌지요?
좋은 코드 공유 감사합니다:) !~!
만약 rotors의 결과 중 Nan이 포함되어있다면 아래 코드로 인해 제거됩니다.
mols_df = mols_df.dropna(axis = 1)
babel의 version 차이로 rotors가 계산에서 제외 될 수 있구요.
확인해보시면 좋을것같아요 :)
Deleted Comment
DACON Co.,Ltd | CEO Kookjin Kim | 699-81-01021
Mail-order-sales Registration Number: 2021-서울영등포-1704
Business Providing Employment Information Number: J1204020250004
#901, Eunhaeng-ro 3, Yeongdeungpo-gu, Seoul 07237
E-mail dacon@dacon.io |
Tel. 070-4102-0545
Copyright ⓒ DACON Inc. All rights reserved
Deleted Comment