本系列博文为利用 Python 进行数据分析相关工具包的学习,主要包含NumPy、pandas和matplotlib. 学习主要参考莫烦Python网站上面的教程。
NumPy 是将矩阵序列化,使用NumPy中避免了使用循环语句以达到某些计算目的。相比于NumPy,pandas则更像是“字典型的NumPy”,因为在pandas中我们可以给矩阵的行和列进行不同的命名官网wps的最新下载的地址是多少。
总体来说,pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的,二者相互搭配使用。
首先先引入pandas工具包,代码如下:
上述代码中的np.nan为空值。注意在输入值的前侧有0-5的index,这有点像NumPy中的一维数据的索引。而dtype: float64则表示输入的数字格式为64位浮点型数值。
注:不同于NumPy中有int、float多种数值类型,Series中只有float一种数值类型。
矩阵在pandas中被称为DataFrame电脑版wps的下载的地方的方法。首先需要定义一个date来作为描述其行的索引,如果不指定索引,则默认索引为0,1,2,…
注意这里的dtype是日期(datatime[64])。
上述代码生成的DateFrame类似于NumPy中的矩阵,其中数据是使用NumPy中随机抽样所得,行索引(index)为之前定义的日期,列索引(columns)为[‘a’, ‘b’, ‘c’, ‘d’].
下面看一些不指定行索引和列索引情况下的输入。
这里的行列索引为默认的0,1,2,3.
3.1 属性dtypes
dtypes表示DataFrame中每一列的数值属性官网wps的下载的地方是多少
3.2 索引
输出DataFrame中所有的索引。
3.3 数值
输出所有数值(values)
3.4 描述
这里用describe()计算出一些统计量来描述每一列的一些信息。这里要注意describe()只针对数值类型的列进行计算,例如字符串类的列跳过不做分析。
3.5 转置
3.6 排序
上述代码中是根据列(index=1表示列,取0时表示行)名称进行排序,同时可以对ascending赋值True或False来确定是正向排序还是倒序。
不仅仅可以对行列索引进行排序,也可以对其中某个列的取值进行排序。
首先生成一个DataFrame以供后面的学习。
上述两种方法都可以输出df的列索引为a的列。
选出指定行有两种方法,一个是直接给出行所在‘序号’,另一个是给出行的索引名称。
更一般地,可以用pandas的后缀‘loc’去描述选哪个标签下的数据,或是根据位置’position’选择:
这里和NumPy中的布尔逻辑筛选很像官网wps的最新的下载入口在哪里(wps office免费版破解版下载)。
这里可以使用上述的iloc、loc或布尔逻辑值取数后再设定值。
可以添加一列空值,然后再设定值。或是直接添加值。
上述代码中的第二部分可以参考第3节,首先生成取值为1到6的序列,然后将其行标签设定为和df相同的时间序列,一一对应。
首先生成一个DataFrame以供后面的学习分析。
很多时候DataFrame中都含有丢失值(NaN),首先要用isnull函数检查是否有缺失值,返回的是由True和False组成的DataFrame:
还可以用any函数判断返回的DataFrame中是否含有True:
下面介绍如何处理这些丢失值。
上述代码中,axis取0/1时表示将含有缺失值的行/列丢掉,how取any时表示含有一个缺值值就丢掉,取all时表示全部值都是空值时丢掉,默认how取any。
这里可以使用fillnan函数将value的值填到空值处。
首先说明一下pandas可以读取的数据格式,主要包含:csv、excel、hdf、sql、json、msgpack、html、gbd、stata、sas、clipborad、pickle。命令read_加上上述格式即为读取相应格式的命令,to_加上上述格式即将数据保存为相应格式的命令。
注:通常在处理数据时推荐使用csv格式,因为其存储方式简单。
将上述data中的数据保存为xlsx格式
合并可以横向合并、纵向合并,或是按照row、column索引合并,即使行列索引不同仍然可以合并。
wps电脑版下载网址在哪(wps下载电脑版官方下载) 首先还是生成DataFrame:
1. 上下合并
下面将三个含有相同的colume的DataFrame进行合并,在concat函数中,参数axis取0是表示竖向合并,取1时表示横向合并.
可以看出,上述将三个DataFrame合并后的行索引是之前的三个DataFrame(0,1,2),这里可以通过对参数ignore_index赋值进行重新排序:
concat中还有一个参数是join,类似于axis和ignore_index,其取值范围为{‘inner’,‘outer’}.(这里和SQL的内外连接很像,即inner取交集,outer取并集,可以参考)
由于此处主要讨论根据行列索引进行连结,所以需要重新生成几个DataFrame以供学习:
注意生成的两个DataFrame的column和index不全相同。
首先看一下直接使用上述提到的concat进行连接会出现什么结果:
直接使用concat会导致两个DataFrame不同的地方直接为空值NaN。实际上这里concat函数中的参数join取缺省值‘outer’。如果参数join取inner会导致不同的部分直接被舍弃掉。
7.2 左右合并
首先将axis取值为1表示横向合并,同时使用df1.reindex_like(df0)表示保留df0的全部行列,将df1中与df0行列标签相同的元素保留,行列都不同的直接删除,行不同或列不同的取值为空NaN。
想想一张excel表格,每一列都是一个属性,每一行为一个对象。append函数的运行过程就像是在excel中添加对象的过程。下面看一个例子感受一下:
上述result1表示将df1,df2合并到df0下侧。接下来看一下如何添加单独一行:
相对于concat,merge功能更加全面,当然也更加复杂,下面来学习一下merge。
首先生成数据:
然后wps的官网最新下载地址的方法来基于key这一列进行合并:
之后考虑根据两列来进行合并:
这里需要特殊注意的是,和concat函数中join弄人为outer不同,merge的连接方式默认为inner,即交集。在上述代码中表示只有当两个DataFrame的key1列和key2列的取值完全相同时才会连接到一起,只有由一个不同即丢弃。
merge函数中的参数how(如何连接)有四个可取值,分别为’left’,‘right’,‘inner’和’outer’,后两个就不再赘述了,而left则表示按照左侧的(前一个)DataFrame的行标签进行连接,right表示按照右侧(后一个)DataFrame的行标签进行连接。
上述代码中,函数merge中加入的参数indicator,当其取值为True时,可以在输出的表格的最后一列展示每行标签是both,left_only还是right_only。此时该列名称默认为_merge,可直接给参数indicator传递一个字符串以作为该列名称:
学习完根据一列或是两列进行连接后,我们再来看一下根据行索引进行连接:
根据行索引进行连接的参数取值和根据列进行连接一样,就不再赘述了。
最后来考虑一种情况:假设我们想要根据A这一列来连接两个DataFrame,但是我们想在连接后新的DataFrame中将两个原始DataFrame的列区分开来,需进行如下操作:
上述代码中,通过对参数suffixes赋值,这使得得到的新的DataFrame中boys的每个列标签后面都加上了_boy,girls的每个列标签后面都加上了_girl。
这里调用matplotlib包进行画图:
常见的画图方法主要包含:bar、hist、box、kde、area、scatter、hexbin等等,在此不详细展开,但是在之后的matplotlib的学习中会系统介绍画图的方式方法。
下面看几个简单的用plot画图的例子:官网wps最新下载的地址是什么
【例1】:线性数据
【例2】:DataFrame
接下来看画散点图的例子:
上述代码第二行中的ax=ax,前一个ax表示改行的图,后一个ax表示上一个图,令二者相等表示将第二个图画到第一个图中去。
以上就是pandas基础学习的内容,本文仅仅简单介绍了pandas基本使用方法,其更多的功能还需要在实践中慢慢探索学习,各位加油。祝我们变得更强!
注1:建议搭配pandas官方学习手册一起学习。
注2:有不足或错误之处欢迎各位及时指出,感谢理解。