进群: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年英国可能发生了干旱。
你也能发现英国的降雨量明显低于日本,然而人们却说英国雨下得很多!
是不是很牛逼,是不是很神奇?学到了吗?
网友评论