美文网首页
pandas 学习笔记

pandas 学习笔记

作者: koolo | 来源:发表于2018-09-20 17:13 被阅读0次

    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。这样就可以解释第一种和第二种运算情况。

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

    相关文章

      网友评论

          本文标题:pandas 学习笔记

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