《统计学-基于Python》 课件全套 第1-11章 数据与Python语言-时间序列分析和预测_第1页
《统计学-基于Python》 课件全套 第1-11章 数据与Python语言-时间序列分析和预测_第2页
《统计学-基于Python》 课件全套 第1-11章 数据与Python语言-时间序列分析和预测_第3页
《统计学-基于Python》 课件全套 第1-11章 数据与Python语言-时间序列分析和预测_第4页
《统计学-基于Python》 课件全套 第1-11章 数据与Python语言-时间序列分析和预测_第5页
已阅读5页,还剩308页未读 继续免费阅读

下载本文档

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

文档简介

StatisticswithPython

统计学

基于Python

课程内容描述统计、推断统计、其他方法使用软件

Python

语言学分与课时3学分,1~17周,每周3课时课程简介贾俊平2023/12/191.1数据与统计学1.2Python的初步使用第1章数据与Python语言

统计学(statistics)

分析数据的一门科学,它所提供的是一套通用于所有学科领域的获取数据、处理数据、分析数据并从数据中得出结论的原则和方法统计学是一套通用的数据分析方法,虽然这些方法可用于不同学科领域数据的分析,但它不是为某个特定的问题领域构造的统计方法不是一成不变的,使用者在特定情况下需要根据所掌握的专业知识选择使用这些方法,如果需要,还可以进行必要的修正什么是统计学

1.1

数据与统计学数据分析(dataanalysis)

运用统计方法对收集来的数据进行分析,从中提取有用信息并得出结论的过程数据分析的目的是把隐藏在数据中的信息有效地提炼出来,从而找出所研究对象的内在规律和特征在实际应用中,数据分析可帮助人们做出判断和决策,以便采取适当行动什么是数据分析

1.1

数据与统计学统计学提供的就是一套数据分析方法数据分析所用的方法就是统计方法数据分析方法——基本分类

1.1

数据与统计学从分析目的看

可以将数据分析分为描述性分析(descriptiveanalysis)、探索性分析(exploratoryanalysis)和验证性分析(confirmatoryanalysis)三大类描述性分析和是对数据进行初步的整理、展视和概括性度量,以找出数据的基本特征;探索性分析侧重于在数据之中发现新的特征,为形成某种理论或假设而对数据进行的分析;验证性分析则侧重于对已有理论或假设的证实或证伪从所使用的统计分析方法看可大致可分为描述统计(descriptivestatistics)和推断统计(inferentialstatistics)两大类描述统计是利用图表形式对数据进行汇总和展示,计算一些简单的统计量推断统计是根据样本信息来推断总体的特征,内容包括参数估计和假设检验数据分析方法从分析目的看描述性分析探索性分析验证性分析从统计方法看描述统计推断统计商业软件——不推荐使用

商业类软件种类繁多,较有代表性的软件有SAS、SPSS、Minitab、Stata等。多数人较熟悉的Excel虽然不是统计软件,但提供了一些常用的统计函数以及数据分析工具这类软件虽有不同的侧重点,但功能大同小异,基本上能满足大多数人做数据分析的需要。商业类软件使用相对简单,容易上手主要问题是价格不菲,多数人难以接近,此外,更新速度慢,难以提供最新方法的解决方案数据分析工具

1.1

数据与统计学非商业软件——推荐使用

非商业类软件则不存在价格问题。目前较为流行的软件有R语言和Python语言,二者都是免费的开源平台R语言的一种优秀的统计软件,它是一种统计计算语言。优点:更新速度快,可以包含最新方法的解决方案;提供丰富的数据分析和可视化技术,功能十分强大。R软件中的包(package)和函数均由统计专家编写,函数中参数的设置也更符合统计和数据分析人员的思维方式和逻辑,并有强大的帮助功能和多种范例,初学者也很容易上手Python则是一种面向对象的解释型高级编程语言,并拥有丰富而强大的开源第三方库,也具有强大的数据分析可视化功能。Python于R的侧重点略有不同,R的主要功能是数据分析和可视化,且功能强大,多数分析都可以由R提供的函数实现,不需要太多的编程,代码简单,容易上手。Python的侧重点则是编程,具有很好的普适性,但数据分析并不是其侧重点,虽然从理论上说都可以实现,但往往需要编写很长的代码,帮助功能也不够强大,这对数据分析的初学者来说可能显得麻烦,但仍然不失为一种有效的数据分析工具数据分析工具

1.1

数据与统计学数据及其来源——变量和数据

1.1

数据与统计学数据(data)变量的观测结果数据是个广义的概念,任何可观测并有记录的信息都可以称为数据,它不仅仅包括数字,也包括文本、图像等。比如,一篇文章也可以看作数据,一幅照片也可以视为数据,等等变量(variable)描述所观察对象某种特征的概念,其特点是从一次观察到下一次观察可能会出现不同结果观察一个企业的销售额,这个月和上个月不同;观察股票市场上涨股票的家数,今天与昨天数量不一样;观察一个班学生的生活费支出,一个人和另一个人不一样;投掷一枚骰子观察其出现的点数,这次投掷的结果和下一次也不一样“企业销售额”、“上涨股票的家数”、“生活费支出”、“投掷一枚骰子出现的点数”等就是变量数据及其来源——变量和数据的分类

1.1

数据与统计学类别变量(categoricalvariable)取值为对象属性或类别以及区间值(intervalvalue)的变量,也称分类变量(classifiedvariable)或定性变量(qualitativevariable)可分为无序类别变量(disorderedcategoryvariable)和有序类别变量(orderedcategoryvariable)两种无序类别变量也称名义(nominal)值变量,其取值的各类别间是不可以排序的有序类别变量也称顺序(ordinal)值变量,其取值的各类别间可以排序只取两个值的类别变量也称为布尔变量(booleanvariable)或二值变量(binaryvariable类别变量(categoricalvariable)数值变量(metricvariable)是取值为数字的变量,也称为定量变量(quantitativevariable)可以分为离散变量(discretevariable)和连续变量(continuousvariable)离散变量的取值是只能取有限个值的变量,而且其取值可以列举,通常(但不一定)是整数连续变量是可以在一个或多个区间中取任何值的变量,它的取值是连续不断的数据及其来源——变量和数据的分类

1.1

数据与统计学数据是变量的观测结果,因此,数据的分类与变量的分类是相同的本书混合使用变量和数据这两个概念在讲述分析方法时多使用变量的概念,在例题分析中多使用数据的概念了解变量或数据的分类十分必要,因为不同的变量或数据适用的分析方法是不同的变量分类类别变量(定性)无序类别变量(名义值)有序类别变量(顺序值)布尔变量(二值)数值变量(定量)离散变量(离散值)连续变量(连续值)时间变量(定性或定量)定性:离散值定量:连续值间接来源——二手数据直接来源——抽取样本总体(population):包含所研究的全部个体(或数据)的集合样本(sample):从总体中抽取的一部分元素的集合样本量(samplesize):构成样本的元素的数目概率抽样方法根据已知的概率抽取样本元素,也称随机抽样数据及其来源——数据来源和抽样方法简单随机抽样从总体N个单位(元素)中随机地抽取n个单位作为样本,使得总体中每一个元素都有相同的机会(概率)被抽中抽取元素的具体方法有放回抽样和无放回抽样分层抽样将总体单位按某种特征或规则划分为不同层,再从不同的层中随机地抽取样本系统抽样将总体中的所有单位(抽样单位)按一定顺序排列,在规定的范围内随机地抽取一个单位作为初始单位,然后按事先规定好的规则确定其他样本元素整群抽样将总体中若干个单位合并为组(群),抽样时直接抽取群,再对中选群中的所有单位全部实施调查

1.1

数据与统计学Python

Python是一种面向对象的解释型高级编程语言简单易学、免费、拥有丰富而强大的开源第三方库被广泛应用于系统和网络编程、数据处理、云计算、机器学习和人工智能等多个领域已成为目前广泛使用的编程语言之

Python与Anaconda

1.2

Python的初步使用Anaconda

Anaconda是一种适合数据分析的Python开发环境,也是一个开源是Python版本Anaconda包含了多个基本模块,如numpy,pandas,matplotlib,IPython等,安装Anaconda时,这些模块也就一并安装好了Anaconda还内置了JupyterNotebook开发环境,十分方便代码的编写和修改本书代码编写和运行使用的就是Anaconda平台的JupyterNotebook界面,推荐初学者使用Anaconda的下载与安装进入官网(),点击右上角“GetStarted”选择Anaconda个人版选项,并单击在弹出的页面中选择自己的电脑系统,如果是Windows系统,需要选择电脑系统的位数,比如64位,即可以下载

Anaconda的下载与安装

1.2

Python的初步使用Anaconda界面有几种不同的界面可供使用,如JupyterNotebook,Spyder,Ipython等,可根据自身偏好选择JupyterNotebook是一个交互式编辑器,它是以网页的形式打开程序,可以在线或非在线编写代码和运行代码,代码的运行结果可以直接在代码块下显示,对使用者这而言比较直观,易于代码的编写和修改JupyterNotebook还可以使用Markdown和HTML来创建包含代码块和标题或注释的文档,便于代码块的区分本书代码编写和运行均使用JupyterNotebook

Anaconda——创建JupyterNotebook文件创建JupyterNotebook文件打开JupyterNotebook,点击右上角的New按钮,选择Python3,即可以创建一个Python文件在JupyterNoteboo中编写代码在in[]后的代码框(称为“cell”)中可输入代码。点击“运行”按钮或使用组合键<Ctri+Enter>,即可运行该代码,运行结果会在代码块的下面显示,其中out[]内的数字表示代码块的第几次运行输出要增加新的代码编辑框,可以点击“+”在下方增加代码编辑框,点击“Insert”,可以在上方或下方增加代码编辑框,即可继续编写代码

1.2

Python的初步使用保存JupyterNotebook文件要保存编写的代码,常用的有两种格式:一种是JupyterNotebook的专属文件格式,另一种是Python格式要保存成JupyterNotebook格式,在文件界面中点击file菜单,选择SaveandCheckpoint,文件会自动保存在默认路径下,文件的扩展名为ipynb。如果要保存在自己的文件夹中,可以在桌面上先建立一个文件夹,比如,Python_code,进入JupyterNotebook后,点击“Desktop”就能显示你的文件夹Python_code,点击该文件夹,并点击右上角的New按钮,选择Python3,即可以创建一个Python文件,这个文件就会自动保存至文件夹Python_code中,你可以建立多个不同名称的文件保存在该文件夹中要保存成Python文件,点击file菜单,选择Downloadas下的Python(.py),文件会自动保存在默认路径

1.2

Python的初步使用

Anaconda——保存JupyterNotebook文件模块Python中的模块(module)或称为库(package)是指包含Python类、函数等信息的集合,可以看作一个工具包大部分统计分析和绘图都可以使用已有的Python模块中的函数来实现一个Python模块中可能包含多个函数,能做多种分析和绘图,对于同一问题的分析或绘图,也可以使用不同模块中的函数来实现,用户可以根据个人需要和偏好选择所用的模块。模块的下载与安装可以在Python中进行,也可以在Anaconda中进行,这取决于你使用是操作平台或环境在最初安装Python软件时,自带了一序列内置模块,如time,random,sys,os,json,pickle,shelve,xml,re,logging等除内置模块外,Python还提供了丰富的开源的第三方模块,统计常用的模块有数值计算模块numpy,数据处理模块pandas,作图模块matplotlib,统计计算模块statistics,统计建模模块statsmodels内置模块与第三方模块都需要导入这些模块才能使用其中的函数模块的加载与安装

1.2

Python的初步使用使用Python安装pip工具是Python自带的第三方安装工具,在python安装过程中已经安装完成,无需独立安装。如果安装Python时成功将其加入PATH,就可以在操作系统终端直接使用pipinstall<模块名称>命令安装第三方模块。Windows系统的操作是,同时按下电脑上的win+R键,在左下角弹出的运行窗口输入“cmd”即可打开终端。MacOS直接打开Terminal即可使用Anaconda安装使用Anaconda中的conda进行包的管理和环境管理。安装模块需要在AandondaPrompt中输入命令。点击Windows的“开始”按钮,在Anaconda点击AandondaPrompt,在打开的界面中输入安装命令即可完成安装。比如,要安装模块pandas,输入condainstall<模块名称>即可完成安装模块的加载与安装

1.2

Python的初步使用模块缩写对于名称较长的模块,为方便使用,通常在导入后将其简化命名。比如,importpandasaspd表示导入模块pandas并简化命名为pd,importmatpoltlibasplt表示导入模块matploylib并简化命名为plt,等等当你看到pd.read_csv时,意味着引用的是pandas模块中的read_csv函数,看到np.average时,意味着引用的是numpy模块中的average函数,等等模块的缩写

1.2

Python的初步使用查看帮助每个Python模块和函数都有相应的帮助说明。使用中遇到疑问时,可以随时查看帮助文件查询Python内置的模块或函数时,直接使用help(函数名)或help(’模块名’)即可。比如,要想了解sum函数功能及使用方法,可以使用help(sum)或?sum来查询。要了解random模块的功能及使用方法,可使用help('random')查询,或先使用import导入该模块,使用help(random)查询要查询从第三方平台安装的模块和其中的函数时,需要先用improt导入模块,确保坏境内有这个对象查看帮助文件

1.2

Python的初步使用对象赋值Python有一个重要的概念,即一切皆对象。在Python中,数字、字符串、元组、列表、字典、函数、方法、类、模块,包括你写的代码都是对象(object)对象是给某个变量、数据集或一组代码起一个名字。比如,d=example1_1就是将数据框example1_1赋值给了对象d,要使用该数据框,直接使用d就可以了Python语言的标准赋值符号是“=”。使用者可以给对象赋一个值、一个列表、一个矩阵或一个数据框、一个代码块等。比如,将5个数据组成的列表[80,87,98,73,100]赋值给对象x,将数据文件example1_1赋值给对象d等编写代码脚本

1.2

Python的初步使用变量命名在Python中,变量名是所指定的一种特定标识符(字符串)。Python的变量命名规则如下标识符可以由字母、数字、下画线(_)组成,其中数字不能打头。字母并不局限于26个英文字母,可以包含中文字符等Python语言区分大小写,因此abc和Abc是两个不同的标识符标识符不能包含空格另外,Python有33个关键字,如表1-1所示。这些关键字在语法中有特定的含义和功能,不能作为变量名编写代码脚本

1.2

Python的初步使用读取外部数据ython可以读取不同形式的外部数据,这里主要介绍如何读取csv格式和Excel格式的数据。本书使用的数据形式均为csv格式,其他很多类型的数据也可以转换为csv格式,比如,Excel数据、SPSS数据等均可以转换成csv格式需要注意的是,csv文件的编码格式有两种,即GBK格式和UTF-8格式。使用Excel将数据存为csv格式时,默认编码格式为GBK,要将其存为UTF-8格式,需要使用CSVUTF-8进行保存使用pandas库中的read_csv函数可以将csv格式数据读入到Python环境中。默认读取编码格式为UTF-8的csv文件,读取编码格式为GBK的csv文件时,需要指定编码格式,及设置参数encoding='gbk',否则会出现报错信息文件读取和保存

1.2

Python的初步使用数据保存在分析数据时,如果读入的是已有的数据,并且未对数据做任何改动,就没必要保存,下次使用时,重新加载该数据即可。但是,如果在Python中录入的是新数据,或者对加载的数据做了修改,保存数据就十分必要如果在Python环境中录入新数据,或者读入的是已有的数据,想要将数据以特定的格式保存在指定的路径中,则先要确定保存成何种格式。如果想将数据框保存成csv格式,则数据文件的后缀必须是csv,并指定编码格式,可以使用数据框的to_csv方法。如果要将数据保存成Excel格式,则数据文件的后缀必须是xlsx,可以使用数据框的to_excel方法文件读取和保存

1.2

Python的初步使用THEENDTHANKS2023/12/19StatisticswithPython

统计学

基于Python

2023/12/19

课程内容描述统计、推断统计、其他方法使用软件

Python

语言学分与课时3学分,1~17周,每周3课时课程简介贾俊平吴翌琳著贾俊平2023/12/192.1Python的基本数据结构2.2数组、序列和数据框2.3数据抽样和筛选2.4生成频数分布表2.5Python绘图基础第2章数据处理和绘图基础

Python的数据结构——数字和字符串Python中有6种基本的数据结构或称数据类型,分别是数字(number)、字符串(string)、元组(tuple)、列表(list)、字典(dictionary)、集合(set)6种数据类型通过不同的组成方式和定义可以产生更多的类型使用内置函数type()可以查看数据的类型

2.1

Python的基本数据结构数字用于储存数值Python支持4种类型的数字,即int(整数类型)、float(浮点类型,即取小数的数字)、bool(布尔类型,是只取True和False两个值的逻辑型数字,也可以用0和1表示)、complex(复数类型)。字符串由数值、字母、下划线组成的字符。可以使用单引号('')、双引号('''')或三引号('''''')指定字符串使用“+”连接两个字符串使用内置函数type()可以查看数据的类型

Python的数据结构——元组和列表元组是一维序列,其定长是固定的、不可变的,内容不能修改,通常用“()”标识,元素之间用“,”分隔列表列表也是一维序列,与元组不同的是其长度是可变的,它所包含的内容也可以进行修改列表中的元素可以是相同类型,也可以是不同类型,元素之间用逗号分隔,使用中括号“[]”或list类型函数可以创建列表,使用内置函数type()可以查看数据的类型

2.1

Python的基本数据结构#创建列表l1=[2,3,4,5]#生成元素同为数字的列表l1[2,3,4,5]l2=["甲","乙","丙","丁"]#元素同为字符串的列表l2['甲','乙','丙','丁']l3=["甲",23,True,[1,2,3]]#不同类型元素的列表l3['甲',23,True,[1,2,3]]l4=list(range(10))#用range函数生成等差数列,起始为0,步长为1l4[0,1,2,3,4,5,6,7,8,9]l5=list(range(100,200,20))#在100~200之间生成数列,步长为20l5[100,120,140,160,180]注:range函数是Python的内置函数,用于生成整数等差序列,共有3个参数,分别是起始值,终点值和步长。默认起始值为0,可以为负值,但不能是小数,默认步长为1,生成规则是左闭右开

Python的数据结构——列表的操作列表的操作使用索引可以访问列表中的元素,索引的符号也是方括号注意:Python的索引从左到右是从0开始的,从右到左是从-1开始的根据需要可以对于列表进行其他一些操作,比如,使用append方法将元素添加到列表的尾部;使用insert方法将元素插入到指定的列表位置;使用pop方法将列表中特定位置的元素移除并返回;使用sort方法对列表中的元素排序;使用“+”连接两个列表,等等

2.1

Python的基本数据结构#向列表追加或插入元素l1=[2,3,4,5]l1.append(6)#将数字6追加到列表l1的尾部[2,3,4,5,6]l2=["甲","乙","丙","丁"]l2.insert(2,'戊')#在列表l2的第3个位置插入“戊”(插入位置的范围从0到列表的长度)['甲','乙','戊','丙','丁']#移除列表中特定位置的元素并返回l2=["甲","乙","丙","丁"]l2.pop(2)#移除列表l2中第3个位置的元素并返回['甲','乙','丁']#连接两个列表l1=[2,3,4,5]l2=["甲","乙","丙","丁"]l12=l1+l2#将列表l1和列表l2连接成一个新列表ab[2,3,4,5,'甲','乙','丙','丁']#列表元素的排序l6=[2,3,4,5,2,8]#创建列表l6l6.sort()#列表元素的排序[2,2,3,4,5,8]l7=['甲','乙','戊','丙','丁']#创建列表l7l7.sort()#列表元素的排序,或写成sorted(l7)['丁','丙','乙','戊','甲']

Python的数据结构——字典和集合——字典及其操作字典字典是Python最重要的内置结构之一,它是大小可变的键值对集,其中键(key)和值(value)都是Python对象。字典中的元素用大括号{}括起来,用“:”分割键和值,不同的键值组合之间用“,”分隔。用大括号“{}”或dict函数可以创建字典,其形式如下:dictionary={key1:value1,key2:value2,……}或写成:dictionary=dict(key1=value1,key2=value2,……)

2.1

Python的基本数据结构#用大括号{}创建字典dc1={'刘文涛':68,'王宇翔':85,'田思雨':74,'徐丽娜':88,'丁文彬':63}#创建5名学生考试分数的字典{'刘文涛':68,'王宇翔':85,'田思雨':74,'徐丽娜':88,'丁文彬':63}#用dict函数创建字典dc2=dict(刘文涛=68,王宇翔=85,田思雨=74,徐丽娜=88,丁文彬=63)#创建5名学生考试分数的字典{'刘文涛':68,'王宇翔':85,'田思雨':74,'徐丽娜':88,'丁文彬':63}#以列表的形式返回字典dc1中的键dc1.keys()dict_keys(['刘文涛','王宇翔','田思雨','徐丽娜','丁文彬'])#以列表的形式返回字典dc1中的值dc1.values()dict_values([68,85,74,88,63])#以列表的形式返回字典dc1中的键值对dc1.items()dict_items([('刘文涛',68),('王宇翔',85),('田思雨',74),('徐丽娜',88),('丁文彬',63)])#返回(查询)字典dc1中键k上的值dc1['徐丽娜']88#删除字典dc1中的某个键值对deldc1['田思雨']{'刘文涛':68,'王宇翔':85,'徐丽娜':88,'丁文彬':63}

Python的数据结构——字典和集合——集合及其操作集合集合是由唯一元素组成的无序集,可看成是只有键没有值的字典集合中的元素是无序的,不记录元素的位置,因此不支持索引、切片等类似序列的操作,只能遍历或使用in、notin等访问或判断集合元素使用set()函数或大括号“{}”的方式等可以创建集合,一个空集合必须使用set()创建

2.1

Python的基本数据结构#使用set函数创建集合set1=set([2,2,2,1,8,3,3,5,5])set1{1,2,3,5,8}#使用大括号{}创建集合set2={2,2,2,1,4,3,3,5,6,6}set2{1,2,3,4,5,6}#两个集合的并集(两个集合中不同元素的集合)set1|set2#或写成set1.union(set2){1,2,3,4,5,6,8}#两个集合的交集(两个集合中同时包含的元素)set1&set2#或写成ersection(set2){1,2,3,5}

numpy中的数组——创建数组数组n维数组(ndarray)是numpy模块中定义的对象,它可以是一维、二维和多维,数组中元素类型是数值型。n维数组由实际数据和描述这些数据的元数据(数据维度,数据类型等)组成,一般要求所有元素类型相同,数组下标从0开始一维数组就是通常所说的向量(vector),二维数组就是通常所说的矩阵(matrix)。可以通过构造函数array创建n维数组,也可以使用numpy中的其他函数如arange函数、ones函数以及zeros函数等创建n维数组

2.2

数组、序列和数据框#创建一维数组(向量)importnumpyasnpa1=np.array([5,4,1,2,3])#使用array函数创建数组a2=np.arange(10)#用range函数生成等差数列,起始为0,步长为1a3=np.arange(2,6,0.5)#用arange函数在2~6之间生成步长为0.5的等差序列print('a1:',a1)#输出结果print('a2:',a2)print('a3:',a3)a1:[54123]a2:[0123456789]a3:[2.2.53.3.54.4.55.5.5]#创建二维数组(矩阵)importnumpyasnpa4=np.array([[1,2],[3,4],[5,6]])#创建2×3的矩阵a4array([[1,2],[3,4],[5,6]])#改变数组的形状importnumpyasnpa5=np.arange(12)#创建一维数组a6=a5.reshape(3,4)#改变数组为3×4的二维数组(矩阵)a6array([[0,1,2,3],[4,5,6,7],[8,9,10,11]])

pandas中的序列和数据框——序列及其操作序列序列类似于一维数组,不同的是它由索引(index)和一维数值(values)组成序列可以储存整数、浮点数、字符、Python对象等多种类型的数据,但一个序列最好只存储一种类型的数据,若存在多种数据类型,该序列的类型会自动转换成对象使用Series函数可创建序列,使用前需要导入pandas模块importpandasaspds1=pd.Series([2,3,4,5])#省略索引时自动生成索引02132435dtype:int64s2=pd.Series([5,8,7,6],index=['a','b','c','d'])#自行指定索引a5b8c7d6dtype:int64#由标量生成序列时,不能省略索引s3=pd.Series([60,80,50],index=['甲',25,True])#索引可以是不同类型元素甲602580True50dtype:int64#由Python字典生成序列s4=pd.Series({'a':1,'b':'boy','c':3})#索引与数据以字典形式传入a1bboyc3dtype:object#由其他函数生成序列s5=pd.Series(range(5))#使用range函数,类似列表print(s5)#print函数用于标准输出(也可以直接运行对象s5)0011223344dtype:int64

2.2

数组、序列和数据框

pandas中的序列和数据框——序列及其操作#获取系列索引、数据、类型importpandasaspds6=pd.Series([5,8,7,6],index=['a','b','c','d'])print('类型:',s6.index)#获取系列索引print('数据:',s6.values)#获取系列数据print('类型:',s6.dtype)#获取系列类型类型:Index(['a','b','c','d'],dtype='object')数据:[5876]类型:int64#设置系列与索引的名称(name)属性='我是一个pandas的Series'#设置系列名称='我是索引'#设置系列索引名称s6我是索引a5b8c7d6Name:我是一个pandas的Series,dtype:int64#转换系列类型s6=s6.astype(float)#将整数型改为浮点数类型s6我是索引a5.0b8.0c7.0d6.0Name:我是一个pandas的Series,dtype:float64#修改序列中的数据s6[[1,3]]=[2,8]#将序列s6中的第2个值和第4个值修改为2和8s6我是索引a5.0b2.0c7.0d8.0Name:我是一个pandas的Series,dtype:float64#序列的对齐运算s7=pd.Series([1,2,3],index=['a','c','e'],dtype=float)s6+s7a6.0bNaNc9.0dNaNeNaNdtype:float64注:序列的运算完全根据索引来对齐,如果两者都有自定义索引,优先使用自定义索引,如果只有一个有自定义索引,另一个是自动索引,还是会使用自定义索引,这种情况运算结果会出现大量空值(NaN);如果两方都是自动索引,则根据自动索引进行对齐。#序列的一些简单计算importpandasaspds8=pd.Series([1,2,3,4,5],index=['a','b','c','d','e'],dtype=float)c=s8.cumsum()#序列s8的累加s=s8.sum()#序列s8求和m=s8.mean()#求序列s8的平均数print("累加:",'\n',c,'\n',"总和=",s,'\n',"平均数=",m)累加:a1.0b3.0c6.0d10.0e15.0dtype:float64总和=15.0平均数=3.0

2.2

数组、序列和数据框

pandas中的序列和数据框——创建数据框数据框数据框是pandas中的另一个重要数据结构,它是一种表格结构的数据,类似于Excel中的数据表,也是较为常见的数据形式数据框实际上是带标签的二维数组,一个数据框由行索引(index)、列索引(columns)和二维数据(values)组成。数据框的每一列和每一行都是一个序列。为了便于分析,一般要求数据框一列只存储一种类型的数据使用pandas的构造函数DataFrame可创建数据框,其中的参数data为数组或字典姓名统计学数学经济学刘文涛688584王宇翔859163田思雨747461徐丽娜8810049丁文彬638289

2.2

数组、序列和数据框

pandas中的序列和数据框——数据框的操作数据框的操作显示数据框,输入数据框的名称即可使用table1_1.head()默认显示数据框table1_1的前5行;使用table1_1.tail()默认显示数据框table1_1的后5行使用type函数可以查看数据的类型使用table1_1.shape可以查看数据框table1_1的行数和列数属性当数据量比较大时,可以使用info()方法查看数据的结构使用describe()方法可以对数据框的数值型变量进行简单的描述统计使用pandas的构造函数DataFrame可创建数据框,其中的参数data为数组或字典方法描述示例columns查看所有列名(列索引)df.columnsdtypes查看所有元素的类型df.dtypeshead查看前n行数据(默认前5行)df.head(3)index查看所有行名(行索引)df.indexinfo查看数据结构(索引、数据类型等)shape查看行数和列数(行,列)df.shapeT数据框的行列转置df.Ttail查看后n行数据(默认后5行)df.tail(3)values查看所有元素的值df.values

2.2

数组、序列和数据框

pandas中的序列和数据框——数据框的排序数据框的排序使用sort_values()方法可以对数据框的某一列排序,函数默认参数ascending=True,即升序排列,需要降序时,可设置参数ascending=False可以按照索引排序,使用sort_index()方法,参数axis默认为0,按照行索引对行排序,设置axis=1即按照列索引对列排序,默认升序按姓名笔画升序排序数据框按统计学考试分数降序排序数据框

2.2

数组、序列和数据框姓名统计学数学经济学4丁文彬6382891王宇翔8591632田思雨7474610刘文涛6885843徐丽娜8810049

姓名统计学数学经济学3徐丽娜88100491王宇翔8591632田思雨7474610刘文涛6885844丁文彬638289

pandas中的序列和数据框——数据框的合并数据框的合并可使用concat函数。函数默认参数axis为0(默认的参数设置可以省略不写),表示将不同的数据框按行合并,设置axis=1将不同的数据框按列合并按行合并时,数据框中的列索引必须相同,按列合并时,数据框中的行索引必须相同,否则合并是没有意义的合并后的数据框

2.2

数组、序列和数据框

姓名统计学数学经济学0刘文涛6885841王宇翔8591632田思雨7474613徐丽娜88100494丁文彬6382895李志国7884516王智强9078597宋丽媛80100538袁芳芳5851799张建国637091

pandas中的序列和数据框——数据框的应用函数函数描述示例describe输出数据框的主要描述统计量df.describe()count返回每一列中非空值的个数df.count()sum返回每一列的和(无法计算时返回空值)df.sum()max返回每一列的最大值df.max()min返回每一列的最小值df.min()argmax返回最大值所在的自动索引位置df.argmax()argmin返回最小值所在的自动索引位置df.argmin()idxmax返回最大值所在的自定义索引位置df.idxmax()idxmin返回最小值所在的自定义索引位置df.idxmin()mean返回每一列的平均值df.mean()median返回每一列的中位数df.median()var返回每一列的方差df.var()std返回每一列的标准差df.std()

2.2

数组、序列和数据框抽取简单随机样本——例题分析

2.3

数据抽样和筛选抽取简单随机样本从一个已知的总体数据集中抽取一个随机样本可以采取不同的抽样方法,本节只介绍抽取简单随机样本的方法使用sample函数抽取简单随机样本【例2-1】50个学生的姓名、性别、专业、满意度和考试分数#无放回抽取10个学生:['黄向春','徐丽娜','张青松','王思思','袁芳芳','杨小波','马家强','张志杰','李佳佳','王浩波’]#有放回抽取10个学生:['刘文涛','王思思','卢春阳','蒋亚迪','黄向春','李国胜','田思雨','吴凯迪','高凤云','邵海阳’]#无放回抽取10个分数:[73,78,80,75,71,89,74,70,82,81]#有放回抽取10个分数:[90,74,76,74,77,86,74,86,63,89]数据筛选

2.3

数据抽样和筛选数据筛选数据筛选(datafilter)是根据需要找出符合特定条件的某类数据。比如,找出每股盈利在2元以上的上市公司;找出考试成绩在90分及以上的学生,等等用Python进行数据筛选的方法很多,比如,直接在数据框的[]中写筛选的条件或者组合条件进行筛选;使用loc或iloc按标签值(列名和行索引取值)或按数字索引访问数据框,从行和列两个维度筛选;使用df.isin函数筛选某些具体数值范围内的数据;使用df.Query函数查询数据框的列;使用filter函数筛选特定的行或列,等等使用sample函数抽取简单随机样本数据筛选——例题分析

2.3

数据抽样和筛选筛选出考试分数小于60的所有学生筛选出考试分数为70、80和90的3个学生筛选出不满意的所有学生(前3行)筛选出管理学专业满意的学生

姓名性别专业满意度考试分数11马凤良男金融学满意5514孙学伟男会计学不满意5133张天洋男会计学一般56

姓名性别专业满意度考试分数49王思思女会计学满意8021李国胜男金融学一般9047尹嘉韩男会计学一般70

姓名性别专业满意度考试分数0张青松男会计学不满意824张志杰男会计学不满意7710李佳佳女金融学不满意80

姓名性别专业满意度考试分数18吴凯迪女管理学满意7136李宗洋男管理学满意7937刘皓天男管理学满意8541孟子铎男管理学满意8246唐国健男管理学满意75数据筛选——例题分析

2.3

数据抽样和筛选筛选出会计学专业考试分数大于等于80的女生,并按分数多少降序排列

姓名性别专业满意度考试分数29李爱华女会计学不满意987宋丽媛女会计学一般9234李冬茗女会计学满意8835王晓倩女会计学不满意8649王思思女会计学满意80筛选出考试分数大于等于80、金融学专业、满意的女生,并按分数多少降序排列

姓名性别专业满意度考试分数5赵颖颖女金融学满意9726丁丽佳女金融学满意8928于文静女金融学满意8443邱怡爽女金融学满意83生成随机数——例题分析

2.3

数据抽样和筛选生成随机数用numpy中的random子模块可以同时生成多个随机数,还能组成不同形状的随机数数组由于是随机生成,每次运行会得到不同的随机数要想每次运行都产生相同的一组随机数,可在生成随机数之前使用函数seed()设定随机数种子,在括号内可输入任意数字即可,如numpy.random.seed(12)。使用相同的随机数种子,每次运行都会产生一组相同的随机数#生成不同分布的随机数(每种分布产生5个)importnumpy.randomasnpr

npr.seed(15)#设定随机数种子r1=npr.standard_normal(size=5)#标准正态分布r2=npr.normal(loc=50,scale=5,size=5)#均值(loc)为50、标准差(scale)为5的正态分布r3=npr.uniform(low=0,high=10,size=5)#0~10之间的均匀分布

print('#标准正态分布:','\n',r1,'\n''#值为50、标准差为5的正态分布:','\n',r2,'\n''#0~10之间的均匀分布:','\n',r3)#打印结果#标准正态分布:[-0.312328480.33928471-0.15590853-0.501789670.23556889]#值为50、标准差为5的正态分布:[41.1819737244.5206897844.5611712948.4741497447.63125814]#0~10之间的均匀分布:[9.176298982.641468537.177736878.657150348.07079482]频数分布表

2.4

生成频分布数表频数分布表频数分布表(frequencydistributiontable)简称频数表,是对类别数据计数或数值数据类别化(分组)后计数生成的表格,用于展示数据的频数分布(frequencydistribution),其中,落在某一特定类别的数据个数称为频数(frequency)类别数据频数表由于类别数据本身就是一种分类,只要将所有类别都列出来,然后计算出每一类别的频数,就可生成频数分布表。根据观测变量的多少,可以生成一维表、二维表和多维表数值数据的频数分布表需要先将数据划分成不同的数值区间,这样的区间就是类别数据,然后再生成频数分布表,这一过程称为类别化(categorization)。类别化的方法是将原始数据分成不同的组别类别数据的频数分布表——一维表

2.4

生成频分布数表一维表当只涉及一个类别变量时,这个变量的各类别可以放在频数分布表中“行”的位置,也可以放在“列”的位置,将该变量的各类别及其相应的频数列出来就是一维表,也称一维列联表(one-dimensionalcontingencytable)【例2-2】

沿用例2-1。

专业会计学19金融学16管理学15一维表百分比表

专业会计学38.0金融学32.0管理学30.0类别数据的频数分布表——二维表

2.4

生成频分布数表二维表当涉及两个类别变量时,可以将一个变量的各类别放在“行”的位置,另一个变量的各类别放在“列”的位置(行和列可以互换),由两个类别变量交叉分类形成的频数分布表称为二维列联表(two-dimensionalcontingencytable)或交叉表(crosstable),简称二维表使用pandas中的crosstab函数和pivot_table函数均可以生成二维表。在crosstab函数中,设置参数margins=True可为二维表添加边际和;设置参数margins_name可以修改边际和的名称;设置参数normalize='index'可以计算各行数据占该行合计的比例;设置参数normalize='columns'可以计算各列数据占该列合计的比例;设置参数normalize='all'可以计算每个数据占总和的比例类别数据的频数分布表——二维表——例题分析

2.4

生成频分布数表生成二维表为二维表添加边际和并修改边际和名称满意度一般不满意满意性别

女3613男12610满意度一般不满意满意性别

女13.6427.2759.09男42.8621.4335.71合计30.0024.0046.00百分比二维表满意度一般不满意满意性别

女13.6427.2759.09男42.8621.4335.71合计30.0024.0046.00计算各数据占总和的比例,并转换成百分比表计算各列所占的比例,并转换成百分比表满意度一般不满意满意合计性别

女20.050.056.5244.0男80.050.043.4856.0满意度一般不满意满意合计性别

女6.012.026.044.0男24.012.020.056.0合计30.024.046.0100.0类别数据的频数分布表——多维表

2.4

生成频分布数表多维表有两个以上类别变量时,通常将一个或多个变量按“列”摆放,其余变量按“行”摆放,这种由多个类别变量生成的频数分布表称为多维列联表(multidimensionalcontingencytable)或高维表(higher-dimensionaltables),简称多维表使用pandas中的数据透视表函数pivot_table可以生成多个类别变量的多维表(该函数可以生成一维表、二维表和多维表)。参数index用于指定行变量,columns用于指定列变量(行和列可以互换,可根据需要指定)。参数margins=True可为多维表表添加边际和,margins_name可以修改边际和的名称。使用聚集函数aggfunc可以对类别数据计数类别数据的频数分布表——多维表——例题分析

2.4

生成频分布数表

性别和专业为行变量、满意度为列变量满意度为行变量、性别和专业为列变量

满意度一般不满意满意合计性别专业

女会计学1359管理学1214金融学1179男会计学43310管理学52411金融学3137合计

15122350性别女男合计专业会计学管理学金融学会计学管理学金融学

满意度

一般11145315不满意32132112满意51734323合计9491011750数值数据类别化——分组表

2.4

生成频分布数表数值数据类别化在生成数值数据的频数分布表时,需要先将数据划分成不同的数值区间,这样的区间就是类别数据,然后再生成频数分布表,这一过程称为类别化(categorization)。类别化的方法是将原始数据分成不同的组别,数据分组是将数值数据转化成类别数据的方法之一,它是先将数据按照一定的间距划分成若干个区间,然后再统计出每个区间的频数,生成频数分布表【例2-3】某电商平台2023年前4个月每天的销售额数据。对销售额做适当分组,分析销售额的分布特征272194161246196201217209265219188216181241254207198224253210215207225234225197171243208202206210233222222199199236203167199193248205216218209235188198225203252203181212205226226220240196172224200261207218217223228238191199252183238203172217237191229196204200187195200218207214217224230233192172216196200235216206218204186206212234243239222208205215203224238243数值数据类别化——分组表

2.4

生成频分布数表

数值数据类别化——分组表——例题分析

2.4

生成频分布数表组距=10的分组组距=15的分组

频数频数百分比(%)累积频数累积频数百分比(%)销售额分组

(160,170]21.6721.67(170,180]43.3365.00(180,190]75.831310.83(190,200]2117.503428.33(200,210]2520.835949.17(210,220]1915.837865.00(220,230]1613.339478.33(230,240]1310.8310789.17(240,250]65.0011394.17(250,260]43.3311797.50(260,270]21.6711999.17(270,280]10.83120100.00

频数频数百分比(%)累积频数累积频数百分比(%)销售额分组

[160,175)65.0065.00[175,190)75.831310.83[190,205)3025.004335.83[205,220)3428.337764.17[220,235)2117.509881.67[235,250)1512.5011394.17[250,265)54.1711898.33[265,280)21.67120100.00

Python主要绘图模块

2.5

Python绘图基础Python主要绘图模块Python具有强大的可视化功能,可绘制式样繁多的图形最典型的可视化工具主要有两个:matplotlib和seaborn此外,作为数据分析模块的pandas也提供了针对DataFrame对象的绘图函数gglot模块提供了类似于R中ggplot2的绘图方法

Python主要绘图模块

2.5

Python绘图基础matplotlib模块matplotlib是Python最常用的一种2D绘图库,它是Python中的基础绘图模块,包含了大量的绘图工具,可以绘图灵活多样的图形,其中的pyplot子模块类似于Matlab的操作思想,上手简单matplotlib可以对图形进行精确的设置,也可以与其他绘图模块结合使用matplotlib属于比较底层的绘图工具,要绘制漂亮或专业的图形,显得有些繁琐,需要编写大量的代码,因此,实际中通常是将其与其他绘图模块结合使用在官方网站(/tutorials/index.html)可以查看matplotlib的使用方法seaborn模块matplotlib是Python最常用的一种2D绘图库,它是Python中的基础绘图模块,包含了大量的绘图工具,可以绘图灵活多样的图形,其中的pyplot子模块类似于Matlab的操作思想,上手简单seaborn可视为matplotlib的扩展模块,也可视为对matplotlib绘图的补充。它是在matplotlib的基础上进行了高级API(ApplicationProgrammingInterface,应用程序编程接口)封装,使用较少的代码就可以绘制出漂亮的图形,可用于绘制分面图、交互图、3D图等。seaborn主要用于绘制较专业的统计分析图形,基本上能满足大部分统计绘图的需求,尤其适合绘制按因子分组的图形以及概率分布图等

Python主要绘图模块

2.5

Python绘图基础Pandas中的绘图函数pandas的数据结构主要是数据框,由于数据框中有行标签和列标签,使用pandas提供的针对DataFrame对象的绘图函数,绘图所需的代码要比matplotlib少pandas中也提供了数据框绘图的高级方法,可以实现快速绘图与matplotlib的精细化设置结合起来,同样可以快速完成更有吸引力的图形ggplot和plotnine绘图系统ggplot和plotnine是用于绘图的Python扩展模块,这两个模块基本上移植了R中ggplot2的绘图语法使用过R的ggplot2的读者使用这两个模块绘图十分容易,输出的图形风格也与R的ggplot2十分类似基本绘图函数

2.5

Python绘图基础matplotlibmatplotlib是Python的一个2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。使用matplotlib仅需要很少的代码就可以生成绘图,如直方图,条形图,散点图等使用matplotlib绘图首先要明确两个对象,即画布(figure)和画像(axes)。画布即绘图的区域,画像即绘制的一幅图,如折线图、条形图、散点图等。所有绘图操作的第1步都是创建画布和画像,让Python明确你开始进行绘图操作,一个画布上可以放置多个画像基本绘图函数

2.5

Python绘图基础matplotlibmatplotlib使用不同的函数控制图像的各个组件,如legend函数控制图例的名称、大小、颜色及位置等属性,title函数控制标题,xlabel函数控制x轴(横坐标)标题,相应的ylabel函数控制y轴(纵坐标)标题,xticks以及yticks函数分别控制x轴和y轴刻度等根据需要选择不同的函数绘制图像的内容,如plot函数绘制折线图,hist函数绘制直方图,barh函数绘制水平条形图,scatter函数绘制散点图等图形布局

2.5

Python

温馨提示

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

评论

0/150

提交评论