你好,游客 登录
背景:
阅读新闻

Python数据分析之pandas学习

[日期:2017-05-08] 来源:慧都学院  作者: [字体: ]

  我们接着上次分享给大家的Python数据分析之pandas学习(一),来继续下面的操作。

  有关pandas模块的学习与应用主要介绍以下8个部分:

  1、数据结构简介:DataFrame和Series

  2、数据索引index

  3、利用pandas查询数据

  4、利用pandas的DataFrames进行统计分析

  5、利用pandas实现SQL操作

  6、利用pandas进行缺失值的处理

  7、利用pandas实现Excel的数据透视表功能

  8、多层索引的使用

  我们在Python数据分析之pandas学习(一)中已经介绍到了第四部分的描述性统计分析,我们接着往下讲pandas模块中的其他的知识点。

  五、类似于SQL的操作

  在SQL中常见的操作主要是增、删、改、查几个动作,那么pandas能否实现对数据的这几项操作呢?答案是Of Course!

  增:添加新行或增加新列

  1.In [99]: dic = {'Name':['LiuShunxiang','Zhangshan'],

  2....: 'Sex':['M','F'],'Age':[27,23],

  3....: 'Height':[165.7,167.2],'Weight':[61,63]}

  4.

  5.In [100]: student2 = pd.DataFrame(dic)

  6.

  7.In [101]: student2

  8.Out[101]:

  9.Age Height Name Sex Weight

  10.0 27 165.7 LiuShunxiang M 61

  11.1 23 167.2 Zhangshan F 63

  现在将student2中的数据新增到student中,可以通过concat函数实现:

  

 

  注意到了吗?在数据库中union必须要求两张表的列顺序一致,而这里concat函数可以自动对齐两个数据框的变量!

  新增列的话,其实在pandas中就更简单了,例如在student2中新增一列学生成绩:

  

 

  对于新增的列没有赋值,就会出现空NaN的形式。

  删:删除表、观测行或变量列

  删除数据框student2,通过del命令实现,该命令可以删除Python的所有对象。

  

 

  删除指定的行

  

 

  原数据中的第1,2,4,7行的数据已经被删除了。

  根据布尔索引删除行数据,其实这个删除就是保留删除条件的反面数据,例如删除所有14岁以下的学生:

  

 

  删除指定的列

  

 

  我们发现,不论是删除行还是删除列,都可以通过drop方法实现,只需要设定好删除的轴即可,即调整drop方法中的axis参数。默认该参数为0,表示删除行观测,如果需要删除列变量,则需设置为1。

  改:修改原始记录的值

  如果发现表中的某些数据错误了,如何更改原来的值呢?我们试试结合布尔索引和赋值的方法:

  例如发现student3中姓名为Liushunxiang的学生身高错了,应该是173,如何改呢?

  

 

  这样就可以把原来的身高修改为现在的170了。

  看,关于索引的操作非常灵活、方便吧,就这样轻松搞定数据的更改。

  查:有关数据查询部分,上面已经介绍过,下面重点讲讲聚合、排序和多表连接操作。

  聚合:pandas模块中可以通过groupby()函数实现数据的聚合操作

  根据性别分组,计算各组别中学生身高和体重的平均值:

  

 

  如果不对原始数据作限制的话,聚合函数会自动选择数值型数据进行聚合计算。如果不想对年龄计算平均值的话,就需要剔除改变量:

  

 

  groupby还可以使用多个分组变量,例如根本年龄和性别分组,计算身高与体重的平均值:

  

 

  当然,还可以对每个分组计算多个统计量:

  

 

  是不是很简单,只需一句就能完成SQL中的SELECT…FROM…GROUP BY…功能,何乐而不为呢?

  排序:

  排序在日常的统计分析中还是比较常见的操作,我们可以使用order、sort_index和sort_values实现序列和数据框的排序工作:

  

 

  我们再试试降序排序的设置:

  

 

  上面两个结果其实都是按值排序,并且结果中都给出了警告信息,即建议使用sort_values()函数进行按值排序。

  在数据框中一般都是按值排序,例如:

  

 

  多表连接:

  多表之间的连接也是非常常见的数据库操作,连接分内连接和外连接,在数据库语言中通过join关键字实现,pandas我比较建议使用merger函数实现数据的各种连接操作。 如下是构造一张学生的成绩表:

  

 

  现在想把学生表student与学生成绩表score做一个关联,该如何操作呢?

  

 

  注意,默认情况下,merge函数实现的是两个表之间的内连接,即返回两张表中共同部分的数据。可以通过how参数设置连接的方式,left为左连接;right为右连接;outer为外连接。

  

  左连接实现的是保留student表中的所有信息,同时将score表的信息与之配对,能配多少配多少,对于没有配对上的Name,将会显示成绩为NaN。

推荐 打印 | 录入: | 阅读:
相关新闻      
本文评论   
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款