Python数据处理:关于Pandas你需要知道的都在这里了

用户成长系列
标签: #<Tag:0x00007fb12d09ee18>

(小马哥) #1

使用Python 处理数据

数据整理是数据科学研究流程中的一个重要步骤。本文要介绍的pandas就是一个广受欢迎的数据整理库。这个应用最早基于NumPy开发,那么NumPy又是什么东西?NumPy其实是Python里进行数学计算的基础工具。Pandas库提供了快速、简捷、易懂的数据结构,简化了数据整理步骤。

然而,pandas简捷的数据结构并不是那么容易上手。正因为pandas数据结构比较简洁,所以许多常用的功能放置只能被在其他的函数当中。将这些极其常用的功能和数据本身进行了分离,这就是pandas刚开始不那么容易上手的原因。对新手来说,需要找到一个好的学习的切入点。现在市面上有许多pandas学习资料,涵盖了方方面面。但建议初学者打印一份pandas操作指南(或者叫它小抄)以备不时之需。

温馨提示:带好小抄再上路!

pandas操作指南

要在python里面使用pandas,第一件要做的事情就是导入。首先你需要了解python里面导入外部库的规范。一般来说,导入的时候将pandas简称为pd。这样的好处在于,在程序的任意位置,你都可以使用pd命令来调用pandas。

pandas数据结构

当你首先了解了如何导入pandas,你就可以开始了解pandas数据结构了。你可能会想,数据结构究竟是什么东西?最简单的答案是,当你有几千几万个数据点时,每一个存放数据点的位置之间的排列关系就是数据结构。如果你懂得一些NumPy,你肯定会想到这些数据结构就是可以用数字索引的数列。进一步的解释可以参考一个视频,讲述了pandas数据结构和NumPy数列之间的关系。

A Visual Guide To Pandas: https://www.youtube.com/watch?v=9d5-Ti6onew

pandas使用的数据结构基本上包括两类:Series和DataFrames。一个Series可以看作一个一维的向量,每个元素根据其位置被标上一个数字,从0到n,n是这个向量的长度。使用pd.Series()函数可以创造一个Series。在括号里你可以放一个list(python中最常见的数据结构),甚至你还可以加进去一个特定的索引数列。上图展示了这个过程。

注意,你可以把任意一种数据放入Series中,可以是整数、字符串等等。

使用pd.DataFrames( )可以创建DataFrames,它至少包括两列包含不同数据的Series。括号中你可以放字典进去,然后加上一些数字索引来明确地指出列的元素。

输入输出

当你使用pandas进行数据整理的时候,自己手动输入数据创造一个DataFrames并不是一个好选择。你可以选择直接从文件中导入数据,让pandas自己创建DataFrames。这就是pandas的简洁之处。

包含数据的文件有多种多样的储存形式,包括txt、csv、xlsx、SQL表格等。其中后三种将是你经常碰到的储存形式。pandas针对这三种储存方式,分别有一个对应的函数让你导入:pd.read_csv(), pd.read_excel()和pd.read_sql( )。

pandas甚至有专门对应SQL数据库查询(query)文件的导入函数:pd.read_sql_query( )。to_sql( )函数可以同时应对SQL表格和搜索文件,但是它其实只是上面提到的后两种函数的结合。使用to_sql( )函数时系统会自动探测文件类型,调用正确的函数。

当从python中输出文件的时候,可以使用pd.to_csv( ), pd.to_excel()和 pd.to_sql()。

如何求助

help( )函数始终能够方便地帮助你理解如何使用pandas函数。始终记住:当使用help( )函数的时候,尽量把你想了解的函数拼写完整,然后把指令放在help函数的括号里面:
image

选择特定的数据点

当你终于导入了外部的文件之后,你想进一步看看这些文件中的数据长什么样、结构如何时,你可以选择特定的元素进行查看。提示一下,你还可以顺便学习下NumPy中应该如何选取元素。

当然,pandas选择的过程和NumPy选择元素的过程很相似。如果你不懂NumPy也没有关系。其实很简单的。如果你想看一个Series中的一个元素,在Series 后面加上方括号[ ],方括号中间填上你想要看的元素的位置号码。如图所示,[ ]中是’b’,返回值是-5。去对照本文之前的内容,我们就会发现这是正确的数字。同样的,如果你要处理一个两维的序列(DataFrames),[ ]中就需要两个数字,用分号(;)隔开。分号前面的数字代表第几行,后面的数字代表第几列。第二个例子中,df[1:]会返回给你所有行,但是每一行都从第2个元素开始。

选择DataFrames里面的元素的第二种方法是使用iloc( )和iat( )。

第三种方法,则是通过行和列的名字(标签)进行选择。

再比如说你在之前章节已经看见每个列都有一个标签:“Country”、 “Capital”和“Population”。你可以通过把标签输入到这两个函数中:loc()和at(),选择你想要的元素。这是第四个方法。

第五种方法,则是输入标签到ix()函数中得到相应的元素,但如果DataFrames没有标签,ix函数也可以利用列的位置来进行选择。

操作指南中中还介绍了布尔索引,布尔索引能够帮助你选择DataFrames里面满足一定条件的元素。这些条件可以包括等于、不等、大于、小于和它们的和、或的并用。

最后,还可以改变一个Series的索引元素,比如说一个索引值可以从3改为6。

去除元素

你不仅可以选取、索引、设置你的数据结构中的元素的值,你还可以随意地去去除掉一些你不需要的值。使用drop( )来去除那些元素。在默认设置之下(axis=0),受到drop函数影响的是横行;如果你想对竖列进行改动,那么就必须明确的设置axis=1。
image

排序和排名

你还有可能要对你的数据进行排序或者排列。使用sort_index( )沿某一个方向进行索引排序,使用sort_values( )沿某一个方向进行值排序。相信你也理解了rank( )的功能,它能够沿着某一个方向排列值的大小,然后将排名输出为新的一列索引。
image

得到数据结构的信息

当你最终拿到你所要的数据后,你一定想对数据及其结构有个大概的认识。你可能想知道表格的大小、索引值、空值、列标签等。info()函数能够帮你总结出很多数据结构的特征和信息,能够帮助你快速地熟悉这个陌生的数据集。

image
上图左栏列出了一些得到数据结构特征的函数,还有一些常见的总结性指标,比如你肯定已经很熟悉的求和、平均、中位数等。

应用函数

在某些情况下,你想对你的DataFrames或Series应用一些计算函数。你的选择包括lambda函数,apply( )函数和applymap( )函数。其中apply( )函数将计算应用于整个数据集,applymap( )则将计算应用于每一个元素。

image

数据排列

你所需要知道的最后一件事情是,当你的两个数据集的索引不统一的时候,你的跨数据集操作将产生什么结果。指令参考中给出了一个例子,当新的数据集与已有的数据集的索引不同时,会发生:

image

这种事情经常发生。而pandas的默认设置是将那些两个表不共享的索引值的位置上填满NA(无值)。如果你想避免这种情况,可以设置fill_value参数,设置的值将取代原来的NA。

现在你已经非常懂得pandas的基本操作了。


来自:大数据应用(微信号:Datalaus)
作者:Karlijn Willems 译/刘天培
原文:Pandas Cheat Sheet for Data Science in Python
链接:https://goo.gl/wmnpSy