Pandas DataFrame构造简析

Posted Jansora

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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:传入其他的数据(初始化方式基本类似);

 

 

  

 

以上是关于Pandas DataFrame构造简析的主要内容,如果未能解决你的问题,请参考以下文章

将多个字典附加到 Pandas 数据框:错误 DataFrame 构造函数未正确调用?

Pandas - DataFrame 基本操作

从字典中以 index: list of row values 的形式构造 Pandas DataFrame

从变量中的值构造 pandas DataFrame 会给出“ValueError:如果使用所有标量值,则必须传递一个索引”

Pandas - 绘图操作

pandas中DataFrame相关