利用python进行数据分析 笔记_利用python进行数据分析笔记(2)

第五章 pandas入门

5.1 pandas的数据结构介绍

pandas有两个主要的数据结构:Series和DataFrame

Series

Series由一组数据和与之相关的数据标签(索引)组成,仅有一组数据可以产生最简单的Series

索引在左边,数据在右边。如果没有指定索引,会自动生成0到N-1(N为数据长度)的整数索引,而且可以通过Series的属性index和values来分别获取索引和数据

指定索引创建Series:

可以通过索引来获取Series单一的值或者一组值,注意,想要获得一组值的话需要在方括号里传入索引列表:

使用numpy函数或者类似numpy运算,都会保留索引值:

也可以将Series看成一个定长的字典,许多字典里的函数也可以用在Series中:

通过字典也可以创建Series

如果只传入一个字典,那么字典的键会自动变成索引,传入排好序的键的列表,可以让索引重新排序:

如果传入的索引列表的长度与原数据不匹配,索引比数据短会自动把没有索引的数据给消除(但是此数据并没有被回收),索引比数剧长会给没有数据的那个索引赋值为NAN,pandas的isnull和notnull可以检测数据的缺失:

Series最重要的⼀个功能是,它会根据运算的索引标签自动对齐数据:

没有对应的索引的数组会被自动赋值给NAN

Series对象本身及其索引都有一个name属性:

Series的索引可以通过赋值的方式就地修改,修改之后索引的名称会消失

DataFrame

DataFrame是一个表格型数据结构,包含一组或几组有序的列,且每列都可以是不同的数据类型。有行索引和列索引。

常见的创建DataFrame的方法是传入一个含有等长列表或者等长数组的字典:

对于特别大的dataframe,head方法用于选取前五行:

如果指定了列序列,则dataframe会按照指定序列排序:

如果传入的列索引在数据中找不到,会自动生成缺失值,如果传入的行索引在数据中找不到,会报错:

通过字典或者属性的方式,可以将dataframe的列获取变成一个Series:

df[columns]可以获取任何列的名,而df.column只能获取列名符合python命名规则的列

列可以通过赋值的方式对数据进行修改,可以赋值为一个标量或一组值:

将列表或者数组进行赋值给dataframe时,要保证长度和df的长度一致,如果赋值的是一个Series,则会根据索引精确匹配进行赋值,而其他没有的空位全部由缺失值填补

注意,df.column不能用于创建列,而df.['column']可以用于创建新的列

关键字del用于删除列

通过索引方式返回的列对应的是原数据,而不是返回一个副本。而对返回的Series用copy方法可以返回副本。

如果嵌套字典传给DataFrame,pandas会将外层的键作为列索引,内层的键作为行索引:

可以使用类似numpy中转置的方法对行和列进行调换

可以输入给DataFrame构造器的数据:

如果给DataFrame的行和列也设置了name,这些信息也会显示出来:

如果df的各列数据类型不相同,则df会用一个可以包含所有数据类型的类型:dtype = object

values属性也会以二维ndarray的形式返回DataFrame中的数据:

索引对象

构建Series或者DataFrame时,任何数组或者其他序列的标签都会被转换成一个Index(对象),se或df的索引可以修改,但是index对象本身不可变,因此用户不能对其进行修改

Index的功能也类似于集合

与集合不同,index中的值可以重复,而且如果选择重复的标签,会显示出所有值:

5.2 基本功能

重新索引

pandas的reindex方法会重新根据索引对数据进行排列:

若索引列表中含有没有数据的索引,则会自动填上NaN,而且该函数返回一个新副本,并不是在原数据上进行修改。

reindex函数中含有许多参数,其中'method'参数可以设置如何自动填充缺失值(有时按照原文会报错,这里采用另一种方法,):

method选项是插值选项,即reindex中的参数一定要把原index全部包含,否则会出现全NaN情况

reindex可以对df进行行索引和列索引,如果值传递一个序列,会自动进行行索引

丢弃指定轴上的项

drop方法返回一个指定轴上丢弃了指定项后的新对象:

对于df,可以删除任意轴上的索引值,不过在删除列时只靠标签是不够的,要加上axis = 1:

如果想要就地修改,而不是返回一个新副本,则在函数里加上inplace = 'True'即可:

索引、选取和过滤

Series中,利用标签的切片运算与普通的Python切片运算不同,其末端是包含的:

用一个值或序列对df进行索引,获取的是一个或者多个列:

而向df采用切片索引或者布尔型索引,会选取行

布尔型索引时要指定一个列进行索引

用loc和iloc进行选取:

使用轴标签(loc)和整数标签(iloc),可以从df中选择行和列的子集

整数索引

对于整数型索引,如果上述索引方法会出错,如果非整数型索引,则可以,所以我们规定整数型索引通通利用标签进行索引。

算数运算与数据对齐

DataFrame对象相加,只要没有共用的列标签或者行标签,结果都为空,Series亦是如此

在算术方法中填充值

是如果对象相加没有共用的行标签或者列标签,但是又不想返回NaN,则可以用算术方法对空值进行填充。

上述add()方法中的fill_value = 0是将NaN值当作0来处理

下面是一些算术方法,这些算术方法返回的都是一个新副本,如果方法以r开头,说明会反转参数:

DataFrame与Series之间的运算

DataFrame和Series会先进行索引对齐,然后再进行广播运算

注意,iloc()函数返回的是一个series,而通过df切片返回的还是一个df,所以通过df切片返回的数据与df进行运算时df之间的运算

如果希望匹配在列上进行传播,则需要用到算术运算法,且需要传入轴参数

注意是在列上进行传播,但是传入的轴axis = 0(因为我们的目的是匹配行索引然后进行广播)

函数应用和映射

numpy的通用函数也可以用在pandas上

如果想要把自定义的函数或者函数用在每一行或者每一列上,可以用apply函数:

如果不传递轴参数,会沿着0轴使用函数,传递参数会沿着1轴使用函数

排序和排名

要对行或者列进行排序(按照字典顺序),可以使用sort_index方法,它返回的是一个新对象。而对于df,可以设定按行还是列进行排序

如果想要按照值进行排序,可以使用sort_values()方法进行排序,而对于df,如果想要按照某列进行排序,需要加入"by = '参照列'",注意此方法对于df来说只能按照列进行排序,如果by后面是行的话会报错

带有重复标签的轴索引

索引的is_unique属性可以说明索引中的值是否全是唯一的

如果索引对应多个值,则返回一个Series,如果索引对应的是一个值,则返回一个标量

5.3 汇总和计算描述统计

df的sum会自动返回一个列和的series,因为默认是先按照0轴进行运算,如果想要计算行和,需要传入轴参数axis = 1

一些统计方法:

唯一值、值计数以及成员资格

第一个函数是unique(),它可以将数据中重复的数据去掉,只留下一个,对于Series,其返回的是一个array,返回的新副本并不会自动排序

函数value_counts()返回的是每一个值出现的次数(频率)

函数isin()判断数组中的成员资格

对于df,也可以运用value_counts来计数,其中返回的索引是df中的唯一值,传递轴参数可计算相应轴上该值的出现次数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学习数据分析是当代信息时代的一项重要技能,Python作为一种强大的编程语言,是数据分析的热门工具之一。以下是我在学习利用Python进行数据分析过程中的一些笔记。 首先,学习Python的基础知识是必不可少的。了解Python的基本语法、数据类型、循环和条件语句等知识对于数据分析的学习非常重要。我通过自学网课和阅读相关书籍,逐渐掌握了Python的基础知识。 其次,学习使用Python数据分析库。在Python中,有很多强大的数据分析库,例如NumPy、Pandas和Matplotlib等。我通过学习这些库的用法,掌握了数据的处理、清洗、分析和可视化的技巧。我学习了如何使用NumPy进行矩阵运算和数值计算,如何使用Pandas进行数据处理和数据操作,以及如何使用Matplotlib进行数据可视化。 除了数据分析库,学习Python的机器学习库也是必不可少的。机器学习在数据分析中扮演着重要角色,Python中有很多优秀的机器学习库,例如Scikit-learn和TensorFlow。我通过学习这些库的使用,了解了机器学习的基本概念和常用算法,例如回归、分类和聚类等。我也学习了如何使用这些库来构建和训练机器学习模型。 最后,实践是学习的关键。在学习的过程中,我通过实践项目来巩固所学知识。我选择了一些真实的数据集,并运用Python数据分析技术进行数据处理、分析和可视化。通过实践,我不仅掌握了数据分析的具体步骤和方法,还锻炼了自己解决实际问题的能力。 总的来说,学习利用Python进行数据分析需要掌握Python的基础知识、数据分析库和机器学习库的使用,同时也需要通过实践项目来巩固所学知识。这个过程需要持续不断的学习和实践,但是通过不断的努力和实践,我相信能够掌握Python进行数据分析的技能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值