《金融大数据分析》-课件 项目二 金融大数据处理流程_第1页
《金融大数据分析》-课件 项目二 金融大数据处理流程_第2页
《金融大数据分析》-课件 项目二 金融大数据处理流程_第3页
《金融大数据分析》-课件 项目二 金融大数据处理流程_第4页
《金融大数据分析》-课件 项目二 金融大数据处理流程_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

金融大数据分析项目二金融大数据处理流程目录01Python数据分析工具02金融大数据采集03金融大数据处理流程金融大数据可视化0401Python数据分析工具Python中的标准库4Python3中的标准库是随Python解释器一起安装的,其中包含了很多的模块和包os模块sys

模块time模块datetime

模块math模块random模块urlib模块Python中的第三方库5PyPI·Python包索引:/Python中的第三方库6第三方库可以涵盖各种领域,包括但不限于:数据分析:numpy,pandas,scipy机器学习:scikit-learn,tensorflow文本处理:pdfminer,openpyxl,python-docx,beautifulsoup4网络爬虫:requests,scrapyWEB开发:django,pyramid数据可视化:matplotlib,mayavi游戏开发:pygame,panda3d数据挖掘与可视化中常见第三方库7扩展库说明NumPy提供复杂数组和矩阵运算的函数pandas提供直观的数据结构及强大的数据管理和数据处理功能matplotlib用户制图及其他二维数据可视化Seaborn基于matplotlib进行高级封装的可视化库scikit-learn提供分类、回归、聚类等机器学习工具statsmodels统计建模分析,包含经典的统计学、经济学算法第三方库的安装8安装方法特点使用pip命令在线安装比较方便,并且会自动解决上级依赖问题下载库的whl文件离线安装安装灵活,但是需要自行解决上级依赖问题通过IDE安装简单直接,需要已经安装好IDE(如Pycharm)下载编译好的文件一般是window系统才提供现成的可执行文件包第三方库的安装9pip安装工具D:\>pip-hUsage:pip<command>[options]Commands:installInstallpackages.downloadDownloadpackages.uninstallUninstallpackages.freezeOutputinstalledpackagesinrequirementsformat.listListinstalledpackages.showShowinformationaboutinstalledpackages.checkVerifyinstalledpackageshavecompatibledependencies.configManagelocalandglobalconfiguration.searchSearchPyPIforpackages.第三方库的安装10pip安装工具D:\>pipinstall<第三方库名>安装第三方库D:\>pipinstallpandasD:\>pipinstall–U<第三方库名>对已安装的第三方库进行更新D:\>pipinstall-Upandas第三方库的安装11pip安装工具D:\>pipuninstall<第三方库名>卸载指定第三方库D:\>pipuninstallpandasD:\>pipdownload<第三方库名>下载但不安装指定第三方库D:\>pipdownloadpandas第三方库的安装12pip安装工具D:\>piplist列出当前系统已经安装的第三方库第三方库的安装13pip安装工具D:\>pipshow<第三方库名>列出指定第三方库的详细信息第三方库的安装14集成安装通过集成IDE进行安装,如Anaconda文件安装/第三方库的导入15import

模块名称import

模块

as

别名import语句模块名称.函数/变量/类

别名.函数/变量/类

第三方库的导入162.from语句from模块名称import函数/变量/类

from模块名称*直接使用该函数/变量/类

把一个模块中的所有内容全都进行导入第三方库的导入17import

模块

as

别名第三方库的导入18importmathimportmathas

m

frommathimportpifrommathimport*print(math.pi)print(m.pi)print(pi)print(pi)print(ceil(pi))NumPy(NumericPython)19快速、高效的多维数组对象ndarray一组功能强大的数组处理函数线性代数操作、傅里叶变换以及随机数生成等的接口集成C或C++代码的接口NumPy(NumericPython)20#-*-coding:utf-8-*-#导入numpy库importnumpyasnp

data=[1,2,3,4,5]#利用array函数构建一个数组arr1=np.array(data)print('np.array(data):\n',arr1)#将数组进行输出#获取数组arr1的第4个元素(数组下标从0开始)print('arr1[3]:\n',arr1[3])

#获取数组arr1的第2到第4个元素(数字下标从0开始,[]区间为左闭右开)print('arr1[1:4]:\n',arr1[1:4])#利用arange(N)构建数组,从0-(N-1)的一个数组,默认元素逐步加1arr2=np.arange(5)print('np.arange(5):\n',arr2)Pandas21Python版的Excel一维数组对象Series二维数组对象DataFramePandas--Series数据结构22#导入pandas库importpandasaspddata=['a','b','c','d','e']#使用默认行索引构造一个seriesseri=pd.Series(data)print(seri)index=[1,2,3,4,5]#使用指定的行索引seri1=pd.Series(data,index)print(seri1)Pandas--DataFrame数据结构23行索引列索引importpandasaspd#导入pandas包#构建部分银行卡用户数据表格data=pd.DataFrame({'ID':[20013105,16052556,21100614,10121286,21060101],'年龄':[44,32,56,41,27],'性别':['男','男','男','女','女'],'家庭成员':[2,1,1,3,2],'学历':['研究生','本科','高中','研究生','本科'],'婚姻状况':['已婚','未婚','离异','未婚','已婚’]})print('data:\n',data)Pandas--DataFrame数据结构24#按行取表格中行索引为1至3的数据的第1行至第三行数据print('data.iloc[1:4]\n',data.iloc[1:4])

#返回ID、年龄两列的数据print('data[[\'ID\',\'年龄\']]\n',data[['ID','年龄']])#返回前3行数据,若head()括号中不指定行数,则默认为返回前5行print('data.head(3)\n',data.head(3))#将表格数据按照ID列的值进行排序data1=data.sort_values(by='ID')#输出上一行代码的排序结果print('data.sort_values(data,by=\'ID\')\n',data1)#也支持从EXCEL文件读取数据至dataframe对象中data=pd.read_excel('D:\data.xlsx')Matplotlib25importnumpyasnpimportmatplotlib.pyplotasplt#导入绘图包#定义X轴的坐标值x=np.array([0,10])#定义Y轴的坐标值y=np.array([0,100])#根据X、Y轴坐标值对,绘制线图plt.plot(x,y)#将图进行展示plt.show()Matplotlib26importnumpyasnpimportmatplotlib.pyplotasplt

y=np.array([2,5,8,4,10,15])#指定线图的颜色plt.plot(y,'r')plt.show()02金融大数据采集数据采集28数据采集又称为数据获取,为整个数据分析提供原始数据

大数据采集传统数据采集数据来源数据来源多种多样,数据量巨大来源较单一,数据量较少数据类型数据类型多样,如结构化数据、半结构数据、非结构化数据结构较单一,以结构化数据为主大数据采集与传统数据采集的区别数据采集包括传统的数据采集和大数据采集金融数据来源29

互联网开放数据

第三方数据金融机构业务数据金融行业数据来源渠道多种多样,主要可以分为以下几种:金融数据来源—互联网开放数据30互联网开放数据源通常都是针对某一个具体的行业或领域(如经济、卫生、地理、生物、社会等),从发布单位维度划分,有来自政府、企业、高校等开放数据源供大家查看下载

数据类别数据源世界各地的社会,环境和经济发展数据Gapminder中国历年及最新宏观经济数据国家统计局中国各项金融业务活动数据中国人民银行中国国际收支、外汇等数据国家外汇管理局市场概览、股票、期权和基金、债券等数据上海证券交易所国内金融市场数据东方财富网金融数据来源—互联网开放数据国家统计局国家各部门网站金融数据来源—互联网开放数据金融数据来源—互联网开放数据中国人民银行国家金融监督管理总局金融数据来源—互联网开放数据中国证券监督管理委员会金融数据来源—互联网开放数据金融数据来源—第三方数据市面上有很多的专业金融数据提供商,以金融数据库、数据包或者数据服务平台的方式为专业用户提供数据服务,用户在金融数据分析的应用程序中可以通过API接口访问这些免费或收费的金融数据(如股票信息、指数信息等)数据平台说明Wind(万得)Wind已经建成国内完整准确、以金融证券数据为核心的大型金融工程和财经数据仓库。Wind的数据内容涵盖股票、债券、基金、外汇、金融衍生品、大宗商品、宏观经济、财经新闻等领域;Wind通过对数据的及时更新来满足机构投资者的需求。CSMAR数据库CSMAR数据库(ChinaStockMarket&AccountingResearchDatabase)是一个经济金融领域的研究型精准数据库已涵盖因子研究、人物特征、绿色经济、股票、公司、海外、资讯、基金、债券、行业、经济、商品期货等19大系列,包含200+个数据库、4000+张表、6万+个字段。Bloomberg(彭博资讯)美国彭博资讯公司是全球最大的财经资讯公司,也是全球最大的金融信息服务供应商,为全球各地的公司、新闻机构、金融和法律专业人士提供实时行情、金融市场历史数据、价格、交易信息、新闻和通讯工具。TushareTushare大数据开放社区免费提供各类数据,助力行业和量化研究。拥有丰富的数据内容,如股票、基金、期货、数字货币等行情数据,公司财务、基金经理等基本面数据。提供Http,Python,R等语言的数据接口,方便获取实时数据。金融数据来源—金融机构业务数据金融机构在自身的业务经营过程中,收集和产生了大量的该行业的业务数据,包括金融机构用户的基本信息,用户在金融机构的交易等行为数据(如银行中的用户资金交易记录,信用数据等)。网络爬虫38网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成通过编程语言(如Python、Java等)来编写爬虫程序,模拟浏览器向网络服务器发送请求,获取相应内容后,对其进行解析,从中提取出需要的数据也可以借助于现成的商用数据采集软件(如八爪鱼、后羿采集器等)来获取特定网页上所需字段的数据采集软件采集网页数据39八爪鱼采集器后裔采集器采集软件采集网页数据--外汇牌价数据的抓取40

打开外汇牌价网站,复制网址2.将网址信息复制至采集软件3.在采集软件中设置采集条件4.检查数据预览,运行采集5.将结果导出至文件Python与网页数据采集41网页基本结构Python与网页数据采集42网页中表格数据的获取Python与网页数据采集43网页中表格数据的获取importpandasaspd#获取国家外汇管理局网站网址url="/AppStructured/hlw/RMBQuery.do"df=pd.read_html(url)[4]#爬取目标网站表格数据#查看美元和日元的外汇数据df1=df[['日期','美元','日元']]df1.set_index(['日期'])#将日期列作为表格的行索引print(df1)

日期

美元

日元

2023-07-26712.955.06292023-07-25714.065.08822023-07-24714.515.06702023-07-21714.565.13992023-07-20714.665.17242023-07-19714.865.16252023-07-18714.535.16872023-07-17713.265.14672023-07-14713.185.18002023-07-13715.275.1769Python与网页数据采集44网络爬虫抓取数据库名说明RequestsRequests库提供了GET和POST来发送HTTP请求,使代码易于理解和调试,但是不解析提取的HTML数据BeautifulSoup与解析器一起从HTML中解析提取数据,通常和Requests库一起使用;此外还提供包括检测页面编码,配置轻松lxml一个快速、强大的解析库,适用于HTML和XML文件Selenium适用于标准网络爬虫无法运行的动态网页数据的抓取,能够像任何浏览器一样通过运行JavaScript来呈现网页数据采集中的信息保护45网络数据的获取隐私保护03金融大数据处理流程大数据处理的一般流程数据采集系统日志采集网络数据采集其他数据采集数据预处理数据清洗数据集成数据变换数据归约数据存储分布式文件系统分布式数据库云存储数据挖掘分类分析关联分析聚类分析预测数据解释可视化技术人机交互技术数据清洗48数据清洗是高质量数据的一道保障,数据科学家80%时间都花费在清洗任务上数据清洗使得数据标准、干净、连续,为后续数据统计、数据挖掘做好准备GIGO高质量的数据应该具有下列特点:数据结构清晰数据完整数据格式规范数据合理数据唯一清洗方式:利用EXCEL软件利用编程语言提供的工具包(如Python中的NumPy、Pandas库等)012341张三30175cm60kg2李四35180cm140斤3张三301.75m60kg4NANANANA5王五-1160cm50kg6赵六2565kg012341张三30175cm60kg2李四35180cm140斤3张三301.75m60kg4NANANANA5王五-1160cm50kg6赵六25173cm65kg012341张三30175cm60kg2李四35180cm70kg3张三30175cm60kg4NANANANA5王五-1160cm50kg6赵六25173cm65kg012341张三30175cm60kg2李四35180cm70kg3张三30175cm60kg4NANANANA5王五30160cm50kg6赵六25173cm65kg序号姓名年龄身高体重1张三30175cm60kg2李四35180cm70kg3张三30175cm60kg4NANANANA5王五30160cm50kg6赵六25173cm65kg完整性全面性合法性唯一性数据清洗012341张三30175cm60kg2李四35180cm140斤3张三301.75m60kg4NANANANA5王五-1160cm50kg6赵六2565kg序号姓名年龄身高体重1张三30175cm60kg2李四35180cm70kg3王五30160cm50kg4赵六25173cm65kg数据清洗对数据的整体概况有个初步认知数据观测检测数据中的缺失值并做对应的处理(删除或填充)数据缺失处理处理数据中的重复值数据去重数据的规范化数据格式统一检测并处理数据集中的异常值数据异常处理数据清洗数据观测52在进行具体的数据处理之前,可以先进行数据观测,对数据有个整体认知,找到数据集中可能存在的“脏数据”或者需要做进一步处理的情况。Pandas中提供了info(),describe()等函数,使得能够方便查看数据的基本情况

函数名说明info()获取数据各列基本信息,包括总行数、总列数、列的名称,每列的非空数、列的数据类型等describe()获取数据各列的统计信息,包括总数、平均值、标准差、最小值、上(下)四分位数、中位数、最大值等数据观测53importpandasaspd#导入pandas库customers=pd.read_excel('D:\用户个人信息.xlsx')#读取EXCEL数据文件print(customers.info())数据总行数为10237,总列数为7<class'pandas.core.frame.DataFrame'>RangeIndex:10237entries,0to10236Datacolumns(total7columns):#ColumnNon-NullCountDtype----------------------------0ID10237non-nullint641年龄10113non-nullfloat642性别10237non-nullobject3家庭成员10237non-nullint644受教育程度8702non-nullobject5婚姻状态9483non-nullobject6收入9117non-nullobjectdtypes:float64(1),int64(2),object(4)memoryusage:560.0+KB数据观测54importpandasaspd#导入pandas库customers=pd.read_excel('D:\用户个人信息.xlsx')#读取EXCEL数据文件print(customers.describe())ID年龄家庭成员count1.023700e+0410113.00000010237.000000mean7.391445e+0846.3524182.346000std3.688047e+078.0730201.298332min7.080821e+08-6.0000000.00000025%7.130256e+0841.0000001.00000050%7.179206e+0846.0000002.00000075%7.731464e+0852.0000003.000000max8.283431e+0873.0000005.000000数据去重55数据的获取通常是从多处数据源汇总得到,数据重复的情况非常常见函数名说明duplicated()识别是否有数据重复drop_duplicates()删除重复值(全部删除、部分删除)数据去重56print(customers.duplicated())0False1False2False3False4False……10232False10233False10234False10235False10236FalseLength:10237,dtype:bool对表格中所有行依次判断是否有重复,如果结果为True,则表示该行和其他行存在重复;反之则认为没有重复从输出结果来看,该函数不适合行数较多的表格,不能很直观地观察是否存在重复值

参数说明subset需要进行重复比较的列集合。默认是对全部列进行比较keep返回重复值的标记方式,支持三种标记方式,默认为’first’first:所有重复记录行中,第一次出现的行标记为False,其余为Truelast:所有重复记录行中,最后一次出现的行标记为False,其余为Truefalse:所有重复记录行均标记为TrueDataFrame.duplicated(subset=None,keep='first')参数说明如下:数据去重57print("数据总行数为{},总列数为{}".format(customers.shape[0],customers.shape[1]))customers.drop_duplicates(inplace=True)print("数据去重后总行数为{},总列数为{}".format(customers.shape[0],customers.shape[1]))数据总行数为10237,总列数为7数据去重后总行数为10127,总列数为7参数说明subset需要进行重复比较的列集合。默认是对全部列进行比较keep如果数据集中有多条重复值,指定保留哪条记录。默认选项为’first’,即保留第一次出现的数据行。first:保留所有重复记录行中第一次出现的数据行,其余重复行均删除last:保留所有重复记录行中最后一次出现的数据行,其余重复行均删除false:所有重复记录行均删除inplace布尔值,默认为False。inplace=True表示直接在原来的表上删除重复项,而False表示生成一个副本DataFrame.drop_duplicates(subset=None,*,keep='first',inplace=False,ignore_index=False)部分常用参数说明如下:数据缺失处理58数据缺失是真实数据集中普遍存在的一种现象,主要包括记录的缺失和记录中某些字段的缺失,都有可能导致数据分析结果不准确。对缺失值的分析主要分两步进行:明确数据的缺失情况对缺失数据进行处理,例如直接删除、选择合适的值进行填充、不处理等。函数名说明isnull()查看单元格数据是否为空notnull()查看单元格数据是否不为空dropna()删除缺失值数据fillna()填充缺失值数据数据缺失处理59print(customers.isnull())print(customers.isnull().any())print(customers.isnull().all())print(customers.isnull().sum())数据缺失处理60customers.dropna(thresh=4

,inplace=True)customers.dropna(subset=['收入'],inplace=True)对于缺失数据的处理,通常有直接删除和选择合适的值进行填充两种方式1.直接删除数据缺失处理61customers['年龄'].fillna(customers['年龄'].median(),inplace=True)customers['受教育程度'].fillna('未知',inplace=True)customers['婚姻状态'].fillna('未知',inplace=True)对于缺失数据的处理,通常有直接删除和选择合适的值进行填充两种方式2.选择合适的值进行填充填充方法说明均值/中位数/众数等填充使用变量的均值/中位数/众数对缺失值进行填充回归填充用其他变量的值建立拟合模型,进行回归分析,预测缺失值。插值填充利用已知值建立插值函数,求得插值进行填充固定值填充使用一个特定的固定值进行填充数据格式统一62常见的格式不规范的情况有:不同的数据来源对同一事物描述的单位不一致同样的数据类型,但格式不一致数据格式不正确空白字符或者特殊字符大小写不规范………数据格式统一63(一) 数据格式查看print(customers['受教育程度'].unique())print(customers['性别'].value_counts())数据格式统一64(二) 数据格式规范处理customers['受教育程度'].replace('大学','本科生',inplace=True)customers['性别'].replace({'M':'男','F':'女'},inplace=True)

数据格式统一65(二) 数据格式规范处理customers['受教育程度’]=customers['受教育程度'].str.strip()customers['受教育程度'].replace('大学','本科生',inplace=True)customers['性别’]=customers['性别'].str.upper()customers['性别'].replace({'M':'男','F':'女'},inplace=True)

受教育程度:[‘高中'‘研究生''未受教育’‘未知''本科生''博士'‘大

学’]性别男4495女4184M220F100f7Name:count,dtype:int64数据异常处理66异常值通常是指样本中的个别值,其数值明显偏离其余的观测值。异常值也称为离群点,异常值的分析也称为离群点分析。在数据集中,异常值可能是需要被去掉或修改的噪声数据,也有可能是对数据分析而言含有重要有效信息的数据。统计分析ID年龄家庭成员count1.023700e+0410113.00000010237.000000mean7.391445e+0846.3524182.346000std3.688047e+078.0730201.298332min7.080821e+08-6.0000000.00000025%7.130256e+0841.0000001.00000050%7.179206e+0846.0000002.00000075%7.731464e+0852.0000003.000000max8.283431e+0873.0000005.000000customers['年龄'][customers['年龄']<0]=1

数据异常处理672.四分位数分析ID年龄家庭成员count1.023700e+0410113.00000010237.000000mean7.391445e+0846.3524182.346000std3.688047e+078.0730201.298332min7.080821e+08-6.0000000.00000025%7.130256e+0841.0000001.00000050%7.179206e+0846.0000002.00000075%7.731464e+0852.0000003.000000max8.283431e+0873.0000005.000000四分位数也常被用来作为异常值的检测,所谓的四分位数方法是指:其中:QL:下四分位数,表示全部观察值中有四分之一的数据取值比它小;QU:称为上四分位数,表示全部观察值中有四分之一的数据取值比它大;IQR:四分位数间距,是上四分位数QU与下四分位数QL之差异常值<(QL-1.5IQR)或

异常值>(QU+1.5IQR)数据预处理其他步骤04金融大数据可视化数据可视化70数据可视化是一个面向用户的过程,将大数据挖掘及分析结果在显示终端以友好、形象、易于理解的形式呈现给用户数据可视化是指利用计算机图形学和图像处理技术,将数据转换为图形或图像进行显示的理论方法和技术运用数据可视化技术,可以将复杂的数据结果转换为静态或动态的图形,还可以通过交互手段动态地显示改变的结果。使得用户可以从不同维度观察数据,得到对数据更深入的理解和分析常见可视化图表类型71常见可视化图表类型72图表类型说明线图又称折线图,特点是反映事物随序列变化的趋势,用于比较同一维度上不同数据集的变化,适合于比较大的数据集柱图是一种以长方形的长度为变量来表达数值的统计图表,易于比较数据之间的差别,适用于数据量不大的数据集饼图以饼状的图形显示各数据项所占比例,反映部分与整体的关系。饼图适用于二维数据,可以简单直观的看到各组成部分的占比情况散点图数据以点的形式进行展示,以显示变量之间的相互关系。散点图用于判断数据之间的相关性,或者发现数据的分布规律雷达图又称为蜘蛛网图,是将多个维度的数据映射到起始于同一个圆心的坐标轴上,可以用于比较多条数据在多个维度上的取值漏斗图因其图表形状类似漏斗而得名,由多个梯形从上到下叠加而成。漏斗图适用于业务流程比较规范,周期长,环节多的流程分析树图以树形结构来展示层级数据的组织关系。通过树图可以直观的看到各层级指标间的关系词云图词云图是文本数据的图形化展示,可以用来展示大量的文本数据,每个词通过字体大小或者颜色来展示每个词的重要程度常见可视化工具73入门级可视化工具商业智能分析工具编程语言工具pyplot常用函数74函数名说明plot()用户绘制线图和散点图scatter()用于绘制散点图bar()用于绘制垂直和水平条形图hist()用于绘制直方图pie()用于绘制饼图show()用于绘制图像subplots()用于创建子图xlabel()/ylabel()设置X轴和Y轴的标签title()设置图表的标题75importnumpyasnpimportmatplotlib.pyplotasplt#引入pyplot包

#设置中文字体plt.rcParams['font.sans-serif']=['SimHei']

x=np.array([1,2,3,4,5])y1=x+1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论