excel学习库

excel表格_excel函数公式大全_execl从入门到精通

每日笔记-python操作excel之pandas模块其他操作

pandas中如何获取数据

1、获取一列数据

首先,创建一个DataFrame,数据是由numpy随机生成的,有索引和列名。

获取数据可以直接通过列名获取某列数据,df['列名'],这个时候获取到的数据是一维的,例如之前说过的Series。

那么如何获取二维数据呢?二维数据用列表表示,就是列表中套列表。

2、输出多个列的信息

多列信息和一列数据是同样的道理。df[['c1','c2']]

输出结果可以看出每列信息的展示。

按照行获取数据

上面的案例解释了如何获取某一列或者某几列的数据,这里说明一下如何按照行来获取数据。

1、按照序号来获取行的数据

因为DataFrame中有index,一般index默认都是0开始的数字。

下面的案例中明确定义了index,但是获取数据的方式仍然可以通过序号来获取。

输出结果为,从结果来看,使用序号获取数据,因为采用的是列表的方式,所以第一行的数据并未获取,这里获取的是第二行和第三行的数据。

如果不清楚是如何表示的,可以参考列表的切片表示形式。

2、根据iloc方法获取行的数据

上面的方法中是直接获取行的数据,通过切片的方式。

但是有一个问题,如果切片的范围超过了 数据本身,那么程序就会报错。

所以这个时候就要采用iloc的方式获取数据,即使超过了表示范围,也不会报错。

只显示范围内的数据。

例如上面的例子,已经超出了列表范围,但是数据只显示现有的数据。

3、如何通过iloc 获取最后一行数据

因为列表的切片原因,最有一行可以用-1来表示,所以在这里也是不例外的。

通过对比原始数据和已经获取到的数据,就会发现数据之间的相似之处

从结果来看,最后一行数据确实是获取到了,只不过默认显示的方式和我们所想的是不一样的。

4、按照行的名称来获取行的数据,才使用的方法是loc

这里的名称指的是index。

DataFrame对象.loc[‘index名称’],这种方式获取所在行的数据。

当然,上面的案例也是获取的一维数据的表现方式

下面的案例是获取行数据的二维表示

从代码的表现方式来说,是很相似的。

5、不管是通过iloc 还是loc ,还有一种直接的方法,是head,默认显示前5条数据。

就像linux中的head一样,显示前10条数据。

这里的head可以选择指定的条数,例如显示两条数据,head(2)

这里没有指定显示的条数,所以知识默认显示前5条。

但是因为我们的DataFrame数据是3*3的矩阵,所以只有3条数据。

从结果分析,最终head还是显示了仅有的三条数据。

按区块显示数据

前两个不管是按照行,或者还是按照列来显示数据,都是整体显示。

这个案例讲如何按照区块来显示,可以理解为定位(坐标)来显示。

例如:向获取某行某几列的数据

该案例显示的是c1和c3列前两行的数据表示为df[['c1','c3']].iloc[0:2]

例如:如何获取单个数据

获取c3列第一行数据,先获取列的数据,再获取行的数据。

代码表示为df[['c3']].iloc[0]

使用loc和iloc同时获取行和列的数据

之前的案例都是单独对行和列的数据进行获取,或者两者只用其中一个。

这个案例中同时使用loc和iloc获取行和列的数据。

通过观察发现,使用loc获取行和列的数据,都是使用的是列表套列表,也就是二维方式,而且必须是名称显示。

使用iloc获取行和列的数据,对与行的数据,是通过切片获取,对于列的数据,是通过列表获取。

这个很重要。

数据筛选

1、通过括号进行数据筛选

案例:筛选出c1列的数据中大于1的所有数据

关键代码 df['c1'] > 1

2、多个条件筛选

& 表示 且 and ,| 表示或者

案例:筛选c1列中大于1的数据,c2列中等于4的数据

从结果中可以发现,有一条数据是满足的

数据排序

1、如何实现DataFrame中进行数据排序的,关键方法是sort_values()方法。

该方法有两个参数,一个是by=列名,表示按照那个列进行排序。

另一个方法是ascending=False, asc 表示升序,所以默认使用sort_values方法是升序。

如果想要进行倒序排列,就需要将该参数设置成False。

从实例结果在中发现确实数据发生了倒序排序。

2、排序的另一个方法是sort_index(),按照索引来排序

数据的简单运算

1、通过简单的加减乘除,生成一列新的数据。

可以把df当做成一个字典,关于字段如何增加key和value的方式就不用多讲了吧。

就是直接dict[key]=value,就添加了一个新的元素。

从结果可以看出,相对于原始数据,新的数据中多了一列,计算的结果。

数据删除

数据删除,删除一列数据,drop方法。

该方法有两个参数,一个是columns,表示删除那个列的数据。

一个是inplace,表示立即生效。

删除数据之后,重新打印df,显示的结果少了一列数据。

那么如何删除多列数据呢?

删除多列数据可以采用列表的形式,将多个列名放在列表中即可。

从结果来看,确实已经删除成功了。

那么又如何删除索引的数据,也就行数据呢?

删除行数据的时候,drop方法中参数columns就需要编程index了

index中传递的索引名称,不在数序号了。

那么又如何删除多行数据呢?

删除多行数据,采用的方式就是在列表中传递多个值来完成。

高级操作 merge,合并两个DataFrame

1、数据的拼接 merge方法,默认是取交集,merge(df1,df2)

举例,有两个DataFrame,如何将两个DataFrame的数据合并成一个呢?

从上述例子中,有两个DataFrame,他们之间有相同的数据,那就是公司信息。

在公司信息中也有相同的数据。所以合并的时候,默认是对相同的数据进行合并。

从合并的结果来看,每个df都有三条数据,合并之后变成了两条数据。

并且合并之后的数据中,公司的信息取了两个df的共同部分。相对应的分数和股价信息页合并在一个df里面了,只不过数据是以公司相同数据为准。

知识点:如何你的df中有多个列,都是相同的,你可以指定,按照那个列进行数据合并。

关键参数,on=你想要以这个列合并的列名。

2、如果不想合并后数据丢失,即取交集,可以采用取所有数据,就是outer。

用数据库的方式理解就是全外关联,full join.

关键参数,how=outer

使用这种方法,如果那个数据没有,则默认显示NaN,就是空的意思。

3、如果想要以左边的df数据为准,去合并右边的数据,可以用how=left

从数据库的角度来说,就是左连接。

当然how=right 就表示右连接,以右边df的数据为主。

高级操作,数据拼接 concat

上面说的merge也是一种数据合并的方式,concat更加直接,就是拼接的意思。

在数据库中被称之为 union all

该方法没有on和how参数,默认是以列的方式进行数据拼接。

可以观察上面的代码和下面的结果之间的内在联系。

2、索引重置

按照concat方法进行拼接,发现拼接后的数据index个是个的。

所以要统一index,有方法reset_index(),重置index。

经过reset_index方法之后,发现所有的index都被重置了。

reset_index是pd中常用的重新索引的方法,但是从案例中发现数据好像有点问题。

所以concat有一个方法,是ignore_index=True,意思是忽略旧的索引,就是说合并对象的索引,重新创建新的索引。

通过ignore_index方法之后,新的索引已经生成了。

concat中还有一个参数,是axis=1,表示纵向拼接,默认为0,是纵向拼接。

从结果看,两个地方的数据都显示在同一行,也没有发生数据交集,各显示各的。

高级操作,append拼接数据

append有点像列表中的append,追加数据的意思了。

实际上append是concat的简单版本,经过测试,在python最新版本3.12里面变成了_append。

案例:将df2的数据追加到df1中。

从结果看,append的效果和concat的效果一样。

但是append在这里同样也有追加数据的功能。

但是需要将追加的结果赋予新的变量,当然也可以赋值给自己。

上面的案例是将追加的结果赋值个新的变量

这个案例是将追加的结果赋值给自己

但是不管方式如何,产生的结果都是一样的。

总结

系统化的学习和了解了DataFrame的各种操作,也就意味着可以将这些数据写到excel中。

至于如何写到excel,可以参考之前提到的

pandas写入数据到excel中还是很简单的。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接