• 数据分析之Pandas(三) DataFrame入门


    DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)。

    DataFrame有多种不同的创建方法:

    • Dict of 1D ndarrays, lists, dicts, or Series
    • 2-D numpy.ndarray
    • Structured or record ndarray
    • A Series
    • Another DataFrame

    1. from dict of Series or dicts

    DataFrame中的index与Series结构中的index是独立的。如果输入数据是一个嵌套的dict结构,系统首先会将内部的dict转化为Series。如果初始化时没有给列名赋值,列名将会默认为dict keys.

    In [46]: d = {'one':pd.Series([1., 2., 3.], index=['a', 'b', 'c']), 'two':pd.Ser
    ies([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
    
    In [47]: df = pd.DataFrame(d)
    
    In [48]: df
    Out[48]:
       one  two
    a  1.0  1.0
    b  2.0  2.0
    c  3.0  3.0
    d  NaN  4.0
    
    In [49]: pd.DataFrame(d, index=['d', 'b', 'a'])
    Out[49]:
       one  two
    d  NaN  4.0
    b  2.0  2.0
    a  1.0  1.0
    
    In [50]: pd.DataFrame(d, index=['d', 'b', 'a'], columns=['two', 'three'])
    Out[50]:
       two three
    d  4.0   NaN
    b  2.0   NaN
    a  1.0   NaN
    

    行标和列标都可以通过index和columns属性获得。

    In [51]: df.index
    Out[51]: Index([u'a', u'b', u'c', u'd'], dtype='object')
    
    In [52]: df.columns
    Out[52]: Index([u'one', u'two'], dtype='object')
    

    注:当一个column集合与dict数据同时初始化,此时column集合将取代dict数据中的key值成为DataFrame的列名。

    2. from dict of ndarrays/lists

    ndarrays长度必须都是一样的,如果index手动初始化,index的长度同样需要与ndarrays一样长。如果index没有手动给出,range(n-1)将默认初始化为index。

    In [4]: d = {'one':[1, 2, 3, 4,], 'two':[4, 3, 2, 1,]}
    
    In [5]: pd.DataFrame(d)
    Out[5]:
       one  two
    0    1    4
    1    2    3
    2    3    2
    3    4    1
    
    In [6]: pd.DataFrame(d, index=['a', 'b', 'c', 'd'])
    Out[6]:
       one  two
    a    1    4
    b    2    3
    c    3    2
    d    4    1
    

    3. from structured or record array

    这种情况与dict of arrays一样。

    In [7]: data = np.zeros((2,), dtype=[('A', 'i4'), ('B', 'f4'), ('C', 'a10')])
    
    In [8]: data[:] = [(1,2.,'Hello'), (2, 3., 'World')]
    
    In [9]: pd.DataFrame(data)
    Out[9]:
       A    B      C
    0  1  2.0  Hello
    1  2  3.0  World
    
    In [10]: pd.DataFrame(data, index=['first', 'second'])
    Out[10]:
            A    B      C
    first   1  2.0  Hello
    second  2  3.0  World
    
    In [11]: pd.DataFrame(data, columns=['C', 'A', 'B'])
    Out[11]:
           C  A    B
    0  Hello  1  2.0
    1  World  2  3.0
    

    4. from a list of dicts

    In [12]: data2 = [{'a':1, 'b':2}, {'a':5, 'b':10, 'c':20}]
    
    In [13]: pd.DataFrame(data2)
    Out[13]:
       a   b     c
    0  1   2   NaN
    1  5  10  20.0
    
    In [14]: pd.DataFrame(data2, index=['first', 'second'])
    Out[14]:
            a   b     c
    first   1   2   NaN
    second  5  10  20.0
    
    In [15]: pd.DataFrame(data2, columns=['a', 'b'])
    Out[15]:
       a   b
    0  1   2
    1  5  10
    

    5. from a Series

    DataFrame的index与Series的index一致,如果没有其他column名称给出,DataFrame的column值与Series的一致。

    In [16]: s = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
    
    In [17]: s
    Out[17]:
    a    1
    b    2
    c    3
    dtype: int64
    
    In [18]: pd.DataFrame(s, columns=['one'])
    Out[18]:
       one
    a    1
    b    2
    c    3
    

    其他DataFrame初始化和操作请参考http://pandas.pydata.org/pandas-docs/version/0.18.1/dsintro.html

  • 相关阅读:
    【JAVA Swing】自定义弹出的无边提醒框(可自动消失)
    java比较器Comparator的简单使用
    BoneCP的简单使用
    鸿蒙的js开发部模式18:鸿蒙的文件上传到python服务器端
    【知识点前情提要】鸿蒙小白入门指南!跟着张荣超老师学鸿蒙
    分布式流转开发常见报错FAQ
    Ability之间或者进程间数据传递之对象(Sequenceable序列化)
    【资源下载】安卓VS鸿蒙第三方件切换宝典 V1.0
    鸿蒙开源第三方组件 ——B站开源弹幕库引擎的迁移(上)
    鸿蒙的js开发部模式17:鸿蒙的系统能力的应用模块
  • 原文地址:https://www.cnblogs.com/jinhaolin/p/5980932.html
Copyright © 2020-2023  润新知