美文网首页
pandas学习笔记

pandas学习笔记

作者: Mingyan_C | 来源:发表于2019-05-05 22:56 被阅读0次

    在使用jupyter notebook运行ipynb文件时报错,而且我看不明白这个错误的意思,因此就更加难以解决这个问题,而这个错误关于使用pandas对数据进行切片时出错,因此学习panda,目的是想看明白这个错误的意思,然后尝试着解决这个问题。

    1.我遇到的问题:运行ipynb文件,错误如下图:

    图1 图2 图3

    错误就如上面的图片所示。

    2.我输入的文件的部分内容如下图所示:

    图4

    打印图1的第三个单元格,返回的结果如下图:

    图5

    3.为了看明白图1,图2,图3中的错误,学习pandas。

    图6

    4. .loc,基于label(标签)的索引

    Note:

    loc是基于标签的,如果给出的索引中包含没有的标签,会报错 'the label xxx is not in the [index]'

    loc索引的开闭区间机制和Python传统的不同,而是与MATLAB类似的双侧闭区间,即只要出现,就会包含该标签

    数字也可以放入loc中当做索引,但是这时数字指的是标签而不是位置.当使用数字的时候,这个数字必须是表中的列标签名或者行标签名。

    图7

    5. pandas中.iloc函数的使用,基于位置的索引。例如下图的print(df.iloc[3,3])就是4行和第4列(因为索引号都是从0开始,所以这里的3对应表中的第4行和第4列),相当于一个二维坐标系,给出了两横坐标和纵坐标,这就是位置。

    如果iloc方括号中直接给定一个数字或者一个slice的话,默认索引的是行。其中数字的情况会返回一个Series

    图8 图9 图10 图11 图12

    图11和图12的这个错误和我的ipynb文件运行的错误(图1到图3)提示一样,但是通过看我的数据,很明显我的ipynb文件的代码的索引标签并不是行的标签,也就是说并不是对行进行索引。图11和图12的错误提示是由于索引表达式的单个标签是行标签,而当索引表达式的为单个标签时只能是列标签,即对列进行索引,因此会出错。

    pandas对象中索引既可以用标签也可以用下标(下标:如print(df[0:3])就是使用下标来进行索引,左闭右开)来表示,但是单独索引是将索引表达式优先当做标签使用,又因为在DF对象中单独索引默认为对列索引,因此,这是解释器就会去找例子中的df对象有没有一个列标签为2,结果没有,就报错了。

    图13 图14

    图13和14的错误提示跟我的ipynb文件运行的错误提示一样,所以我的ipynb文件运行的错误的原因可能是由于我的数据问题,或者跟这个错误一样,索引的标签(type_of_gene)不对而出错。

    参考来源:

    1.pandas入门——数据切片 - Nick的博客 - CSDN博客

    2.pandas中的常用索引方式总结(一) - weixin_40321125的博客 - CSDN博客

    3.Pandas中loc,iloc与直接切片的区别 - 刀中书 - 博客园

    相关文章

      网友评论

          本文标题:pandas学习笔记

          本文链接:https://www.haomeiwen.com/subject/vnfqoqtx.html