zoukankan      html  css  js  c++  java
  • Pandas DataFrame构造简析

    参考书籍:《利用Python进行数据分析》

    DataFrame简介:

      DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)。跟其他类似的数据结构相比(如R的data.frame),DataFrame中面向行和面向列的操作基本上是平衡的。其实,DataFrame中的数据是以一个或多个二维块存放的(而不是列表、字典或别的一维数据结构)。

      导入python库:

    import numpy as np
    import pandas as pd

    DataFrame构造:

      1:直接传入一个由等长列表或NumPy数组组成的字典;

    dict = {
        "key1": value1;
        "key2": value2;
        "key3": value3;
    
    }

      注意:key 会被解析为列数据,value 会被解析为行数据。

    >>> data = {
    ...     'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],
    ...     'year': [2000, 2001, 2002, 2001, 2002],
    ...     'pop': [1.5, 1.7, 3.6, 2.4, 2.9]
    ... }
    
    >>> pd.DataFrame(data)
       pop   state  year
    0  1.5    Ohio  2000
    1  1.7    Ohio  2001
    2  3.6    Ohio  2002
    3  2.4  Nevada  2001
    4  2.9  Nevada  2002

       主动指定列排序方式:

    >>> pd.DataFrame(data, columns=['year', 'state', 'pop'])
       year   state  pop
    0  2000    Ohio  1.5
    1  2001    Ohio  1.7
    2  2002    Ohio  3.6
    3  2001  Nevada  2.4
    4  2002  Nevada  2.9

      此处 0-1位自动生成的列索引,当然了也可以主动指定。

    >>> pd.DataFrame(data, columns=['year', 'state', 'pop'], index=['one', 'two', 'three', 'four', 'five'])
           year   state  pop
    one    2000    Ohio  1.5
    two    2001    Ohio  1.7
    three  2002    Ohio  3.6
    four   2001  Nevada  2.4
    five   2002  Nevada  2.9

      需要注意的是:将列表或数组赋值给某个列时,其长度必须跟DataFrame的长度相匹配!!否则会报ValueError。

    >>> pd.DataFrame(data, columns=['year', 'state', 'pop'], index=['one', 'two', 'three', 'four']) 
    ValueError: Shape of passed values
    is (3, 5), indices imply (3, 4)

      2:传入一个由嵌套的字典;

      它就会被解释为:外层字典的键作为列,内层键则作为行索引。

    >>> dict = {
    ...     "key1": {
    ...         "subkey1": 1,
    ...         "subkey2": 2,
    ...         "subkey3": 3,
    ...     },
    ...     "key2": {
    ...         "subkey1": 4,
    ...         "subkey2": 5,
    ...         "subkey3": 6,
    ...     },
    ...     "key3": {
    ...         "subkey1": 7,
    ...         "subkey2": 8,
    ...         "subkey3": 9,
    ...     },
    ... }
    >>> pd.DataFrame(dict)
             key1  key2  key3
    subkey1     1     4     7
    subkey2     2     5     8
    subkey3     3     6     9

      请务必保证嵌套字典的key的一致性,不然的话,数据会异常,但不会显式的报错,而是显示出NaN,

    >>> dict = {
    ...     "key1": {
    ...         "subkey1111111111111111": 1,
    ...         "subkey2": 2,
    ...         "subkey3": 3,
    ...     },
    ...     "key2": {
    ...         "subkey1": 4,
    ...         "subkey2": 5,
    ...         "subkey3": 6,
    ...     },
    ...     "key3": {
    ...         "subkey1": 7,
    ...         "subkey2": 8,
    ...         "subkey3": 9,
    ...     },
    ... }
    >>> pd.DataFrame(dict)
                            key1  key2  key3
    subkey1                  NaN   4.0   7.0
    subkey1111111111111111   1.0   NaN   NaN
    subkey2                  2.0   5.0   8.0
    subkey3                  3.0   6.0   9.0

      3:传入一个二维nd.array;

    >>> s = [[1,2],[3,4]]
    >>> np.array(s)
    array([[1, 2], 
        [3, 4]])
    >>> pd.DataFrame(np.array(s))
       0  1
    0  1  2
    1  3  4

      当然了你也可以主动指定行和列索引(不赘述):

    >>> pd.DataFrame(np.array(s),index=['one', 'two'], columns=['year', 'state'])
         year  state
    one     1      2
    two     3      4

      4:传入其他的数据(初始化方式基本类似);

      

  • 相关阅读:
    Findbugs初探-使用idea获取findbugs插件
    idea 14运行java工程报错-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.
    Linux定时任务
    模块和包
    流程控制&&函数
    Python 变量与数据类型
    使用代码上传文件示例
    好用的代码示例
    JedisCluster API 整理
    springboot实现转发和重定向
  • 原文地址:https://www.cnblogs.com/JansXin/p/8110472.html
Copyright © 2011-2022 走看看