pandas 学习笔记

pd.Series

简介:

Series 是一个定长有序字典

简单创建:

Series 中可以包含多种基本数据类型

属性:

pd.Series 包含两个主要属性:index和values。
默认状态下index是从0开始递增的整数。

一般创建Series:

传入data和index:

传入键值对应结构(字典一类):

甚至可以传入另一个Series类型的变量:

注意:

  • Series对象会按照一个value和index一一对应的条件严格创建。

    • 如果value值多于index则无法创建:
  • 如果index多于value也无法创建:
  • 不同于字典的映射,Series对象可以有两个相同的index值:
  • value的值可以是None:

常用属性

  • name
    Series对象和它的index都有一个name属性:
  • 访问index:

  • 访问value:

  • 访问某个index的value:

运算:

  • 加法:
    • 相同的index对应的value会相加,与index的顺序无关
    • 如果某一个值为None,则和为None
    • 如果一个index只存在于相加的两个series对象中的一个,计算结构为None
  • 如果一个index列表中有相同的项,那么加法会很有意思:
    • 第一种情况:
      如果一个series中有1个index项名为‘a’,另一个中有两个‘a’,则这两个‘a’会分别与另一个中的‘a’相加:

    • 第二种情况:
      如果两个series中都有复数个‘a’,则是按顺序来加:

  • 分析:
  1. 从第一种情况的结果来看加法的原理似乎是搜素两个index,如果找到相同的index项则相加,最后输出结果。
    从第二种情况可以看出,已经搜过了的项不会重复检测。比如上面例子中的s_1的第一个‘a’,运算时搜索s_2,发现s_2的第一个index为‘a’,进行加法运算,得到结果3+1=4。然后对s_1中的第二个‘a’进行运算,如果是从头搜素,那么又会发现s_2的第一个index为‘a’,那么应该停止搜索,然后进行加法运算得到结果2+3 = 5,但是最后的结果是6,也就是2+4=6,也就是对s_1的第二个‘a’进行运算时跳过了s_2的第一个‘a’,然后才发现s_2的第二个index也是‘a’,此时进行加法运算得到2+4=6。
  2. 但是,如果已经进行过运算的index会被跳过,那么第一种情况怎么解释?在第一种情况中一个series中有2个‘c’但另一个中只有一个‘c’,一旦跳过那么就有‘c’没有进行运算,那么在输出中应该会有一个‘c’的值为None,但是输出结果是两个均为2,也就是两个‘c’都进行了运算,也就是那一个只有一个‘c’的series中的‘c’在运算的时候并没有因为已经进行过运算而不进行第二次运算,也就是series的加法运算并不会跳过已经运算了的index项,然后这个结论和第二种情况中得出的结论相反。。。
  • 我没有测试如果有更多的相同标签会怎么样,大家可以试一试。现在想到的可能解释是:在第一条分析的结果上(已经进行过运算的index会被跳过),如果在后续的运算中如果出现一个series中有index是没有运算对象的,那么就到已经运算过的index中寻找运算的对象,如果找到则输出结果,如果没有则输出None。这样就可以解释第一种和第二种运算情况。

    • 当然想搞清楚这个问题的最好方法还是直接看源码。(笑)
  • 减法:
    和加法类似

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,537评论 0 13
  • 一、pandas数据结构 1、Series Series有两个属性,values和index,values表示Se...
    迪_7761阅读 612评论 0 1
  • 数据结构 1. Series Series简介及创建 Series创建带标签的一维数组,其中可以包含任意数据类型(...
    小白将阅读 1,060评论 0 4
  • 1. 安装 如果做数据分析用途建议使用Anaconda,自带pandas numy 以及很多库,还有集成开发环境S...
    steveysy阅读 23,649评论 0 37
  • 最近在学习数据分析,对学的进行了些整理,方便以后查看。欢迎交流。 下面的代码用到的模块都事先做了导入: impor...
    不_初心阅读 1,248评论 1 3