Python数据分析案例实战PPT完整全套教学课件_第1页
Python数据分析案例实战PPT完整全套教学课件_第2页
Python数据分析案例实战PPT完整全套教学课件_第3页
Python数据分析案例实战PPT完整全套教学课件_第4页
Python数据分析案例实战PPT完整全套教学课件_第5页
已阅读5页,还剩401页未读 继续免费阅读

下载本文档

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

文档简介

Python数据分析案例实战第1章数据分析基础第2章NumPy模块实现数值计算.ppt第3章Pandas模块实现统计分析.ppt第4章Matplotlib模块实现数据可视化.ppt第5章客户价值分析第6章销售收入预测第7章二手房数据分析预测系统第8章智能停车场运营分析系统第9章影视作品分析第10章看店宝什么是数据分析

数据分析就是利用数学、统计学理论相结合科学统计分析方法对数据库中的数据、Excel数据、收集的大量数据、网页抓取的数据进行分析,从中提取有价值的信息形成结论并进行展示的过程。

数据分析的目的在于将隐藏在一大堆看似杂乱无章的数据背后,将有用的信息提取出来,总结出数据的内在规律,以帮助在实际工作中的管理者做出决策和判断。数据分析的概念我们身边的例子——QQ群数据分析的概念经过分析后得到如下信息:大家都在聊什么,聊天的主要内容(词云图)哪个时间段聊天的人多(群活跃度)大家以聊天为主还是以斗图为主,各占多少这一年群聊天的情况数据分析的概念QQ群聊天内容分析词云图QQ群用户活跃度分析QQ群聊天次数与发图次数占比分析2019年群聊天情况分析12492.25数据分析的应用

通过数据分析可以根据客户意向进行商品推荐以及针对性广告等。例如,我们熟悉的淘宝1.互联网行业数据分析的应用智能医疗、健康指数评估以及DNA对比等例如,我们熟悉的手环、体脂称2.医学方面数据分析的应用通过数据分析建立一个潜在攻击性的分析模型,监测大量的网络访问数据与访问行为,可以快速识别出可疑网络的访问,起到有效的防御作用3.网络安全方面

根据交通状况数据与GPS定位系统有效的预测交通实时路况信息。4.交通方面数据分析的应用5.通信方面数据分析可以统计骚扰电话进行骚扰电话的拦截与黑名单的设置。6.个人生活数据分析可以对个人喜好、生活习惯等进行分类,为其提供更加周到的个性化服务。数据分析方法数据分析是从数据中提取有价值信息的过程,过程中需要对数据进行各种处理和归类,只有掌握了正确的数据分析方法,才能起到事半功倍的效果。描述性分析探索性数据分析验证性数据分析统计分析类:对比分析法、同比分析、环比分析、定比分析、差异分析、结构分析、因素分析、80/20分析高级分析类:回归分析法、聚类分析法、相关分析法、矩阵分析法、判别分析法、主成分分析法、因子分析法、对应分析法、时间序列分析。数据挖掘类:机器学习、数据仓库等复合技术为主

对比分析法是把客观事物加以比较,以达到认识事物的本质和规律并做出正确的评价。对比分析法通常是把两个相互联系的指标数据进行比较,从数量上展示和说明研究对象规模的大小,水平的高低,速度的快慢,以及各种关系是否协调。1.对比分析

公式:同比增长速度=(本期-同期)/同期×100%2.同比分析图1本期与同期销量情况对比图2同比增长速度

同比分析就是按照时间如年度、季度、月份、日期等进行扩展,用本期实际发生数与同期历史发生数相比,产生动态相对指标,用以揭示发展水平以及增长速度。同比分析主要是为了消除季节变动的影响,用以说明本期水平与去年同期水平对比而达到的相对值。公式:环比增长速度=(本期-上期)/上期×100%图1本期与上期销量情况对比图2环比增长速度

3.环比分析环比分析是报告期水平与前一时期水平之比,表明现象逐期的变化趋势。如果计算一年内各月与前一个月对比,即1月比去年12月,2月比1月,3月比2月,4月比3月,5月比4月,6月比5月,说明逐月的变化程度,如图1所示,环比增长趋势如图2所示。图1图24.80/20分析80/20分析,又称二八法则、帕累托法则、帕累托定律、最省力法则或不平衡原则。该法则是由意大利经济学家帕累托提出的。二八法则认为:原因和结果、投入和产出、努力和报酬之间本来存在着无法解释的不平衡。广告费600005.回归分析回归分析多用于统计分析和预测。它是研究变量之间相关关系以及相互影响程度,通过建立自变量和因变量的方程,研究某个因素受其他因素影响的程度或用来预测。回归分析包括:线性和非线性回归、一元和多元回归。常用的回归是一元线性回归和多元线性回归。Y轴销售收入x轴广告费预测销售收入6.聚类分析聚类分析多用于人群分类,客户分类。所谓聚类是一个将数据集中在某些方面相似的数据成员进行分类组织的过程。

7.时间序列分析时间序列分析多用于统计和预测。它是按照时间的顺序把随机事件变化发展的过程记录下来,就构成了一个时间序列。时间序列分析就是对时间序列进行观察、研究、找出它的变化和发展规律,预测将来的走势。数据分析工具据某招聘网的数据显示,关键词“数据分析”前20页职位描述中,数据分析师要求前3的主要技能是:SQLPythonExcel

Excel是常用的数据分析工具,可以实现基本的数据分析工作,但在数据量较大,公式嵌套很多的情况下,Excel处理起来会很麻烦而且处理速度也会变慢。此时,Python可作为首选,因为Python提供了大量的第三方扩展库,如Numpy、Scipy、Matplotlib、Pandas、Scikit-Learn、Keras和Gensim等,这些库不仅可以对数据进行处理、挖掘、可视化展示,其自带的分析方法模型也使得数据分析变得简单高效,只需编写少量的代码就可以得到分析结果。另外,Python简单易学,在科学领域占据着越来越重要的地位,将成为科学领域的主流编程语言。数据分析流程数据分析的基本流程“如果给我1个小时解答一道决定我生死的问题,我会花55分钟来弄清楚这道题到底是在问什么。一旦清楚了它到底在问什么,剩下的5分钟足够回答这个问题”——爱因斯坦明确目的1能够找到合适的数据训练是一件非常重要的事情。获取数据的方式有很多种,如公开的数据集、爬虫、数据采集工具、付费API等等获取数据2数据处理是从大量的、杂乱无章、难以理解的、缺失的数据中,抽取并推导出对解决问题有价值、有意义的数据。数据处理3缺失值异常值describe()函数删除drop_duplicates()方法删除填充删除数据分析4数据分析过程中,选择适合的分析方法和工具很重要,所选择的分析方法应兼具准确性、可操作性、可理解性和可应用性。而对于业务人员(如产品经理或运营)来说,数据分析最重要的是数据分析思维。验证结果5通过工具和方法分析出来的结果只是数据的某个结果的体现,有些时候不一定准确,所以必须要进行验证。例如,一家淘宝电商销售业绩下滑,分析结果是(1)价格平平,客户不喜欢;(2)产品质量不佳,和同期竞争对手比没有优势。但这只是现象,不是因素。具体为什么客户不喜欢,是宣传不到位不吸引眼球?还是产品质量不佳?这才是真正的分析结果。所以,只有将数据分析与业务思维相结合,才能找到真正的落地的东西。数据展示6数据展现即数据可视化的部分,把数据分析结果展示给业务的过程。数据展现除遵循各公司统一规范原则外,具体形式还要根据实际需求和场景而定,其中以图表方式展现更清晰、更直观。数据应用7数据应用是指将数据分析结果应用到实际业务当中,是数据产生实际价值的直接体现,这个过程需要具有数据沟通能力、业务推动能力和项目工作能力。Python数据分析常用模块数值计算模块NumPy1

NumPy模块是一个用于实现科学计算的库,尤其是在实现数据分析时,该模块是一个必不可少的基础库。NumPy模块不仅支持大量的维度数组与矩阵运算,还针对数组运算提供大量的数学函数库。NumPy是一个运行速度非常快的数学库,实现的科学计算包括:一个强大的N维数组对象ndarray比较成熟的函数库整合C/C++/Fortran代码的工具实用的线性代数、傅里叶变换和随机数生成函数等功能数据处理模块Pandas2Pandas是一个开源库,主要为Python提供高性能、易于使用的数据结构和数据分析工具。Pandas的数据结构中有两大核心,分别是Series与DataFrame。其中Series是一维数组和Numpy中的一维数组类似。这两种一维数组与Python中基本数据结构List相近,Series可以保存多种数据类型的数据,如布尔值、字符串、数字类型等。DataFrame是一种以表格形式的数据结构类似于Excel表格一样,是一种二维的表格型数据结构。数据可视化模块matplotlib3

Matplotlib是一个Python绘图库,它不仅可以绘制2D图表,还可以绘制3D图表。中间的“plot”表示绘图,而结尾的“lib”表示它是一个集合。Matplotlib在实现绘制图表时非常的简单,只需几行代码即可实现绘制条形图、折线图、散点图和饼图等。matplotlib.pyplot子模块提供了类似于MATLAB的界面,尤其是与IPython结合使用时,其中的每个函数都可以对图形进行更改,例如,创建图形、在图形中创建绘图区域、绘制线条样式、字体属性、轴属性等。机器学习模块scikit-learn4

scikit-learn模块是一个简单有效的数据挖掘和数据分析工具,可以让用户在各种环境下重复使用,scikit-learn模块是基于numpy、scipy基础上的模块。该模块将很多机器学习算法进行了封装,即可对算法不是很熟悉的用户也可以通过调用函数的方式轻松建模。sklearn模块可以实现数据的预处理、分类、回归、PCA降维、模型选择等工作。它是实现数据分析时必不可少的一个模块库。NumPy模块实现数值计算主讲人:初识NumPy模块1NumPy中数组的基本操作2NumPy中函数的应用3初始NumPy模块NumericalNumarrayNumPy开源免费1编码效率高2执行效率高3扩展性好4NumPy的安装pipinstallPycharm安装数据类型描述数据类型np.bool布尔值(True或False)np.half/np.float16半精度浮点数:1个符号位,5位指数位,10位小数部分_默认的整数类型(与C语言中的long相同,通常为int32或int64)np.float32单精度浮点数,1个符号位,8个指数位,23位小数部分c与C的int类型一样,(通常为int32或int64)np.float64/np.float_双精度浮点数,1个符号位,11个指数位,52位小数部分p用于索引的整数类型(与C中的size_t相同,通常为是int32或int64)plex64复数,表示两个32位浮点数(实数部分和虚数部分)8字节(-128到127)plex128/plex_复数,表示两个64位浮点数(实数部分和虚数部分)16整数(-32768至32767)32整数(-2147483648至2147483647)64整数(-9223372036854775808至9223372036854775807)np.uint8无符号整数(0到255)np.uint16无符号整数(0到65535)np.uint32无符号整数(0到4294967295)np.uint64无符号整数(0到18446744073709551615)数组对象Ndarrayaxis0一维数组二维数组123451234554321axis0axis1axis0axis1axis2三维数组numpy.array(object,dtype=None,copy=True,order='K',subok=False,ndmin=0)参数名称说明object数组或嵌套序列的对象dtype数组所需的数据类型copy对象是否需要拷贝order指定数组的内存布局,C为行方向排列,F为列方向排列,A为任意方向(默认)subok默认返回一个与基类类型一致的数组ndmin指定生成数组的最小维度数据类型对象dtypedtype属性1dtype()函数2numpy.dtype(obj[,align,copy])参数名称说明object数组或嵌套序列的对象align如果为true,填充字段使其类似C的结构体。copy是否复制dtype

对象,如果为false,则是对内置数据类型对象的引用。NumPy中数组的基本操作内置的数组创建方法1生成随机数2切片和索引3修改数组形状4组合数组5数组分割6内置的数组创建方法zeros()函数1arange()函数2linspace()函数3logspace()函数4eye()函数5diag()函数6生成随机数rand()函数1randint()函数2random()函数3随机生成,元素为0~1范围的数组。随机生成,元素为指定范围的数组。随机生成,元素为0~1范围的数组。切片和索引0

123

4元素1元素2元素3元素4元素5索引从0开始计数-5-4-3-2

-1元素1元素2元素3元素4元素5索引可以是负数元素1元素2元素3元素4元素5元素2元素3元素4

13

sname[start:end:step]起始值(包括)结束值(不包括)修改数组形状numpy.reshape(a,newshape,order='C')参数名称说明a表示要修改形状的数组newshape表示整数或者整数数组,新的形状应当兼容原有形状order‘C’表示按行、‘F’表示按列、‘A’表示原顺序。组合数组横向组合1沿轴组合3纵向组合2hstack()函数vstack()函数concatenate()函数数组分割水平分割1沿轴分割3纵向分割2hsplit()函数vsplit()函数split()函数NumPy中函数的应用数学函数1算数函数2统计函数3矩阵函数4数学函数三角函数1数值修约2算数函数统计函数最大值1amax()函数差值2ptp()函数百分位数4percentile()函数sum()函数求和3矩阵函数matlib子模块mat()函数广播机制123数组a456数组b41018102030数组b数组a111222333102030102030102030102030111222333102030204060306090pandas模块实现统计分析主讲人:Excel数据pandas创建的数据安装pandas模块1pandas数据结构2读写数据3数据操作4数据的分组与聚合5数据的预处理6安装pandas模块pipinstallPycharm安装pandas数据结构Series对象1DataFrame对象2Series对象012Series对象54321‘我爱Python’False数值类型字符类型布尔类型等…abcDataFrame对象DataFrame对象列标签索引数据axis0axis1读写数据读、写文本文件1读、写Excel文件2读、写数据库数据3读、写文本文件Excel打开数据记事本打开数据read_csv()函数参数名参数含义参数名参数含义filepath_or_buffer表示文件路径的字符串skipfooterint类型,需要跳过的行号,从文件内数据的末尾处算起sepstr类型,表示分隔符,默认为逗号“,”na_values将指定的值设置为NaNheader表示将哪一行数据作为列名nrowsint类型,设置需要读取数据中的前n行数据names为读取后的数据设置列名,默认为Noneencodingstr类型,用于设置文本编码格式。例如,“utf-8”表示用UTF-8编码index_col通过列索引指定列的位置,默认为Nonesqueeze设置为True,表示如果解析的数据只包含一列,则返回一个Series。默认为Falseskiprowsint类型,需要跳过的行号,从文件内数据的开始处算起engine表示数据解析的引擎,可以指定为c或python,默认为cto_csv()函数参数名参数含义参数名参数含义filepath_or_buffer表示文件路径的字符串header表示是否写入数据中的列名,默认为False,表示不写入sepstr类型,表示分隔符,默认为逗号“,”index表示是否将行索引写入文件,默认为Truena_repstr类型,用于替换缺失值,默认为“”空modestr类型,表示写入模式默认为“w”float_formatstr类型,指定浮点数据的格式,例如,'%.2f'表示保留两位小数encodingstr类型,表示写入文件的编码格式columns表示指定写入哪列数据的列名,默认为None读、写Excel文件Office办公软件“三剑客”.xls.xlsx2007版前2007版后read_excel()函数参数名参数含义io表示文件路径的字符串sheet_name表示指定Excel文件内的分表位置,返回多表可以使用sheet_name=[0,1],默认为0header表示指定哪一行数据作为列名,默认为0skiprowsint类型,需要跳过的行号,从文件内数据的开始处算起skipfooterint类型,需要跳过的行号,从文件内数据的末尾处算起index_col通过列索引指定列的位置,默认为Nonenames指定列的名字读、写数据库数据SQLServerSQLiteOracleMySQL数据读取1数据写入2read_sql_query(sql,con,index_col=None,coerce_float=True,params=None,parse_dates=None,chunksize=None)read_sql_table(table_name,con,schema=None,index_col=None,coerce_float=True,parse_dates=None,columns=None,chunksize=None)read_sql(sql,con,index_col=None,coerce_float=True,params=None,parse_dates=None,columns=None,chunksize=None)数据读取不能直接读取数据库中的某个表该函数需要SQLAlchemy模块的支持全能的函数参数名称参数含义sqlstr类型,表示需要执行的sql查询语句或表名table_namestr类型,表示数据库中数据表的名称con表示数据库连接index_colstr类型或str类型的列表,指定数据列为数据行的索引coerce_floatboolean类型,将数据中decimal类型的值转换为浮点类型,默认为Truecolumnslist类型,表示需要读取数据的列名to_sql(self,name,con,schema=None,if_exists='fail',index=True,index_label=None,chunksize=None,dtype=None,method=None)数据写入参数名称说明namestr类型,表示数据表名称con表示数据库连接if_exists该参数提供了三个属性,fail表示如果表已经存在就不执行写入。replace表示如果表已经存在,就将原来的表删除,重新创建后再写入数据。append表示在原有的数据表中添加数据。默认属性为failindex表示是否将行索引写入数据表中,默认为TrueSQLAlchemy模块数据操作NaN数据处理时间数据的处理数据的增、删、改、查数据的增、删、改、查NaN数据处理时间数据的处理数据的分组与聚合分组数据groupby()方法Series对象DataFrame对象SeriesGroupBy对象DataFrameGroupBy对象keydataa1a2b3c4a5分组a1a2a5b3c4求和keydataa8b3c4聚合数据DataFrame.agg(func,axis=0,*args,**kwargs)参数名称说明func可以接收字符串、列表、字典类型,表示每行每列的函数。axis表示操作数据的轴向,0为数据的索引,1位数据的列,默认为0。*args要传递给func的位置参数。**kwargs要传递给func的关键字参数。对DataFrame对象中列的数据进行分组并实现数据的计算和统计。数据的预处理合并数据去除重复数据合并数据A类数据ABCA1B1C1A2B2C2A3B3C3B类数据CDEC1D1E1C2D2E2C3D3E3新数据ABCCDEA1B1C1C1D1E1A2B2C2C2D2E2A3B3C3C3D3E3C类数据CDEC1D1E1B2D2E2A3D3E3D类数据CGEC1G1E1B2G2E2A3G3E3E类数据EGEE1G1E1E2G2E2E3G3E3F类数据EGFE1G1F1E2G2F2E3G3F3concat()函数1merge()函数2join()方法3combine_first()方法4pandas.concat(objs,axis=0,join='outer',join_axes=None,ignore_index=False,keys=None,levels=None,names=None,verify_integrity=False,sort=None,copy=True)参数名称说明objs需要合并的数据,如Series、DataFrame等数据。axis连接数据的轴向,0表示纵向合并,1表示横向合并,默认为0ignore_index是否保留原有的合并索引,默认为False(保留),设置为True将产生一组新的索引keys通过设置key区分合并后的数据来源sort在连接轴未对齐时,选择是否排序,true为排序,false为不排序copy是否复制数据,默认为复制,设置false为不复制纵向、横向合并参数名称说明参数名称left需要合并的左侧数据,DataFrame或Seriesright需要合并的右侧数据,DataFrame或Seriesleft_on表示左侧数据进行连接的(键)列名,默认为Noneright_on表示右侧数据进行连接的(键)列名,默认为Noneleft_indexboolean类型,默认为False。表示是否将左侧数据中的索引作为连接主键right_indexboolean类型,默认为False。表示是否将右侧数据中的索引作为连接主键on表示两个数据合并的(键)列名必须一致,默认为Nonesortboolean类型,默认为False。表示是否对合并后的数据进行排序how数据的连接方式,left表示使用左侧数据中的(键)列名进行连接,类似于SQL中的左外连接。其他三个属性分别为right(右连接)、outer(外连接)以及inner(内连接)默认为innervalidate字符类型,默认为None,可以设置为如下几个属性:“one_to_one”检查合并(键)列名是否在左右数据集中都是唯一的。“one_to_many”检查合并(键)列名在左数据集中是否唯一。“many_to_one”检查合并(键)列名在右侧数据集中是否唯一。“many_to_many”允许,但不会导致检查。suffixestuple类型,默认为('_x','_y')。表示左、右列名称的后缀pandas.merge(left,right,how='inner',on=None,left_on=None,right_on=None,left_index=False,right_index=False,sort=False,suffixes=('_x','_y'),copy=True,indicator=False,validate=None)左、右外、内合并pandas.DataFrame.join(other,on=None,how='left',lsuffix='',rsuffix='',sort=False)参数名称说明other表示需要连接的DataFrame、Series或者是包含多个DataFrame的列表on表示指定连接数据的列名,可以是列名或者是包含列名的列表或元组how指定连接方式,left(左连接)、right(右连接)、outer(外连接)以及inner(内连接)默认为innerlsuffix指定左侧重叠列名的后缀rsuffix指定右侧重叠列名的后缀sortboolean类型,是否对合并后的数据进行排序没有关联相同(键)列名合并pandas.DataFbine_first(other)方法ABA1np.nanNoneB2A3B3数据AABA5B1A2NoneD3B4数据BABA1B1A2B2A3B3数据C去除重复数据pandas.dataFrame.drop_duplicates(subset=None,keep='first',inplace=False)参数名称说明subset表示指定需要去重的列名,也可以是多个列名组成的列表。默认为None,表示全部列keep表示保存重复数据的哪一条数据,first表示保留第一条、last表示保留最后一条、False表示重复项数据都不保留。默认为firstinplace表示是否在原数据中进行操作,默认为FalseMatplotlib模块实现数据可视化主讲人:基本用法1绘制常用图表23D绘图3基本用法pyplot子模块的绘图流程pyplot子模块的常用语法安装Matplotlibpyplot子模块的绘图流程函数名称描述pyplot.figure()调用该函数可以创建一个空白的画布。figure.add_subplot()调用该函数用于实现在画布中添加子图,可以指定子图的行数、列数和图表的编号。例如在add_subplot()函数中填写221代表将画布分割成2行2列,图表画在从左到右从上到下的第1块pyplot.subplots()调用该函数用于实现分图展示,就是在一个绘图窗体中显示多个图表,例如在subplots()函数中填写121代表在画布中绘制1行2列的图表1。pyplot.subplot2grid()调用该函数用于实现非等分画布形式的图形展示,通过设置subplot2grid()函数中rowspan和colspan参数可以让子图跨越固定网格布局的多个行和列,实现不同的子图布局。创建画布与添加子图的函数函数名描述函数名描述pyplot.title()调用该函数用于设置图表的标题文字,可以为其指定位置、颜色以及字体大小等参数pyplot.xticks()调用该函数用于设置当前图表x轴的刻度或文本标签pyplot.xlabel()调用该函数用于设置图表中x轴的名称,可以为其指定位置、颜色以及字体大小等参数pyplot.yticks()调用该函数用于设置当前图表y轴的刻度或文本标签pyplot.ylabel()调用该函数用于设置图表中y轴的名称,可以为其指定位置、颜色以及字体大小等参数pyplot.plot()调用该函数用于绘制图表,此函数需要填写绘制点的x与y坐标pyplot.xlim()调用该函数用于设置当前图表x轴的范围,该值为区间值,不可以是一个字符串pyplot.savafig()调用该函数用于保存绘制的图表,可以为其指定图表的分辨率、边缘颜色等参数pyplot.ylim()调用该函数用于设置当前图表y轴的范围,该值为区间值,不可以是一个字符串pyplot.show()调用该函数用于显示当前已经绘制完成的图表pyplot.legend()调用该函数用于设置当前图表的图例,可以为其指定图例的大小、位置以及标签绘制图表常用的函数绘制常用图表绘制条形图1绘制折线图2绘制散点图3绘制饼图4绘制箱形图5多面板图表6绘制条形图参数名参数含义参数名参数含义xx轴的数据,一般采用arange函数产生一个序列edgecolor条形边框颜色heighty轴的数据,也就是柱形图的高度,一般就是我们需要展示的数据linewidth条形边框的宽度width条形的宽度,可以设置0~1之间分浮点类型,默认为0.8alpha条形图的透明度color条形图的颜色matplotlib.pyplot.bar(x,height,width=0.8,bottom=None,*,align='center',data=None,**kwargs)实现效果绘制折线图参数名参数含义参数名参数含义xx轴数据,接受列表类型的数据marker设置折线点的类型yy轴数据,接受列表类型的数据markerfacecolor设置折线点实心颜色linewidth绘制折线的宽度markersize设置折线点的大小color设置折线的颜色linestyle设置折线类型,默认为“-”matplotlib.pyplot.plot(*args,scalex=True,scaley=True,data=None,**kwargs)实现效果绘制散点图参数名参数含义xx轴数据,接受列表类型的数据yy轴数据,接受列表类型的数据s设置点的大小,当该参数设置为列表数据时,表示设置每个点的大小c设置点的颜色或颜色列表,当该参数设置为列表数据时,表示设置每个点的颜色marker设置绘制点的类型matplotlib.pyplot.scatter(x,y,s=None,c=None,marker=None,cmap=None,norm=None,vmin=None,vmax=None,alpha=None,linewidths=None,verts=None,edgecolors=None,*,data=None,**kwargs)实现效果绘制饼图参数名参数含义参数名参数含义x设置绘制饼图的数据,也就是饼图中每个部分的大小shadow是否设置阴影explode设置饼图凸出部分startangle起始角度,默认从0开始逆时针转label设置饼图各部分标签文本pctdistance设置饼图内文本与圆心的距离labeldistance设置饼图标签文本距离圆心的位置,1.1表示1.1倍半径colors设置饼图内各部分颜色autopct设置饼图内文本的显示方式matplotlib.pyplot.pie(x,explode=None,labels=None,colors=None,autopct=None,pctdistance=0.6,shadow=False,labeldistance=1.1,startangle=None,radius=None,counterclock=True,wedgeprops=None,textprops=None,center=(0,0),frame=False,rotatelabels=False,*,data=None)实现效果绘制箱形图最大值上四分位数最小值下四分位数中位数异常值参数名参数含义参数名参数含义x设置要绘制箱形图的数据patch_artist设置是否填充箱体颜色notch设置箱形图是否是凹口的形式显示showcaps设置是否显示最大值与最小值的横线sym设置异常点的形状showfliers设置是否显示异常值vert设置箱形图是横向还是纵向boxprops设置箱体的属性,如边框色,填充色等positions设置箱形图的位置medianprops设置中位数属性,如线的颜色,粗细等widths设置箱形图的宽度capprops设置最大值与最小值横线属性,如线的颜色,粗细等matplotlib.pyplot.boxplot(x,notch=None,sym=None,vert=None,whis=None,positions=None,widths=None,patch_artist=None,bootstrap=None,usermedians=None,conf_intervals=None,meanline=None,showmeans=None,showcaps=None,showbox=None,showfliers=None,boxprops=None,labels=None,flierprops=None,medianprops=None,meanprops=None,capprops=None,whiskerprops=None,manage_xticks=True,autorange=False,zorder=None,*,data=None)多面板图表创建多个子图添加子区域添加子图3D绘图3D线图13D曲面图23D条形图3开发步骤①创建X、Y、Z三轴数据②figure()函数创建画布③

Axes3D类转换3D画布④绘制、显示、保存3D线图实现效果3D曲面图实现效果3D条形图实现效果客户价值分析随着电商行业竞争越来越激烈,推广费用也是越来越高,加之电商法的出台,刷单冲销量的运营思路已不再适应企业需求,而应将更多的思路应转向客户,做好客户运营才是企业生存的王道。

运营好客户,我们首先就要了解客户、分析客户,找出哪些是重要保持客户、哪些是发展客户、哪些是潜在客户,根据不同类别的客户采取不同的营销模式:如分类营销、一对一多样化营销、个性化营销等模式,从而使企业的利润最大化。应用场景:某淘宝店铺客户多,消费行为复杂,客户价值很难人工评估。RFM模型重要保持客户发展客户潜在客户系统设计系统结构图客户价值分析获取Excel数据数据抽取数据探索分析数据规约数据清洗数据转换客户聚类客户价值分析获取数据数据分析数据处理业务流程图用户数据是否缺失、异常抽取近两年数据YN标准化处理客户聚类客户价值分析填充、删除处理系统预览客户群0客户群1客户群2客户群3755人273人560人2人系统预览系统开发准备开发环境及工具

操作系统:Windows7、Windows10

开发工具:Pycharm

第三方模块

:pandas、numpy、matplotlib、sklearn项目文件结构分析方法RFM模型聚类分析聚类算法RFM模型RFM模型最近消费时间间隔Recency消费频率Frequency消费金额MonetaryRFM聚类分析

聚类类似于分类,不同的是聚类划分的类是未知的,也就是说我们不知道应该属于哪类,而是通过一定的算法自动分类。而在实际应用中,聚类就是将数据集中某些方面相似的数据进行分类组织的过程。应用领域聚类分析主要应用领域:商业生物保险行业因特网电子商务K-means聚类算法传统的聚类算法包括五类:划分方法层次方法基于密度方法基于网络方法基于模型方法K-means聚类算法K-means聚类算法

k均值聚类是给定一个数据点集合和需要的聚类数目k,k由用户指定,k均值算法根据某个距离函数反复把数据分入k个聚类中。01

创建k个点作为起始质心,可以随机选择(位于数据边界内)02

当任意一个点的簇分配结果发生改变时03

对数据集中每一个点04

对每个质心05

计算质心与数据点之间的距离06

将数据点分配到距其最近的簇07

对每一个簇,计算簇中所有点的均值并将均值作为质心伪代码K-means聚类算法终止条件可以是以下任意一个:没有(或最小数目)对象被重新分配给不同的聚类。没有(或最小数目)聚类中心再发生变化。误差平方和局部最小。技术准备

Sklearn模块1

K-means聚类2

Pandas模块3Sklearn模块

Sklearn模块(全称Scikit-learn)是Python的第三方模块,它是机器学习领域当中知名的Python模块之一,它对常用的机器学习算法进行了封装,包括回归(Regression)、降维(DimensionalityReduction)、分类(Classfication)和聚类(Clustering)四大机器学习算法。Sklearn具有以下特点:

简单高效的数据挖掘和数据分析工具让每个人能够在复杂环境中重复使用Sklearn模块是Scipy模块的扩展,是建立在NumPy和Scipy基础上的模块Sklearn模块

Sklearn模块的安装使用pip命令安装Python版本为2.7以上、NumPy版本1.8以上、SciPy版本0.13.3以上。首先,安装NumPy和SciPy,如果已经安装NumPy和SciPy,那么安装scikit-learn可以在命令提示符下(cmd)使用安装命令:pipinstallscikit-learn在Pycharm开发环境下安装K-means聚类调用KMeans类

fromsklearn.clusterimportKMeans客户价值分析系统主要是通过Scikit——learn的cluster模块提供的Kmeans函数来处理K-means聚类问题的,首先调用Kmeans类。K-means聚类基本语法

kmodel=KMeans(n_clusters=8,init=’k-means++’,n_init=10,max_iter=300,tol=0.0001,precompute_distances=’auto’,verbose=0,random_state=None,copy_x=True,n_jobs=None,algorithm=’auto’)常用参数及说明参数说明n_clusters整型,默认值8,表示生成的聚类数init3个可选值分别为‘k-means++’、‘random’或者提供一个数组。默认值为'k-means++'n_init整型,表示算法的运行次数,默认值为10max_iter整型,默认值300,表示每执行一次k-means算法的最大迭代次数tolfloat类型,表示算法收敛的阈值,默认值为0.0001precompute_distances3个可选值分别为'auto'、True或者False。该参数用于提前计算好样本之间的距离。默认值为'auto'verbose整型,默认值=0常用参数及说明参数说明random_state整型,表示随机数生成器的种子。默认值为Nonen_jobs整型,表示指定计算所用的进程数。默认值为1属性说明

cluster_centers_:返回ndarray。表示分类簇的均值向量

labels_:返回ndarray。表示每个样本所属的簇的标记

inertia_:返回ndarray。表示每个样本距离它们各自最近簇的中心之和pandas模块Pandas是Python的一个核心模块,主要用于数据处理与数据分析,它提供了快速、灵活、明确的数据结构,能够简单、直观地处理关系型、标记型数据。客户价值分析数据抽取数据抽取

数据抽取是从数据源中抽取数据的过程。淘宝电商存在大量的历史销售数据,我们从中抽取近两年的数据2017年1月1日——2018年12月31日业务数据库1业务数据库2……业务数据库n抽取数据仓库数据探索分析数据探索分析数据探索分析主要分析与客户价值RFM模型有关的数据是否存在数据缺失、数据异常的情况,分析出数据的规律。

主要使用:describe函数开发步骤①导入模块pandas②使用pandas读取Excel数据③使用describe函数统计数据④计算空值数(缺失数据)⑤导出结果最终实现效果数据处理开发步骤①数据规约②数据清洗③数据转换数据规约

数据规约是指在接近或保持原始数据完整性的同时将数据集规模减小,以提高数据处理的速度。……58列买家会员名订单付款时间买家实际支付金额数据采集时间编写相关代码aa=r'TB201812.xls'df=pd.DataFrame(pd.read_excel(aa))df1=df[['订单付款时间','买家会员名','买家实际支付金额','数据采集时间']]指定Excel文件读取Excel文件选取需要的数据数据清洗数据清洗通过前面的数据探索分析,我们发现在淘宝电商历史销售数据中存在一些缺失值,例如“订单付款日期”为空、“买家实际支付金额”最小值为0,下面将这部分数据清理掉,关键代码如下:#去除空值,订单付款时间非空值才保留#去除买家实际支付金额为0的记录df1=df1[df1['订单付款时间'].notnull()&df1['买家实际支付金额']!=0]数据转换数据转换

数据转换是将数据转换成“适当的”格式,以适应数据分析和数据挖掘算法的需要。下面将清理后的数据进行标准化处理。最终实现效果客户聚类客户聚类

客户聚类主要使用Python第三方模块Sklearn模块中提供的K-means聚类方法对客户数据进行分类。根据业务需要,这里分为4类。开发步骤①导入数据②数据塞进模型③客户聚类最终实现效果客户价值分析客户价值分析结果解析客户价值分析结果解析常见问题与解决常见错误与解决1、缺少模块导致程序运行错误2、模块版本不适合导致程序运行错误常见错误与解决3、Excel文件打开时程序运行错误注意事项4、数据结果保存Excel文件时注意:index参数,是否输出索引安装缺失的模块1234安装缺失的模块在AvailablePackages窗口的搜索框中输入模块名称,比如xlrd,模块搜索到后勾选安装复选框,然后单击InstallPackage按钮即可安装该模块。1234模块安装版本选择在File菜单中选择Settings打开AvailablePackages窗口,在该窗口中找到Specifyversion复选框,在下拉列表中选择0.21.0版本123销售收入分析与预测随着电商行业的激烈竞争,电商平台推出了各种数字营销方案,付费广告也是花样繁多。那么电商投入这些广告后,究竟能给企业增加多少收益?对销售收入的影响究竟有多大?是否达到企业预期?那么,针对这些问题企业将如何处理,而不是凭直觉妄加猜测。

例如:M电商已投入了几个月的广告费,收益还不错,本月打算多投入一些,那么老板让你估算下多投入一些广告费能给企业带来多少收益,你该怎么办?当然是用Python帮你分析。用Python结合数据分析方法对M电商的销售收入进行分析与预测,探索以往广告费和销售收入的关系,然后通过预支广告费预测未来销售收入。

系统设计系统结构图销售收入分析与预测获取销售数据获取广告费数据日期数据统计按月度统计销售金额按月度统计广告费支出金额散点图分析销售数据绘制拟合图预测销售收入获取数据数据分析数据处理数据清洗系统业务流程用户获取销售数据数据处理日期数据统计绘制拟合图获取广告费用数据销售分析与预测系统预览线性拟合图预测结果系统开发准备开发环境及工具

操作系统:

开发工具:

第三方模块

:pandas、numpy、matplotlib、sklearnPycharm、Python3.7Windows7、Windows10项目文件结构分析方法线性回归1最小二乘法2线性回归要对样本点进行线性拟合,求得使预测尽可能准确的函数,这个过程就是线性回归。线性回归是对一个或多个自变量和因变量之间的关系进行建模的一种回归分析方法,它包括一元线性回归和多元线性回归。一元线性回归多元线性回归当只有一个自变量和一个因变量,且二者的关系可用一条直线近似表示,称为一元线性回归。(研究因变量Y和一个自变量X之间的关系)当自变量有两个或多个时,研究因变量Y和多个自变量1X,2X,…,nX之间的关系,则称为多元线性回归。线性回归720000956800115500013800001797000220000034000006080100120150200300举个例子朝向周边设施装修地理位置房价面积……3400000300线性回归线性回归公式y=bx+kYX最小二乘法线性回归是数据挖掘中的基础算法之一,线性回归的思想其实就是解一组方程,得到回归函数,不过在出现误差项之后,方程的解法就存在了改变,一般使用最小二乘法进行计算,所谓“二乘”就是平方的意思,最小二乘法也称最小平方和,其目的是通过最小化误差的平方和,使得预测值与真值无限接近。最小二乘法最小二乘法举个例子最小二乘法斜率b和截距kxy乘积(x销售收入y广告费)x总和y总和x平方总和斜率

最小二乘法y值y=4.944876777x+77136.393496由此,计算出每个节点的y预测值y1=4.944876777*13985.51+77136.25423=146292.8778y2=4.944876777*6265.78+77136.25423=108119.7642y3=4.944876777*12116.45+77136.25423=137050.6065y4=4.944876777*15832.77+77136.25423=155427.3509y5=4.944876777*18064.53+77136.25423=166463.1291y6=4.944876777*57013.59+77136.25423=359061.4314y=bx+k最小二乘法散点图回归线广告费60000Y轴销售收入x轴广告费预测销售收入373828.9线性回归模型线性回归模型

线性回归模型在Python第三方模块sklearn模块(全称Scikit-learn模块)下的linear_model模块中。

①安装②导入模块③创建线性回归模型常用参数及说明参数说明fit_intercept布尔型值,选择是否需要计算截距,默认值True,如果中心化了的数据可以选择Falsenormalize布尔型值,选择是否需要标准化,默认值False,和参数fit_intercept有关,当fit_intercept设置为False时,将忽略该参数。若为True,则回归前对回归量x进行归一化处理,取均值相减,再除以L2范数(L2范数是指向量各元素的平方和然后开方)。copy_x布尔型值,选择是否复制X数据,默认值True,如果为False,则覆盖x数据n_job整型,代表CPU工作效率的核数,默认值1,-1表示跟CPU核数一致主要属性参数说明coef_数组或形状,表示线性回归分析的回归系数。(斜率w1,w2,w3,...,wn)intercept_数组,表示截距主要方法参数说明fit(x,y,sample_weight=None)拟合线性模型predict(x)使用线性模型进行预测score(x,y,sample_weight=None)返回预测的确定系数R^2Excel日期数据的处理按日期筛选数据1按日期显示数据2按日期统计数据3按日期筛选数据实现按日期筛选数据,在DataFrame对象中指定日期或日期区间即可。按年度获取数据

importpandasaspdaa=r'TB2018.xls'df=pd.DataFrame(pd.read_excel(aa))df1=df[['订单付款时间','买家会员名','联系手机','买家实际支付金额']]df1=df1.set_index('订单付款时间')#将date设置为indexprint(df1['2018'])#获取2019年的数据按日期筛选数据获取2017年和2018年的数据print(df1['2017':'2018'])#获取2017至2018年的数据获取某月的数据print(df1['2018-11'])#获取某月的数据获取具体某天的数据print(df1['2018-11-06':'2018-11-06'])获取某个区间的数据print(df1['2018-11-01':'2018-11-15'])按日期显示数据按月显示数据df2=df1.to_period('M')按季度显示数据df2=df1.to_period('Q')按年度显示数据df2=df1.to_period('Q')按日期统计数据按周统计数据df1.resample('w').sum()按月统计数据df1.resample(‘M').sum()按季度统计数据df1.resample('Q').sum()MSQS按年统计数据df1.resample('AS').sum()A按日期统计并显示数据按年统计并显示数据df1.resample('AS').sum().to_period('A')按季度统计并显示数据df1.resample('Q').sum().to_period('Q')按月统计并显示数据df1.resample('M').sum().to_period('M')销售收入分析与预测开发步骤①数据处理②统计日期数据③绘制拟合图④预测销售收入数据处理销售收入数据广告支出数据Y轴X轴数据处理相关代码:aa=r'./data/JDdata.xls'bb=r'./data/JDcar.xls'dfaa=pd.DataFrame(pd.read_excel(aa))dfbb=pd.DataFrame(pd.read_excel(bb))df1=dfaa[['业务日期','金额']]df2=dfbb[['投放日期','支出']]数据处理数据显示不全数据输出时列名不对齐怎么办呢?#显示所有列pd.set_option('display.max_columns',None)#设置宽度pd.set_option('display.width',1000)#解决数据输出时列名不对齐的问题pd.set_option('display.unicode.ambiguous_as_wide',True)pd.set_option('display.unicode.east_asian_width',True)补充一点日期数据统计并显示resample方法to_period方法根据历史销售数据绘制拟合图预测销售收入Y预测值=X值*斜率+截距

X值:已知的7月份要投入的广告费斜率和截距:clf=linear_model.LinearRegression(fit_intercept=True,normalize=False)k=clf.coef_#获取回归系数(斜率w1,w2,w3,...,wn)b=ercept_#获取截距w0公式:二手房数据分析预测系统某城市各区二手房均价分析1需求分析某城市各区二手房数量所占比例2全市二手房装修程度分析3热门户型均价分析4二手房售价预测5系统设计功能结构图业务流程图系统预览系统开发必备开发工具准备

操作系统:Windows7、Windows8、Windows10。

开发工具:PyCharm内置模块:sys

第三方模块:PyQt5、pyqt5-tools、matplotlib、sklearn、

pandas文件夹组织结构技术准备scikit-learn模块概述1加载datasets子模块中的数据集2支持向量回归对象3scikit-learn库概述分类回归聚类降维选型预处理/加载datasets子模块中的数据集本地加载数据:sklearn.datasets.load_<name>1远程加载数据:sklearn.datasets.fetch_<name>2构造数据集:sklearn.datasets.make_<name>3常用数据集加载数据函数数据集名称应用任务类型datasets.load_iris()鸢尾花数据集用于分类、聚类任务的数据集datasets.load_breast_cancer()乳腺癌数据集用于分类、聚类任务的数据集datasets.load_digits()手写数字数据集用于分类任务的数据集datasets.load_diabetes()糖尿病数据集用于分类任务的数据集datasets.load_boston()波士顿房价数据集用于回归任务的数据集datasets.load_linnerud()体能训练数据集用于多变量回归任务的数据集本地数据集支持向量回归对象LinearSVR()对象sklearn.svm.LinearSVR(epsilon=0.0,tol=0.0001,C=1.0,loss='epsilon_insensitive',fit_intercept=True,intercept_scaling=1.0,dual=True,verbose=0,random_state=None,max_iter=1000)fromsklearn.svmimportLinearSVR参数名称说明参数名称epsilonfloat类型值,loss参数中的ε,默认值为0.1fit_interceptboolean类型值,是否计算此模型的截距。如果设置为false,则不会在计算中使用截距(即数据预计已经居中)。默认为Truetolfloat类型值,终止迭代的标准值,默认值为0.0001verboseint类型值,是否开启verbose输出,默认为TrueCfloat类型值,罚项参数,该参数越大,使用的正则化越少,默认为1.0dualboolean类型值,选择算法以解决对偶或原始优化问题。设置为True时将解决对偶问题,设置为False时解决原始问题,默认为Truelossstring类型值,损失函数,该参数有两种选项:(1)epsilon_insensitive:损失函数为Lε(标准SVR)(2)squared_epsilon_insensitive:损失函数为默认值为epsilon_insensitiveintercept_scalingfloat类型值,当fit_intercept为True时,实例向量x变为[x,ercept_scaling]。此时相当于添加了一个特征,该特征将对所有实例都是常数值。(1)此时截距变成intercept_scaling*特征的权重wε(2)此时该特征值也参与了罚项的计算random_stateint类型值,随机数生成器的种子,用于在混洗数据时使用。如果是整数,则是随机数生成器使用的种子;如果是RandomState实例,则是随机数生成器;如果为None,随机数生成器所使用的RandomState实例np.random。max_iterint类型值,要运行的最大迭代次数。默认为1000coef_赋予特征的权重,返回array数据类型intercept_决策函数中的常量,返回array数据类型LinearSVR()对象常用参数图表工具模块①创建模块文件②绘制饼图函数③

绘制折线图函数④绘制条形图函数图表工具模块绘制饼图绘制折线图绘制条形图绘制各区二手房均价的条形图1绘制全市二手房装修程度的条形图2绘制热门户型均价的条形图3绘制条形图二手房数据分析清洗数据清洗数据Unnamed:0小区名字总价户型建筑面积单价朝向楼层装修区域0中天北湾新城89万2室2厅1卫89平米10000元/平米南北低层毛坯高新1桦林苑99.8万3室2厅1卫143平米6979元/平米南北中层毛坯净月2嘉柏湾32万1室1厅1

温馨提示

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

评论

0/150

提交评论