在第3章,讲到了矩阵matrix和向量vector,矩阵和向量都只能包含某一种数据类型,而在实际应用中,这种情况比较少见。
创新互联服务项目包括东宁网站建设、东宁网站制作、东宁网页制作以及东宁网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,东宁网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到东宁省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
当我们做一项数据调查时,调查报告通常不可能只含有数值型数据或者字符型数据,而是包含各种数据类型(做分析时需要对目录数据进行编码,这部分内容会在python分析基础中讲到)。因此,我们需要一种新的容器类型——data frame。
有人把data frame翻译为数据帧,这种译法是不准确的,尤其是考虑到“帧”的定义和data frame的含义的差别。也有人完全按照字面意思把它翻译成数据框架,我感觉有些画蛇添足,把原本不难理解的东西复杂化。
本章主要讲了:
其实很简单,用一个例子就能解释明白:中学时老师统计的期末成绩单就是一个df,通常一个Excel表格中包含以下内容:
在实际操作中,我们通常读取一个Excel表单或者一个csv文件,并将这个文件赋值给一个变量(df或者data),后期对文件的操作可以通过变量名来进行。需要注意的是,df的每一行表示不同的观测对象,每一列表示一个定语或变量。在成绩单里,每个学生都是一个被观测的个体,而各科成绩表示不同的定语(Attribute),定语是用来描述观测对象的特征的。
下面我将采用R语言内置的数据集mtcars(motor trend car road tests)来做演示。
首先打开RStudio,用 data() 函数载入数据集:
通过前五行数据,我们可以看到,每行表示不同的汽车型号,列表示每个汽车型号的不同特征,例如排量,马力,气缸数等等。
通常在获取一个数据集后,我们需要了解它的结构,例如一共有几行,有哪些列,列的名字,每列的数据类型等。查看df的结构,需要 str() 函数。
输出结果表示,mtcars一共有32行(observations),和11列(variables)。
$符号后面是列名,一共11个,且mtcars中所有的数据类型都是numerical。
前面使用了内置数据集,接下来可以使用 data.frame() 自己创建一个,括号中填入不同的向量,这些向量必须包含相同的元素数量。
* 注意区分R和python在创建df时的不同语法
我们以太阳系内八大行星为例,建立一个df,包含行星的名字,类型(岩质行星还是气态巨行星),相对地球直径的比值,相对地球公转周期的比值以及是否含有星环(不止土星有星环)。
观察一下我们创建的df,不难发现每个向量就是df中的每一列。(在python中有类似的用法,即通过字典dictionary创建df,参见python教程。)
跟矩阵和向量类似,我们可以选择df的特定行和 / 或列。利用中括号,在逗号的左边填入想选择的行,右边填入列。这个用法跟前面矩阵的元素选择重复,这里就省略了。
这里介绍另外一种方法,只用列名选择某个特定的列:
df$colname
输出的结果是一个向量,可以用 class() 函数验证向量元素的类型。
更进一步,如果我们想选出有星环的行星,可以通过以下操作:
可以看出,我们筛选出了 rings 列中,值为 TRUE 的所有行。
那么能否筛选不带星环的行星?
方法很简单,只需要在中括号中加入一个 !
* 注意:由逻辑值组成的列通常被用来筛选符合某些条件的行,若没有由逻辑值组成的列,我们可以通过逻辑运算符自己建立一个筛选标准
现在我们尝试找出影响行星是否有星环的因素。
对比这两个结果,可以发现太阳系中的岩态行星都没有星环,而气态巨行星都有星环。因此我们可以猜测,影响一个行星是否有星环的因素是行星的类型。当然这只是一个假设,要想验证这个假设在银河系甚至可观测宇宙是否成立,我们需要更多数据来进行 假设检验 ,这部分的内容需要懂点统计学,后面会讲到。
上一步实际上是给我们的数据集创建了一个子集,用来过滤掉一部分不需要i的数据。现在介绍一种更高效、更普适的方式:
借助第二个arg,我们可以根据“某些条件”来选择。这里的条件覆盖较广的范围,不再局限于逻辑值。
* 注意:这里的‘单等于号’表示赋值,‘双等于号’表示逻辑判断
现在试试用numerical数据作为筛选条件,选出直径比地球直径大的行星:
排序要用到 order() 函数:
* 注意:decreasing默认为假,也就是说如果不填这个arg, order() 函数会进行升序排列
你这是定义了一个函数,df是该函数的变量,是你自己设置的变量名,所以df的意思只有你自己知道啊。
def dayUP(df):
#your code goes here
def 在python中是一个函数定义的关键字。
dayUP是函数名。
后面的括号里的df代表是什么意思,如果作者没有对df进行注释的话,也只有他自己知道。我们只需要知道这是一个参数就可以了,管他是什么的简写。
在Python中,pandas是基于NumPy数组构建的,使数据预处理、清洗、分析工作变得更快更简单。pandas是专门为处理表格和混杂数据设计的,而NumPy更适合处理统一的数值数组数据。
使用下面格式约定,引入pandas包:
pandas有两个主要数据结构:Series和DataFrame。
Series是一种类似于一维数组的对象,它由 一组数据 (各种NumPy数据类型)以及一组与之相关的 数据标签(即索引) 组成,即index和values两部分,可以通过索引的方式选取Series中的单个或一组值。
pd.Series(list,index=[ ]) ,第二个参数是Series中数据的索引,可以省略。
Series类型索引、切片、运算的操作类似于ndarray,同样的类似Python字典类型的操作,包括保留字in操作、使用.get()方法。
Series和ndarray之间的主要区别在于Series之间的操作会根据索引自动对齐数据。
DataFrame是一个表格型的数据类型,每列值类型可以不同,是最常用的pandas对象。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)。DataFrame中的数据是以一个或多个二维块存放的(而不是列表、字典或别的一维数据结构)。
pd.DataFrame(data,columns = [ ],index = [ ]) :columns和index为指定的列、行索引,并按照顺序排列。
如果创建时指定了columns和index索引,则按照索引顺序排列,并且如果传入的列在数据中找不到,就会在结果中产生缺失值:
数据索引 :Series和DataFrame的索引是Index类型,Index对象是不可修改,可通过索引值或索引标签获取目标数据,也可通过索引使序列或数据框的计算、操作实现自动化对齐。索引类型index的常用方法:
重新索引 :能够改变、重排Series和DataFrame索引,会创建一个新对象,如果某个索引值当前不存在,就引入缺失值。
df.reindex(index, columns ,fill_value, method, limit, copy ) :index/columns为新的行列自定义索引;fill_value为用于填充缺失位置的值;method为填充方法,ffill当前值向前填充,bfill向后填充;limit为最大填充量;copy 默认True,生成新的对象,False时,新旧相等不复制。
删除指定索引 :默认返回的是一个新对象。
.drop() :能够删除Series和DataFrame指定行或列索引。
删除一行或者一列时,用单引号指定索引,删除多行时用列表指定索引。
如果删除的是列索引,需要增加axis=1或axis='columns'作为参数。
增加inplace=True作为参数,可以就地修改对象,不会返回新的对象。
在pandas中,有多个方法可以选取和重新组合数据。对于DataFrame,表5-4进行了总结
适用于Series和DataFrame的基本统计分析函数 :传入axis='columns'或axis=1将会按行进行运算。
.describe() :针对各列的多个统计汇总,用统计学指标快速描述数据的概要。
.sum() :计算各列数据的和
.count() :非NaN值的数量
.mean( )/.median() :计算数据的算术平均值、算术中位数
.var()/.std() :计算数据的方差、标准差
.corr()/.cov() :计算相关系数矩阵、协方差矩阵,是通过参数对计算出来的。Series的corr方法用于计算两个Series中重叠的、非NA的、按索引对齐的值的相关系数。DataFrame的corr和cov方法将以DataFrame的形式分别返回完整的相关系数或协方差矩阵。
.corrwith() :利用DataFrame的corrwith方法,可以计算其列或行跟另一个Series或DataFrame之间的相关系数。传入一个Series将会返回一个相关系数值Series(针对各列进行计算),传入一个DataFrame则会计算按列名配对的相关系数。
.min()/.max() :计算数据的最小值、最大值
.diff() :计算一阶差分,对时间序列很有效
.mode() :计算众数,返回频数最高的那(几)个
.mean() :计算均值
.quantile() :计算分位数(0到1)
.isin() :用于判断矢量化集合的成员资格,可用于过滤Series中或DataFrame列中数据的子集
适用于Series的基本统计分析函数,DataFrame[列名]返回的是一个Series类型。
.unique() :返回一个Series中的唯一值组成的数组。
.value_counts() :计算一个Series中各值出现的频率。
.argmin()/.argmax() :计算数据最大值、最小值所在位置的索引位置(自动索引)
.idxmin()/.idxmax() :计算数据最大值、最小值所在位置的索引(自定义索引)
pandas提供了一些用于将表格型数据读取为DataFrame对象的函数。下表对它们进行了总结,其中read_csv()、read_table()、to_csv()是用得最多的。
在数据分析和建模的过程中,相当多的时间要用在数据准备上:加载、清理、转换以及重塑。
在许多数据分析工作中,缺失数据是经常发生的。对于数值数据,pandas使用浮点值NaN(np.nan)表示缺失数据,也可将缺失值表示为NA(Python内置的None值)。
替换值
.replace(old, new) :用新的数据替换老的数据,如果希望一次性替换多个值,old和new可以是列表。默认会返回一个新的对象,传入inplace=True可以对现有对象进行就地修改。
删除重复数据
利用函数或字典进行数据转换
df.head():查询数据的前五行
df.tail():查询数据的末尾5行
pandas.cut()
pandas.qcut() 基于分位数的离散化函数。基于秩或基于样本分位数将变量离散化为等大小桶。
pandas.date_range() 返回一个时间索引
df.apply() 沿相应轴应用函数
Series.value_counts() 返回不同数据的计数值
df.aggregate()
df.reset_index() 重新设置index,参数drop = True时会丢弃原来的索引,设置新的从0开始的索引。常与groupby()一起用
numpy.zeros()
python基础中,df后面是传函数参数。是要在小括号里面传函数参数,后面的[]是因为函数返回一个数组,列表所以用[0]取得索引为0处的值。
python基础内容简介
本书是大气海洋学科方向学者的python入门书。全书侧重于介绍大气海洋学科领域python编程常用的基础知识,包括即也阻的获取、安装、环境编辑器等内容,示例介绍了python语言基础,流程控制,列表、元组、字典与集合,函数,类和对象,模块,存储户等基础知识。
结合python基础知识,介绍了异常处理、计算生态、正则表达式、python脚本、日志等内容。文后结合习题帮助读者解决常见编程问题和困惑,从而帮助读者实现时也on知识的灵活使用和综舍编程,将python用于大气海洋工程当中。
本书第1~8章为Python语言基础,主要介绍Python的基本用法;第9章为一个实战,帮助读者理解前8章的知识,第10~17章为Python的进阶使用,包含面向对象编程、函数式编程入门、文件读写、异常处理、模块和包几个部分。
第18章为第2个实战,帮助读者融会贯通前17章的知识,同时抛砖引玉,引起读者探索的兴趣。
当前名称:python中的df函数,df python
标题网址:https://www.cdcxhl.com/article28/dsecijp.html
成都网站建设公司_创新互联,为您提供网站设计、网站建设、品牌网站设计、网站改版、做网站、手机网站建设
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联