首页 > 其他分享 >2.class_model_use

2.class_model_use

时间:2024-11-22 10:06:39浏览次数:1  
标签:use return df class ar dz model arm

# -*- coding: utf-8 -*-
import pandas as pd
import datetime

def dataread(dz,ncn):
df=pd.read_excel(dz,dtype=dict.fromkeys(list(pd.read_excel(dz).columns),'str')).fillna('')
for k in df.columns.tolist():
if k in ncn:
df[k]=df[k].replace('','0')
df[k]=df[k].astype(float)
return df

def modelread(dz):
df=pd.read_excel(dz,dtype=dict.fromkeys(list(pd.read_excel(dz).columns),'str')).fillna('')
ncn=df.columns.tolist()[-2:]
for k in df.columns.tolist():
if k in ncn:
df[k]=df[k].replace('','0')
df[k]=df[k].astype(float)
return df

def model_use(dfd,dfm,optim): #optim 1 compress model 0 not compress
art=dfd.columns.tolist()
ard=dfd.values.tolist()

arm=dfm.values.tolist()

for i in ard:
i.append('')
for m in arm:
if typefind(i,m,art)==True:
i[-1]=m[-3]
break
if optim==1:
while True:
arm=model_compress(arm)
for i in ard:
if i[-1]=='':
for m in arm:
if typefind(i,m,art)==True:
i[-1]=m[-3]
break
if len(arm[0])==5:
break

art.append('guess_type')
df=pd.DataFrame(ard,columns=art)
return df

def typefind(ard,arm,art):
for m in range(len(arm)-3):
if m % 2 == 0 :
if arm[m]!='':
try:
j=art.index(arm[m])
except:
return False
else:
break
elif m % 2 ==1:
k=arm[m]
if len(k)>=2:
if k[:2]=='>=' or \
(k[0]=='<' and k[1] in '-1234567890'):
ar_temp=k.split(' and ')
if len(ar_temp)==2:
kk1=float(ar_temp[0][2:])
kk2=float(ar_temp[1][1:])
if kk1>=ard[j] or kk2<ard[j]:
return False
elif len(ar_temp)==1:
if ar_temp[0][:2]=='>=':
kk=float(ar_temp[0][2:])
if kk>=ard[j]:
return False
elif ar_temp[0][:1]=='<':
kk=float(ar_temp[0][1:])
if kk<ard[j]:
return False
else:
if k!=ard[j]:
return False
else:
if k!=ard[j]:
return False

return True


def model_compress(arm):
dic={}
t=len(arm[0])-3
for i in arm:
if tuple(i[:t-2]+[i[-3]]) not in dic.keys():
dic[tuple(i[:t-2]+[i[-3]])]=0
dic[tuple(i[:t-2]+[i[-3]])]+=i[-1]

dic2={}
for k in dic.keys():
if k[:t-2] not in dic2.keys():
dic2[k[:t-2]]=['',0,0]
if dic[k] > dic2[k[:t-2]][2]:
dic2[k[:t-2]]=[k[-1],0,dic[k]]

ar=[]
for k in dic2.keys():
ar.append(list(k)+dic2[k])
return ar


bg_dt = datetime.datetime.now()

#-------------------------------------------------------------------------------------
in_dz=r'C:\dataother.xlsx'
model_dz=r'C:\max_model - 测试20.xlsx'
out_dz=r'C:\datasetall classified 56w optim=0 测试20.xlsx'
optim=0
number_columns=[] #number_columns=['不含税价款(元)','税额(元)']
#-------------------------------------------------------------------------------------

df_in=dataread(in_dz,number_columns)
df_model=modelread(model_dz)

df_out=model_use(df_in,df_model,optim)

df_out.to_excel(out_dz,index=False)

diff=datetime.datetime.now()-bg_dt
diff_s=diff.days*24*60*60 + diff.seconds
print('Finished in ' + str(diff_s) + ' seconds')

标签:use,return,df,class,ar,dz,model,arm
From: https://www.cnblogs.com/sitongyan/p/18562150

相关文章

  • Diffusion Model 与 GAN 对比
    Diffusionmodel在图像生成领域风头开始超过GAN,主要有以下几方面原因:1.理论与训练稳定性方面:    理论清晰且易于理解:Diffusionmodel的原理是基于对数据逐步添加噪声再学习逆过程去噪来生成数据,这一过程类似于拆楼和建楼的形象化理解,相比GAN的对抗训练原理更直观......
  • Python数据分析NumPy和pandas(四十、Python 中的建模库statsmodels 和 scikit-learn)
    主要学习两个流行的建模工具包,statsmodels和scikit-learn。一、pandas与模型代码之间的接口模型开发的常见工作流程是使用pandas进行数据加载和清理,然后再切换到建模库来构建模型本身。模型开发过程的一个重要部分在机器学习中称为特征工程,这可以描述从原始数据集中提取......
  • Let'sGoFurther - Chapter 14: User Activation
      zzh@ZZHPC:/zdata/Github/greenlight$migratecreate-seq-ext.sql-dir./migrationscreate_token_table/zdata/Github/greenlight/migrations/000005_create_token_table.up.sql/zdata/Github/greenlight/migrations/000005_create_token_table.down.sql C......
  • 【Flinkcdc问题解决】java.lang.NoClassDefFoundError: org/apache/flink/shaded/guav
    1.环境介绍Flink1.17+Flinkcdc2.2.12.问题描述使用Flink1.17和Flinkcdc2.2.1环境进行数据加工,但是报以上错误,原因是版本不匹配,flinkcdc2.2.1用的是guava18,但是flink1.17用的是guava30,导致冲突。3.问题解决添加flink-sql-connector-mysql-cdc依赖<dependen......
  • addPermissionForUser方法
    @Transactional(rollbackFor=Exception.class)public  voidaddPermissionForUser(StringuserName,ListuserPermissionDTOList){if(CollectionUtils.isEmpty(userPermissionDTOList)){return;for(UserPermissionDTOuserPermissionDTO:userPermissionDTOList){I......
  • 【linux之clickhouse的问题记录】记由于clickhouse服务内存打满导致cpu/mem都飙升然后
    在记录相关文档的过程中发现监控中关于该节点的clickhouse数据异常,随后在node节点监控中也不见该节点信息于是找到相关机器进行检查,堡垒机发现无法连接clickhouse的节点,随后找同网段的机器尝试ping一下测试连通性,随后发现无法ping通错误信息:From172.21.0.1icmp_seq=1Destin......
  • windchill 扩充USERS表空间
    windchill报错ORA-01653:unabletoextendtablePLMLINK11.MISCLOGEVENTSby1024intablespaceUSERS这是需要扩充表空间了。检查表空间--检查表空间SELECTUPPER(F.TABLESPACE_NAME)"表空间名",D.TOT_GROOTTE_MB"表空间大小(M)",D.TOT_GROOTTE_MB......
  • 修改jar包中的class文件(windows)
    本文只适用于修改引用较少的class文件,引用较多的话,比较复杂,容易出错以下都是在windows环境下操作的1.利用jd-jui工具将jar包打开,找到需要修改的class文件选中文件---点击菜单File-----savesource ---将需要修改的class文件以及其引用到的文件转换为java文件保存到本地 2......
  • JAVA ClassLoader机制
    概要说明注:本篇文章是网上多篇文章的缝合,把我觉得写的不错的,对我理解ClassLoader有帮助的内容写到博客中,同时我尽量让一些学Java安全的同学更详细的学习ClassLoader。参考文章(1):https://www.cnblogs.com/luckforefforts/p/13642685.html-简短,可以快速了解ClassLoader概念和双......
  • 【C#】【winforms】MVP架构中从 Model 或 View 层主动向 Presenter 传递数据或调用处
    背景使用winforms做上位机软件,软件功能简单来说就是与串口通信。因为一个软件要应用于不同型号的下位机,采用MVP架构提高代码复用性。 其中Model层中实例化SerialPort对象:privateSerialPort_serialPort;只关注串口收发。 presenter层负责主要业务逻辑。view层负责......