导读:本篇文章首席CTO笔记来给大家介绍有关python转学sas多久的相关内容,希望对大家有所帮助,一起来看看吧。
sas和python的区别
sas和python的区别:1.成本
SAS是商业软件,对于大部分个体数据分析师而言,是根本买不起的!但是SAS在机构或公司中拥有**的市场份额。而Python是开源免费的,开放下载使用。
2.处理逻辑
数据处理能力曾经一直是SAS的优势,SAS基于硬盘的处理能力也使得其可以处理一般规模的大数据。Python的计算都在RAM内存中进行,于是它的计算过程受限于机器的RAM内存大小。当然,伴随着Hadoop,Spark这一切都将不再是问题。
3.版本更新
这三个工具都提供了基本的、以及*常用的分析函数,你可以应付大部分模型的构建。但假如,你正好需要使用***前沿的技术或算法怎么办?
Python由于其开源*,算法可以很快得到更新,R因为一直广泛使用于学术界,因此更新*快。SAS的更新是自有的**团队完成的,SAS则要再下一个版本中得到更新。
4.编程
首先,SAS非常容易上手,proc步和data步,它的PROCSQL命令,对于任何一个学过SQL的人来说都可以立即上手。
在编程界,Python以简易***,在数据分析界也是如此。而且Python的notebook非常方面编辑、记录与分享。
5.用途
SAS:在商业分析领域,它是无可争辩的霸主。主要应用领域目前集中在银行、医*、保险、航空、政府等。
Python:Python近些年的风头大胜,标准库的完善,使得Python不仅使用于研究和原型构建。同时也适用于构建生产系统
如何零基础自学SAS?
从过来人的经验来看,*好*快的途径就是读牛人的代码,并且逐步运行看结果。比如你随便创建一个数据集,setsashelp.class,就可以运行很多数据步的代码。抛开SAS统计方法层面的各种proc,data步是SAS的精髓。看一个人SAS水平如何通常有两点,一就体现在数据步的使用上,比如看数据步会不会用first,last,setby算累计频数,因为PDV的读取是SAS的核心,如果你还会巧妙使用end=in=等技巧就刚好;二是看会不会写macro,要了解宏变量读取的方式,以及多个如何转义,个人感觉写宏其实不难,只要你打开options中的macrogen,mprint以及symbolgen等选项,并且知道在macro中可以开放的写%if以及%dowhile等,而不必像一般程序一样必须要写在封闭的数据步中就好,这样debug就变得很容易。
SAS和Python学哪个好具体业务用的是什么咯,对比可以看下
(1)SAS:在商业分析领域,它是无可争辩的霸主。SAS提供了丰富的统计功能,友好的GUI界面可以让分析师快速上手,技术支持也做的相当到位。但,太贵了,并且对于一些**的统计分析方法,SAS更新比较慢。
(2)Python:*早是一个开源脚本语言,近几年使用率大增。如今一些库(如numpy、scipy和matplotlib)和函数的引入,也使得它能支持几乎所有统计分析和统计建模工作。另外也由于Pandas这个库,使得Python在结构化数据的处理上非常给力。
python代码转化为sas代码,Python和SAS是两个很常用的数据挖掘工具。Python开源、免费、有丰富的三方库,一般在互联网公司广泛使用。而SAS需付费,且费用较高,一般互联网公司无法承担,更多的是在银行等传统**机构中使用,不过这两年由于Python太火,原本使用SAS的也开始逐渐转向Python了。
拥抱开源,越来越多的爱好者造出**的Python轮子,比如当下比较流行的万金油模型Xgboost、LightGBM,在各种竞赛的***级方案中均有被使用。而SAS的脚步就比较慢了,对于一些比较新的东西都无法直接提供,所以对于那些使用SAS的朋友,就很难受了。
一直以来很多粉丝问过东哥这个问题:有没有一种可以将Python模型转成SAS的工具?
因为我本身是两个技能都具备的,实际工作中一般都是配合使用,也很少想过进行转换。但是,*近东哥逛技术论坛刚好发现了一个骚操作,借助Python的三方库m2cgen和Python脚本即可完成Python模型到SAS的转换。
m2cgen是什么?
m2cgen是一个Python的第三方库,主要功能就是将Python训练过的模型转换为其它语言,比如R和VBA。遗憾的是,目前m2cgen尚不支持SAS,但这并不影响我们*终转换为SAS。
我们仍然使用m2cgen,需要借助它间接转换成SAS。具体的方案就是先将Python模型转换为VBA代码,然后再将VBA代码更改为SAS脚本,曲线救国。
如何使用m2cgen?
我直接用一个例子说明下如何操作。
数据我们使用sklearn自带的irisdataset,链接如下:
TheIrisDataset—scikit-learn1.1.1documentation
下面,演示一下如何将Python的XGBoost模型转成SAS代码。
首先导入所需的库包和数据。
#导入库
importpandasaspd
importnumpyasnp
importos
importre
fromsklearnimportdatasets
fromxgboostimportXGBClassifier
fromsklearn.model_selectionimporttrain_test_split
fromsklearn***tricsimportaccuracy_score
importm2cgenasm2c
#导入数据
iris=datasets.load_iris()
X=iris.data
Y=iris.target
登录后复制
然后,我们划分数据集,直接扔进XGBoost里面,建立base模型。
#划分数据为训练集和测试集
seed=2020
test_size=0.3
X_train,X_test,y_train,y_test=train_test_split(X,Y,test_size=test_size,random_state=seed)
#训练数据
model=XGBClassifier()
model****(X_train,y_train)
登录后复制
然后,再将XGBoost模型转换为VBA。使用m2cgen的export_to_visual_basic方法就可以直接转成VBA了。转换成其他语言脚本也是同理,非常简单。
code=m2c.export_to_visual_basic(model,function_name='pred')
登录后复制
核心的骚操作来了!
m2cgen不支持SAS,但我们可以把VBA代码稍加改动,就能变成符合SAS标准的代码了。而这个改动也无需手动一个个改,写一段Python脚本即可实现VBA脚本转换为SAS脚本。
改动的地方不多,主要包括:删除在SAS环境中不能使用的代码,像上面结果中的Module***,Functionyyy,DimvarZAsDouble,还有在语句结尾加上;,这些为的就是遵循SAS的语法规则。
下面就是转换的Python脚本,可以自动执行上面所说的转换操作。
#1、移除SAS中不能使用的代码
code=re.sub('Dimvar.*AsDouble','',code)
code=re.sub('EndIf','',code)
#下面操作将修改成符合SAS的代码
#2、修改起始
code=re.sub('ModuleModel\nFunctionpred(ByRefinputVector()AsDouble)AsDouble()\n',
'DATApred_result;\nSETdataset_name;',code)
#3、修改结尾
code=re.sub('EndFunction\nEndModule\n','RUN;',code)
#4、在结尾加上分号';'
all_match_list=re.findall('[0-9]+\n',code)
foridxinrange(len(all_match_list)):
original_str=all_match_list[idx]
new_str=all_match_list[idx][:-1]+';\n'
code=code.replace(original_str,new_str)
all_match_list=re.findall(')\n',code)
foridxinrange(len(all_match_list)):
original_str=all_match_list[idx]
new_str=all_match_list[idx][:-1]+';\n'
code=code.replace(original_str,new_str)
#用var来替代inputVector
dictionary={'inputVector(0)':'sepal_length',
'inputVector(1)':'sepal_width',
'inputVector(2)':'petal_length',
'inputVector(3)':'petal_width'}
forke*****ctionary.keys():
code=code.replace(key,dictionary[key])
#修改预测标签
code=re.sub('Math.Exp','Exp',code)
code=re.sub('pred=.*\n','',code)
temp_var_list=re.findall(r"var[0-9]+(\d)",code)
forvar_idxinrange(len(temp_var_list)):
code=re.sub(re.sub('\(','\(',re.sub('\)','\)',temp_var_list[var_idx])),iris.target_names[var_idx]+'_prob',code)
登录后复制
对以上脚本分步解释说明一下。
1、开头、结尾、输出名称
前三个部分非常简单。使用正则表达式删除多余的行,然后将脚本的开头更改为DATApred_result;\nSETdataset_name;。
使用过SAS的同学就很*悉了,pred_result是运行SAS脚本后的输出表名称,dataset_name是我们需要预测的输入表名称。
*后再将脚本的结尾更改为RUN;。
#移除SAS中不能使用的代码
code=re.sub('Dimvar.*AsDouble','',code)
code=re.sub('EndIf','',code)
#下面操作将修改成符合SAS的代码
#修改起始
code=re.sub('ModuleModel\nFunctionpred(ByRefinputVector()AsDouble)AsDouble()\n',
'DATApred_result;\nSETdataset_name;',code)
#修改结尾
code=re.sub('EndFunction\nEndModule\n','RUN;',code)
登录后复制
2、语句末尾添加分号
为遵循SAS中的语法规则,还需将每个语句的结尾加上;。仍用正则表达式,然后for循环在每一行*后添加字符;即可。
#在结尾加上分号';'
all_match_list=re.findall('[0-9]+\n',code)
foridxinrange(len(all_match_list)):
original_str=all_match_list[idx]
new_str=all_match_list[idx][:-1]+';\n'
code=code.replace(original_str,new_str)
all_match_list=re.findall(')\n',code)
foridxinrange(len(all_match_list)):
original_str=all_match_list[idx]
new_str=all_match_list[idx][:-1]+';\n'
code=code.replace(original_str,new_str)
登录后复制
3、映射变量名称
使用字典将InputVector与变量名称映射到输入数据集中,一次*更改所有InputVector。
#用var来替代inputVector
dictionary={'inputVector(0)':'sepal_length',
'inputVector(1)':'sepal_width',
'inputVector(2)':'petal_length',
'inputVector(3)':'petal_width'}
forke*****ctionary.keys():
code=code.replace(key,dictionary[key])
登录后复制
4、映射变量名称
*后一步就是更改预测标签。
#修改预测标签
code=re.sub('Math.Exp','Exp',code)
code=re.sub('pred=.*\n','',code)
temp_var_list=re.findall(r"var[0-9]+(\d)",code)
forvar_idxinrange(len(temp_var_list)):
code=re.sub(re.sub('\(','\(',re.sub('\)','\)',temp_var_list[var_idx])),iris.target_names[var_idx]+'_prob',code)
登录后复制
然后保存sas模型文件。
#保存输出
vb=open('vb1.sas','w')
vb.write(code)
vb.close()
登录后复制
*后,为了验证sas脚本是否正确,我们将sas模型的预测结果和Python的结果进行一下对比。
#python预测
python_pred=pd.DataFrame(model.predict_proba(X_test))
python_pred***lumns=['setosa_prob','versicolor_prob','virginica_prob']
python_pred
#sas预测
sas_pred=pd.read_csv('pred_result.csv')
sas_pred=sas_pred.iloc[:,-3:]
sas_pred
(abs(python_pred-sas_pred)0.00001).sum()
登录后复制
可以看到,两个预测的结果基本上一样,基本没问题,我们就可以在sas中跑xgboost模型了。
总结
上面只是个*简单的示例,没有对特征处理。对于复杂的建模过程,比如很多特征工程,那就要对Python脚本进一步调整了。
以上就是本次分享的所有内容,如果你觉得文章还不错,欢迎关注公众号:Python编程学习圈,每日干货分享,发送“J”还可领取大量学习资料,内容覆盖Python电子书、教程、数据库编程、Django,爬虫,云计算等等。或是前往编程学习网,了解更多编程技术知识。
python
机器学习
数据挖掘
视频教程-完整的Python和SAS数据分析-大数据
422阅读·0评论·0点赞
2020年5月28日
python访问sas逻辑库,SAS|逻辑库和SAS数据集
460阅读·0评论·0点赞
2021年4月26日
python学习笔记---linux/windows调用sas程序
875阅读·0评论·0点赞
2019年10月24日
python可以代替sas_Python、R语言、SAS、SPSS优缺点比较?(转)
604阅读·0评论·1点赞
2020年12月17日
python访问sas逻辑库_SAS编程基础-逻辑库和数据集
138阅读·0评论·0点赞
2020年12月9日
服务器部署sas_如何在阿里云SAS上部署WordPress网站
1429阅读·0评论·0点赞
2020年8月29日
python和sas配合使用_太骚了!Python模型完美切换SAS,还能这么玩。。
1963阅读·0评论·2点赞
2021年1月14日
python导入sas数据集_将变量从SAS传递到Python
344阅读·0评论·0点赞
2021年2月3日
python访问sas逻辑库_SAS岩论|在JupyterNotebook中使用SAS
429阅读·0评论·0点赞
2020年12月9日
#sas建模-建模入门介绍
2257阅读·0评论·2点赞
2019年9月18日
#sas建模-建模过程介绍
2805阅读·1评论·0点赞
2019年9月18日
python调用sas_SAS日常使用的语句预定的python表达
370阅读·0评论·0点赞
2020年12月8日
python读取sas数据集_SASpy模块,利用Python操作SAS
1432阅读·0评论·0点赞
2020年11月26日
python可以代替sas,像SAS一样转置的python数据帧
156阅读·0评论·0点赞
2021年4月27日
sas和python的区别知乎_银行业为什么喜欢用sas而不是python?
1559阅读·0评论·0点赞
2020年12月9日
python和sas代码编写_如何从SAS到python编写if语句
329阅读·0评论·0点赞
2021年1月29日
saspython知乎_pyt
sas和python的区别知乎根据我个人经历的话:风管爱SAS,策略爱Python。SAS能handle很大数据量,量大时***,而且很多统计功能用起来方便,和其它软件结合的很好,可以*采众长。有时候有些功能sas能实现但proc加其它软件做merge啊join啊能快很多;Python的话就比较好上手,而且package各式各样的,设计那种从网页扒数据的策略啊,timeseries相关的策略啊,都可以选相应的package辅助。另外我的经验来看的确美帝大公司很爱SAS,我前老板说这个写简历上会非常fancy。【毕竟这软件不便宜个人一般不用?】Python的话很accessible,用mac就更是自带python。另外一些网上的回测平台都是用的python的语法,的确很适合拿它写策略吖~
python做数据分析怎么样????我使用python这门语言也有三年了,被其简洁、易读、强大的库所折服,我已经深深爱上了python。其pythonic语言特*,对人*其友好,可以说,一个完全不懂编程语言的人,看懂python语言也不是难事。
???在数据分析和交互、探索*计算以及数据可视化等方面,相对于R、MATLAB、SAS、Stata等工具,Python都有其优势。近年来,由于Python库的不断发展(如pandas),使其在数据挖掘领域崭露头角。结合其在通用编程方面的强大实力,我们完全可以只使用Python这一种语言去构建以数据为中心的应用程序。
???由于python是一种解释*语言,大部分编译型语言都要比python代码运行速度快,有些同学就因此鄙视python。但是小编认为,python是一门高级语言,其生产效率更高,程序员的时间通常比CPU的时间值钱,因此为了权衡利弊,考虑用python是值得的。
Python强大的计算能力依赖于其丰富而强大的库:
Numpy
NumericalPython的简称,是Python科学计算的基础包。其功能:
1.快速**的多维数组对象ndarray。
2.用于对数组执行元素级计算以及直接对数组执行数**算的函数。
3.线*代数运算、傅里叶变换,以及随机数生成。
4.用于将C、C++、Fortran代码集成到Python的工具。
除了为Python提供快速的数组处理能力,NumPy在数据分析方面还有另外一个主要作用,即作为在算法之间传递数据的容器。对于数值型数据,NumPy数组在存储和处理数据时要比内置的Python数据结构**得多。此外,由低级语言(比如C和Fortran)编写的库可以直接操作NumPy数组中的数据,无需进行任何数据复制工作。
SciPy
是一组专门解决科学计算中各种标准问题域的包的集合,主要包括下面这些包:
1.scipy.integrate:数值积分例程和微分方程求解器。
2.scipy.linalg:扩展了由numpy.lina
我们在外贸建站教程中介绍过:如何在 WordPress托管主机(譬如 SiteGround)中一键开通Cloudflare CDN,以便增加网站安全和提升网站访问速度,但是,如果你的主机不提供一键开通Cloudflare CDN功能怎么办呢?跟着本篇教程做,一点也不难。
本篇教程适合这类网站:你的网站所在的主机不提供免费CDN功能,譬如Cloudways主机,但你又想开通Cloudflare CDN。
步骤概要:
举几个实际案例,可能有跟你一样的情况,如果不想看就跳到下文看教程
注册Cloudflare
账户创建完成后,请添加你的网站域名到cloudflare中
添加站点
接下来我们选择免费计划并继续,免费计划就包含了DDOS共计缓解、全球内容分发网络(cdn)。
开通免费计划
然后系统会自动扫描你的站点查找已有的DNS记录,也就是解析记录,并导入到Cloudflare中,免去你重复配置的功夫。
扫描已有的DNS记录
当扫描完成后,进入如下界面,会呈现你已有的解析记录,但是由于我的演示网站是个全新的域名,所以下图中没有解析记录。如果你看到解析记录的代理状态是橙色云朵,表示开启了CDN;如果是灰色云朵,表示仅做解析用途,不会给予保护和CDN。我们点击继续按钮
在接下来的弹出窗中,由于我没有添加任何记录,系统提示我以后要添加解析记录,这样才能顺利访问网站,我们点击确认继续。
*后,Cloudflare告诉你如何修改名称服务器,也就是域名服务器(NS)。请登录到你现有的域名注册处,将已有的NS删除,新增Cloudflare提供给你的NS,通常更换NS全部生效需要24h,一旦生效,Cloudflare也会给你发送邮件通知。
我的域名是在阿里云注册的,以阿里云为例,我们来学习如何修改域名服务器。如果你在porkbun、namesilo注册的域名,可以查看这篇教程:如何使用NS进行域名解析
首先,在域名管理页面,点击域名右侧的管理按钮
进入域名基本信息界面,找到修改DNS,点击进入
继续点击修改DNS服务器
然后填入cloudflare提供给你的两条NS记录并确认保存
保存成功后,你将看到当前DNS服务器已经成功修改了。
如果你想查看域名解析是否生效,可以通过网站 ,输入域名查看NS生效与否。
如果域名成功添加到cloudflare,你会收到邮件通知。
完成域名服务器修改后,回到cloudflare,点击下图所示的完成,检查名称服务器按钮继续。
接下来有个快速入门指南
第1项,提高安全*。
这是与****S相关的,当你给网站安装SSL**后,可以启用自动****S重写,以避免网站里有****和****s混合的情况,如果你的网站还安装SSL**,那就不要开启了。
第2项,优化*能。
通常我们使用 WordPress建站的话,建议安装诸如 WP Rocket缓存插件,它们都提供了js、css、html文件缩小功能,所以可以不勾选。
第3项,摘要。这是对前面两项配置的总结,确认无误后,点击完成即可。
此时你将跳转到这几个域名的配置管理界面,请点击图中的DNS去配置解析记录。
由于我的域名是一个崭新的、未曾做任何解析记录的域名,所以,在DNS页面,没有任何解析记录。如果你的域名在原解析处有解析记录,那么将会自动同步过来。
接下来,如果我们要将域名指向网站所在的服务器,来添加一条A记录,如下图所示,我将配置loyseo.***指向到cloudways服务器
同理,如果你的邮箱是网易、腾讯或阿里企业邮箱,你也将获得邮箱解析记录,将他们添加到Cloudflare中即可。
*后,如果你的网站安装了SSL,启用了****s,那么如下图所示,将SSL/TLS页面中的模式设为完全(严格)。
相关教程:
首先我们需要找到CMD的文件,然后右键以管理员权限打开。因为win7默认是没有**权限的,而我们要访问卸载环境需要**权限。其文件路径为:C:\Windows\System32\cmd\。结果如图: 然后我们需要将命令切换到phpnow的安装文件夹,请按照如图设置: 然后输入pncp,进入到phpnow软件管理界面。如图: 然后选择33.就可以卸载了
在制作wordpress主题猴子wordpress插件过程中,经常需要添加样式文件或者js脚本文件,由于大多数用户运行网站上多个插件,可能会加载 各式各样的文件,容易引起冲突,所以wordpress系统为开发者提供了一个很好的脚本及样式文件的排队系统,这有助于防止插件之间的脚本冲突问题。这 篇文章中,主要介绍wordpress中添加Javascript文件与css文件的方法
SEO是由英文Search Engine Optimization缩写而来,中文意译为“搜索引擎优化”。 简单地说,SEO是指从自然搜索结果获得网站流量并且提升网站排名权重的技术与过程。复杂但严谨些的定义:SEO是指在了解搜索引擎自然排名机制的基础上,对网站进行内部及外部的调整优化,改进网站在搜索引擎中的关键词自然排名,获得更多流量,从而达成网站销售及品牌建设的目标。 如果想学习SEO
云虚拟主机安装WordPress很简单,主要步骤是: 将域名绑定到虚拟主机。 到WordPress**下载**版本的中文版安装包 用FTP软件登录虚拟主机的FTP账号,将下载的WordPress安装包上传到htdocs文件夹下。 返回主机管理平台解压安装包。 解压完成后我们看到新生成了一个wordpress文件目录,我们需要把wordpress目录下的所有文件移动到虚拟主机的根目录htdocs下