最牛逼的数据分析之Pandas!亿级数据都能轻松处理!十分钟学会它

Posted asdn258

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最牛逼的数据分析之Pandas!亿级数据都能轻松处理!十分钟学会它相关的知识,希望对你有一定的参考价值。

 

进群:125240963   即可获取数十套PDF或者零基础入门教程一套哦!

Pandas的数据类型

技术分享图片

 

技术分享图片

 

这里我们从csv文件中读取到了数据,并将他们存入了dataframe中。我们只需要调用read_csv函数并将csv文件的路径作为函数参数即可。header关键字告诉Pandas这些数据是否有列名,在哪里。如果没有列名,你可以将其置为None。Pandas非常智能,所以你可以省略这一关键字

技术分享图片

 

你将获得类似下图的表

技术分享图片

 

当你在Pandas中查找列时,你通常需要使用列名。这样虽然非常便于使用,但有时候,数据可能会有特别长的列名,例如,有些列名可能是问卷表中的某整个问题。把这些列名变短会让你的工作更加轻松:

技术分享图片

 

技术分享图片

 

技术分享图片

 

技术分享图片

 

我们也可以使用这些条件表达式来过滤一个已知的dataframe。

技术分享图片

 

这将返回一个仅仅包含9、10月降雨量低于1000mm的条目的dataframe。

技术分享图片

 

你也可以使用多条条件表达式来进行过滤:

技术分享图片

 

这将返回rain_octsep小于1000并且outflow_octsep小于4000的那些条目。

值得注意的是,由于操作符优先级的问题,在这里你不可以使用关键字‘and’,而只能使用’&’与括号

技术分享图片

 

好消息是,如果在你的数据中有字符串,你也可以使用字符串方法来过滤数据。

技术分享图片

 

注意到你必须使用.str.[string method],你不能直接在字符串上直接调用字符串方法。这一语句返回1990年代的所有条目。

技术分享图片

 

技术分享图片

 

技术分享图片

 

在上面这个例子中,我们把我们的索引值全部设置为了字符串。这意味着我们不可以使用iloc索引这些列了。这种情况该如何?我们使用loc。

技术分享图片

 

这里,loc和iloc一样会返回你所索引的行数据的一个series。唯一的不同是此时你使用的是字符串标签进行引用,而不是数字标签。

ix是另一个常用的引用一行的方法。那么,如果loc是字符串标签的索引方法,iloc是数字标签的索引方法,那什么是ix呢?事实上,ix是一个字符串标签的索引方法,但是它同样支持数字标签索引作为它的备选。

技术分享图片

 

正如loc和iloc,上述代码将返回一个series包含你所索引的行的数据。

既然ix可以完成loc和iloc二者的工作,为什么还需要它们呢?最主要的原因是ix有一些轻微的不可预测性。还记得我说数字标签索引是ix的备选吗?数字标签可能会让ix做出一些奇怪的事情,例如将一个数字解释成一个位置。而loc和iloc则为你带来了安全的、可预测的、内心的宁静。然而必须指出的是,ix要比loc和iloc更快。

通常我们都希望索引是整齐有序地。我们可以在Pandas中通过调用sort_index来对dataframe实现排序。

技术分享图片

 

技术分享图片

 

对数据集应用函数

有时候你会想以某些方式改变或是操作你数据集中的数据。例如,如果你有一列年份的数据而你希望创建一个新的列显示这些年份所对应的年代。Pandas对此给出了两个非常有用的函数,apply和applymap。

技术分享图片

 

技术分享图片

 

你也可以对多行进行分组操作:

技术分享图片

 

技术分享图片

 

接下来的unstack操作可能起初有一些困惑。它的功能是将某一列前置成为列标签。我们最好如下看看它的实际效果。

技术分享图片

 

这个操作会将我们在上面小节创建的dataframe转变成如下形式。它将标识‘year’索引的第0列推起来,变为了列标签。

技术分享图片

 

pivot实际上是在本文中我们已经见过的操作的组合。首先,它设置了一个新的索引(set_index()),然后它对这个索引排序(sort_index()),最后它会进行unstack操作。组合起来就是一个pivot操作。看看你能不能想想会发生什么:

技术分享图片

 

技术分享图片

 

如下你可以看到,两个数据集在年份这一类上已经合并了。rain_jpn数据集仅仅包含年份以及降雨量。当我们以年份这一列进行合并时,仅仅’jpn_rainfall’这一列和我们UK雨量数据集的对应列进行了合并。

技术分享图片

 

采用Pandas快速绘制图表

Matplotlib很好用,但是想要画出一个中途下降的图表还是需要费一番功夫的。而有的时候你仅仅想要快速画出一个数据的大致走势来帮助你发掘搞清这些数据的意义。Pandas提供了plot函数满足你的需求:

技术分享图片

 

这里非常轻松快速地利用plot画出了一个你的数据的图表。利用这个图表,你可以紧接着直观地发现深入挖掘的方向。例如,如果你看我画出的我数据的图表,你可以看到1995年英国可能发生了干旱。

技术分享图片

 

你也能发现英国的降雨量明显低于日本,然而人们却说英国雨下得很多!

技术分享图片

 

是不是很牛逼,是不是很神奇?学到了吗?

技术分享图片

以上是关于最牛逼的数据分析之Pandas!亿级数据都能轻松处理!十分钟学会它的主要内容,如果未能解决你的问题,请参考以下文章

最牛逼的秒杀系统,“12306”的架构是如何搭建的?

NBU是最牛逼的备份软件

又到抢票季:12306 的架构到底是不是国内最牛逼的架构?

200页!这可能是最牛逼的Python自学手册啦!

200页!这可能是最牛逼的Python自学手册啦!

200页!这可能是最牛逼的Python自学手册啦!