【数据分析】数据分析就不用掌握Python了?看看这位数据分析师给的最全资料!

2017 年 10 月 16 日 产业智能官

一,基本语法

在给大家分享之前呢,小编推荐一下一个挺不错的交流宝地,里面都是一群热爱并在学习Python的小伙伴们,大几千了吧,各种各样的人群都有,特别喜欢看到这种大家一起交流解决难题的氛围,群资料也上传了好多,各种大牛解决小白的问题,这个Python群:330637182 欢迎大家进来一起交流讨论,一起进步,尽早掌握这门Python语言。

1)python3新增特性:

A:print()变化

B:新增字节类型,可以与str进行互换,以b字母作为前缀

C:新增格式()进行格式化处理

D:dict里面删除了iterkeys(),itervalues(),iteritems(),新增keys(),values(),items()

二,数据分析

2.1基本理论

1)数据处理的最基本前期工作:

A:类别型数据

明确取值类别

明确每类取值的分布

B:数值型数据

了解极值与分位情况

了解正态性,均值,方差情况

了解变量相关性

C:通用处理

缺失值情况

重复性情况

检查 - >清洁 - >转换 - >建模 - >发现有用的信息/建议结论/支持决策

2)常见的任务分类:

A:分类问题

B:回归问题

C:聚类问题

D:时序分析问题

2.2基本工具

1)Numpy:ndarray

2)熊猫:Series和DataFrame

3)EDA的工具:Matplotlib,Seaborn,Bokeh

4)机器学习Scikit学习

5)量化分析与回测:塔里布/溜索/ PyAlgoTrade / Pybacktest

6)Scikit-Image:图像处理

7)NLTK:自然语言处理

2.3熊猫

1)数据结构:Series / DataFrame / GroupBy / Index / Style / Resample / Window

2)索引:IntegerIndex / CategoricalIndex / IntervalIndex / DatetimeIndex / TimedeltaIndex

3)功能:创建/转换/属性/索引/选择/切片/分组/排序

4)重塑/组合/合并/加入/序列化/绘制/丢失数据/数据操作

2.4 Sklearn

)预处理:包括样本切割,特征提取,

2)Model_selection:包括特征选择,交叉验证等

3)尺寸缩小:包括PCA,FA等

4)分类/回归,聚类

2.5 imblearn

2.6 statsmodels

2.7 tushare

三,金融数据分析基础

3.1业务背景

1)客户类型,业务类型,建模类型

3.2金融数据分析建模基础

1)EDA的常用方法

2)极值,缺失值的处理方法

3)标准化与归一化的处理

4)范畴变量的编码方式

5)变量分箱的常用方式

6)IV值的计算与经验判断

7)WOE的计算,WOE编码

8)交叉验证的策略与评价

9)各类模型的优缺点,各类模型对输入的质量敏感性程度

10)各类模型的调参经验总结

四,数据分析实例

4.1案例:KNN做玻璃分类 - KNN,sklearn,seaborn

第一步:用pandas读取csv文件,用df.info()方法查看

第二步:查看直观特征:

df.shape查看有几行几列

df.columns获取每一列的表头名称,可以将ÿ过滤掉,只留下X

df.head(n)的可以预览读取的数据Ñ行

df.dtypes可以查看DF的数据类型

第三步:查看简单的统计特征:

df.describe()可以查看count,mean,sd,min,max,25%,50%,75%

比如:通过意味着可以查看各个X的取值范围是否大概一致,如果相差太大,要做归一化处理

DF [ 'Y']。value_counts()可以用来查看样本里面ý标签的取值与对应个数情况

比如:如果某个取值的数目特别多,表名样本非常不平衡,需要做样品重等相关处理,或者将样本分割一下

第四步:查看可视化的统计特征:

歪斜的计算与描述 - 每个单变量X与Y ^的分布情况--distplot

查看哪些变量需要做归一化处理--boxplot

查看两两变量之间的关系--pairplot

第五步:分割数据集:trainset和testset,可以直接用sklearn.model_selection里面的train_test_split

第六步:使用KNN分类器做分类算法,看各个k取值下的准确率,从而决定best_k

第七步:使用KNN模型拟合列车,查看测试集的准确率

提升模型准确率:

1)非平衡样本的数据处理

2)特征的归一化处理

3)其他分类器的尝试

4)尝试获取更多的数据

4.2 CASE:逻辑回归做借贷数据分析

第一步:文件目录相关操作import os

os.path.exists(filepath)检查某个文件或目录是否存在

os.path.join(A,B)拼接目录地址

第二步:文件压缩与解压相关操作:import zipfile

用zipfile.ZipFile(originalFilepath)为zf:

zf .extractAll(targetPath)

第三步:pandas DataFrame里面取到某个列目标的数据,做类型转换:

data ['newcolname'] = pd.to_datetime(data ['oldcolname'])

DATA2 = data.groupby([ 'newcolname'])[ '目标']。总和()

DF = pd.DataFrame(DATA2).reset_index()

将日期换成月份:(将DateTimeIndex变更为PeriodIndex)

data ['newcolname_2'] = data ['newcolname']。apply(lamda x:x.to_period('M'))

第四步:观察数据

直观情况:raw_data.head(),raw_data.info(),raw_data.describe()

类型分布:used_data [ 'loan_status'] value_counts()。

按时间统计:新增一列作为日期时间索引,由这个索引列组成

used_data [ 'issue_d2'] = pd.to_datetime(used_data [ 'issue_d'])

data_group_by_date = used_data.groupby([ 'issue_d2'])。总和()

data_group_by_date.reset_index(就地=真)

data_group_by_date ['issue_month'] = data_group_by_date ['issue_d2']。apply(lambda x:x.to_period('M'))loan_amount_group_by_month = data_group_by_date.groupby('issue_month')['loan_amnt'] sum()loan_amount_group_by_month_df = pd .DataFrame(loan_amount_group_by_month).reset_index()

查看多变量间的分类统计情况:

data_group_by_state = used_data.groupby([ 'addr_state'])[ 'loan_amnt']。总和()

data_group_by_state_df = pd.DataFrame(data_group_by_state).reset_index()

data_group_by_term = used_data.groupby([ '级', '术语'])[ 'int_rate']。意味着()

data_group_by_term_df = pd.DataFrame(data_group_by_term).reset_index()

第五步:处理类变量,改成0,1这样的标签

filtered_mask = raw_data ['loan_status']。isin(['Fully Paid','Charge off','Default'])

filtered_data = raw_data [filtered_mask]

proc_filter_data = filtered_data.copy()

proc_filter_data [ '标签'] = filtered_data [ 'loan_status']。应用(formateY)

proc_filter_data [ 'emp_length_feat'] = filtered_data [ 'emp_length']。应用(formateEmpLength)

第六步:原始特征选择

第七步:缺失值处理

第八步:开始学习

A:LabelEncoder(),OneHotEncoder()检查类别var

B:处理不平衡数据:SMOTE

C:分割火车组,试验台

D:选择模型,例如Logistic回归

E:交叉验证调整最优化的超参数:cross_val_score

1)迭代策略的选择:KFold / LeaveOneOut / LeavePOut / ShuffleSplit

2)交叉验证评估的度量:score类型(例如,precision / f1 / precision / recall / roc_auc / r2)

4.3案例:股票量化示例

资料地址:http : //www.chinahadoop.cn/classroom/48/introduction

1)股票收益率(log(pt / p(t-1)))的计算

1)使用tushare提供的接口,获取上证指数的价格数据

2)使用tushare提供的接口,获取某只股票的价格数据

3)股票价格服从日志正常分布,所以对价格数据,需要日志价格的序列

log_return = np.log(price / price.shift(1))

4)两个序列处理缺失值:方案,dropna

5)add_constant(x)的加入截距数据

sm .add_constant(x)

6)调用OLS适合两个对数价格序列

sm .OLS(y,x_cons).fit()

7)查看模型的情况:

res_ols 。总结()

2)预测某只指数的涨跌

1)使用tushare读取某只指数(股票)的日ķ线数据

2)生成对应的时滞序列:price.shift(x)

hist_lag ['lag {}'。format(str(i + 1))] = hist_data ['close']。shift(i + 1)

3)标签每天的涨跌:

ret_df ['today'] = hist_lag ['today']。pct_change()* 100.0

ret_df ['lag {}'format(str(i + 1))] = hist_lag ['lag {}'format(str(i + 1))] pct_change()* 100.0

ret_df ['direction'] = np.sign(ret_df ['today'])

4)分割列车组/试验台

X = lag_ret_df [['lag1','lag2']]

y = lag_ret_df ['direction']

start_test = dt.datetime(2016,1,1)

X_train = X [X.index <start_test]

X_test = X [X.index> = start_test]

y_train = y [y.index <start_test]

y_test = y [y.index> = start_test]

5)选择不同的模型,交叉验证获取优化的超参数,在train set上拟合,在测试集上预测,评估模型的优

4.4案例:银行客户流失预警模型

1)使用熊猫读取2个数据源文件

2)合并ID:pd.merge(A,B,on ='ID')

3)区分数据类型:

4)EDA

A:distplot,看X的偏度,分布

B:boxplot,看所有X的分布(比对哪些需要做归一化,标准化)

C:pairplot,看X两两之间的关联情况

D:category var各个取值与X的分布情况--subplots合并多张图,轴

E:查看X是否需要做截断,截断前和截断后与Y的关系

5)变量预处理:

A:时间变量的处理,作为标签或者作为基于某一天之间的天数

统一处理两个时间的格式,转变为日期时间变量,两者相减之后取天属性

B:类别变量的编码,

最常用的做法,用y变量在这个类别变量的某一类中的比率来代替这一类的取值。

如:gender ='女' - 用等于'女'的坏样本比率ratio1来替代

性别= '男' - 用等于 '男' 的坏样本比率比* 2来替代

第二种做法,添加哑变量,适合于类别取值较少的情况

如:city ='guangzhou'

城市=“南京”

用isGuangzhou,isNanjing这两个变量来替换掉这个变量

第三种做法,用类变量的某一类在样本中的出现次数来代替。

如:status ='default'出现100次,''default''用100表示

状态= '正常' 的出现1000次, '正常的' 用1000表示

C:缺价值的处理

判断是不是有存在缺失值 - 从原始数据中取出非缺失数据,比对形状

6)变量衍生

A:X之间相除得到某个比例

B:X的均值,最大值,最小值

C:X的求和

7)模型选择与训练:

A:train_test_split

B:选择模型:

GBDT

神经网络

C:参数调整:

默认参数,参数调整

D:在选定的模型中查看变量的重要性

4.5 CASE:互联网金融/银行申请评分卡模型

1)使用熊猫读取3个输入文件

2)查看3个输入文件里面的ID,是否存在有的有值,有没有值,取3个里面都有的数据出来做列车

data1_Idx,data2_Idx,data3_Idx = set(data1 ['Idx']),set(data2 ['Idx']),set(data3 ['Idx'])

check_Idx_integrity =(data1_Idx - data2_Idx)|(data2_Idx - data1_Idx)|(data1_Idx - data3_Idx)|(data3_Idx - data1_Idx)

集(XXX)能够去掉XXX里面的重复数据

3)特征衍生:

A:一些原始变量,衍生不同时间窗口下面的count,mean等变量

B:category变量:

如果缺失率超过50%,则去掉这个变量

如果不超过,作为一种特殊取值留着

C:连续变量:

如果缺失率超过70%,则去掉这个变量

如果不超过,则考虑用填充的方式进行填充(random,mean,min)

4)特征分箱:

A:category变量:

如果分类的取值个数> 5个,则用每种分类里面的坏率代替每个分类

如果这个bin的大小坏样本占比为0,那么将这个bin与最小的那个bin合并,再重新检查最大bin

B:连续变量:

使用卡方分箱方法,默认5个bin

查看每个bin里面的坏率,如果差率不单调,则降低bin的个数重新分

查看最大大小的bin占比,如果超过90%,则删掉这个变量

5)变量选择:

A:计算每个剩下来的变量的IV值,WOE值

B:取IV> = 0.02的所有变量

C:生成变量对,计算变量对之间的相关系数,如果相关系数大于某个阈值(取0.8),则变量对里面选IV值高的那个变量入模

D:查看每个变量的VIF值,VIF = 1 /(1-R2),VIF> 10的去掉

E:循环检查入模变量是否显着,如果不显着(取Pvalue> 0.1为不显着),就去掉之后再跑一遍

F:直到所有变量都是显着的为止

6)跑基础的逻辑回归模型,将模型序列化存下来

LR = sm.Logit(y,X).fit()

saveModel = open('./ data / LR_Model_Normal.pkl','w')

和pickle.dump(LR,saveModel)

saveModel.close()

7)跑Lasso正则化(L1)的逻辑回归模型,type1 error和type 2 error采用不同的惩罚系数

A:用交叉验证的方式调超参数:

LR_model_2 = LogisticRegressionCV(Cs = [C_penalty],penalty ='l1',solver ='liblinear',class_weight = {1:bad_weight,0:1})

LR_model_2_fit = LR_model_2.fit(X_train,y_train)

B:序列化应用Lasso的逻辑回归模型

8)可以通过随机森林的方式确定变量的重要性,根据随机森林的结果(如:取重要前10的变量入模等)来跑逻辑回归模型


人工智能赛博物理操作系统

AI-CPS OS

人工智能赛博物理操作系统新一代技术+商业操作系统“AI-CPS OS:云计算+大数据+物联网+区块链+人工智能)分支用来的今天,企业领导者必须了解如何将“技术”全面渗入整个公司、产品等“商业”场景中,利用AI-CPS OS形成数字化+智能化力量,实现行业的重新布局、企业的重新构建和自我的焕然新生。


AI-CPS OS的真正价值并不来自构成技术或功能,而是要以一种传递独特竞争优势的方式将自动化+信息化、智造+产品+服务数据+分析一体化,这种整合方式能够释放新的业务和运营模式。如果不能实现跨功能的更大规模融合,没有颠覆现状的意愿,这些将不可能实现。


领导者无法依靠某种单一战略方法来应对多维度的数字化变革。面对新一代技术+商业操作系统AI-CPS OS颠覆性的数字化+智能化力量,领导者必须在行业、企业与个人这三个层面都保持领先地位:

  1. 重新行业布局:你的世界观要怎样改变才算足够?你必须对行业典范进行怎样的反思?

  2. 重新构建企业:你的企业需要做出什么样的变化?你准备如何重新定义你的公司?

  3. 重新打造自己:你需要成为怎样的人?要重塑自己并在数字化+智能化时代保有领先地位,你必须如何去做?

AI-CPS OS是数字化智能化创新平台,设计思路是将大数据、物联网、区块链和人工智能等无缝整合在云端,可以帮助企业将创新成果融入自身业务体系,实现各个前沿技术在云端的优势协同。AI-CPS OS形成的字化+智能化力量与行业、企业及个人三个层面的交叉,形成了领导力模式,使数字化融入到领导者所在企业与领导方式的核心位置:

  1. 精细种力量能够使人在更加真实、细致的层面观察与感知现实世界和数字化世界正在发生的一切,进而理解和更加精细地进行产品个性化控制、微观业务场景事件和结果控制。

  2. 智能:模型随着时间(数据)的变化而变化,整个系统就具备了智能(自学习)的能力。

  3. 高效:企业需要建立实时或者准实时的数据采集传输、模型预测和响应决策能力,这样智能就从批量性、阶段性的行为变成一个可以实时触达的行为。

  4. 不确定性:数字化变更颠覆和改变了领导者曾经仰仗的思维方式、结构和实践经验,其结果就是形成了复合不确定性这种颠覆性力量。主要的不确定性蕴含于三个领域:技术、文化、制度。

  5. 边界模糊:数字世界与现实世界的不断融合成CPS不仅让人们所知行业的核心产品、经济学定理和可能性都产生了变化,还模糊了不同行业间的界限。这种效应正在向生态系统、企业、客户、产品快速蔓延。

AI-CPS OS形成的数字化+智能化力量通过三个方式激发经济增长:

  1. 创造虚拟劳动力,承担需要适应性和敏捷性的复杂任务,即“智能自动化”,以区别于传统的自动化解决方案;

  2. 对现有劳动力和实物资产进行有利的补充和提升,提高资本效率

  3. 人工智能的普及,将推动多行业的相关创新,开辟崭新的经济增长空间


给决策制定者和商业领袖的建议:

  1. 超越自动化,开启新创新模式:利用具有自主学习和自我控制能力的动态机器智能,为企业创造新商机;

  2. 迎接新一代信息技术,迎接人工智能:无缝整合人类智慧与机器智能,重新

    评估未来的知识和技能类型;

  3. 制定道德规范:切实为人工智能生态系统制定道德准则,并在智能机器的开

    发过程中确定更加明晰的标准和最佳实践;

  4. 重视再分配效应:对人工智能可能带来的冲击做好准备,制定战略帮助面临

    较高失业风险的人群;

  5. 开发数字化+智能化企业所需新能力:员工团队需要积极掌握判断、沟通及想象力和创造力等人类所特有的重要能力。对于中国企业来说,创造兼具包容性和多样性的文化也非常重要。


子曰:“君子和而不同,小人同而不和。”  《论语·子路》云计算、大数据、物联网、区块链和 人工智能,像君子一般融合,一起体现科技就是生产力。


如果说上一次哥伦布地理大发现,拓展的是人类的物理空间。那么这一次地理大发现,拓展的就是人们的数字空间。在数学空间,建立新的商业文明,从而发现新的创富模式,为人类社会带来新的财富空间。云计算,大数据、物联网和区块链,是进入这个数字空间的船,而人工智能就是那船上的帆,哥伦布之帆!


新一代技术+商业的人工智能赛博物理操作系统AI-CPS OS作为新一轮产业变革的核心驱动力,将进一步释放历次科技革命和产业变革积蓄的巨大能量,并创造新的强大引擎。重构生产、分配、交换、消费等经济活动各环节,形成从宏观到微观各领域的智能化新需求,催生新技术、新产品、新产业、新业态、新模式。引发经济结构重大变革,深刻改变人类生产生活方式和思维模式,实现社会生产力的整体跃升。





产业智能官  AI-CPS



用“人工智能赛博物理操作系统新一代技术+商业操作系统“AI-CPS OS:云计算+大数据+物联网+区块链+人工智能)在场景中构建状态感知-实时分析-自主决策-精准执行-学习提升的认知计算和机器智能;实现产业转型升级、DT驱动业务、价值创新创造的产业互联生态链






长按上方二维码关注微信公众号: AI-CPS,更多信息回复:


新技术“云计算”、“大数据”、“物联网”、“区块链”、“人工智能新产业:智能制造”、“智能驾驶”、“智能金融”、“智能城市”、“智能零售新模式:案例分析”、“研究报告”、“商业模式”、“供应链金融”、“财富空间”


点击“阅读原文”,访问AI-CPS OS官网



本文系“产业智能官”(公众号ID:AI-CPS)收集整理,转载请注明出处!



版权声明产业智能官(公众号ID:AI-CPS推荐的文章,除非确实无法确认,我们都会注明作者和来源。部分文章推送时未能与原作者取得联系。若涉及版权问题,烦请原作者联系我们,与您共同协商解决。联系、投稿邮箱:erp_vip@hotmail.com




登录查看更多
9

相关内容

Group一直是研究计算机支持的合作工作、人机交互、计算机支持的协作学习和社会技术研究的主要场所。该会议将社会科学、计算机科学、工程、设计、价值观以及其他与小组工作相关的多个不同主题的工作结合起来,并进行了广泛的概念化。官网链接:https://group.acm.org/conferences/group20/
【干货书】R语言书: 编程和统计的第一课程,
专知会员服务
106+阅读 · 2020年5月9日
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
189+阅读 · 2020年3月12日
【新书】Pro 机器学习算法Python实现,379页pdf
专知会员服务
195+阅读 · 2020年2月11日
新书《面向机器学习和数据分析的特征工程》,419页pdf
专知会员服务
140+阅读 · 2019年10月10日
一文看懂怎么用 Python 做数据分析
大数据技术
23+阅读 · 2019年5月5日
Python中机器学习的特征选择工具
云栖社区
8+阅读 · 2018年7月16日
实战 | 用Python做图像处理(二)
七月在线实验室
17+阅读 · 2018年5月25日
Python | 爬爬爬:爬百度云,爬百度贴吧,爬爱奇艺
计算机与网络安全
3+阅读 · 2018年3月30日
【入门】数据分析六部曲
36大数据
17+阅读 · 2017年12月6日
python数据分析师面试题选
数据挖掘入门与实战
6+阅读 · 2017年11月21日
Python3爬虫之入门和正则表达式
全球人工智能
7+阅读 · 2017年10月9日
如何七周成为数据分析师
R语言中文社区
4+阅读 · 2017年7月19日
3D Deep Learning on Medical Images: A Review
Arxiv
11+阅读 · 2020年4月1日
Arxiv
12+阅读 · 2018年9月5日
W-net: Bridged U-net for 2D Medical Image Segmentation
Arxiv
19+阅读 · 2018年7月12日
Arxiv
3+阅读 · 2018年2月12日
Arxiv
6+阅读 · 2018年1月14日
VIP会员
相关资讯
一文看懂怎么用 Python 做数据分析
大数据技术
23+阅读 · 2019年5月5日
Python中机器学习的特征选择工具
云栖社区
8+阅读 · 2018年7月16日
实战 | 用Python做图像处理(二)
七月在线实验室
17+阅读 · 2018年5月25日
Python | 爬爬爬:爬百度云,爬百度贴吧,爬爱奇艺
计算机与网络安全
3+阅读 · 2018年3月30日
【入门】数据分析六部曲
36大数据
17+阅读 · 2017年12月6日
python数据分析师面试题选
数据挖掘入门与实战
6+阅读 · 2017年11月21日
Python3爬虫之入门和正则表达式
全球人工智能
7+阅读 · 2017年10月9日
如何七周成为数据分析师
R语言中文社区
4+阅读 · 2017年7月19日
Top
微信扫码咨询专知VIP会员