作者:陈傲 武汉理工大学教育学1801
数据帧(DataFrame)是二维数据结构,即数据以行和列的表格方式排列。

数据帧(DataFrame)的功能特点:

  1. pandas.DataFrame( data, index, columns, dtype, copy)
  • data:数据采取各种形式,如:ndarray,series,map,lists,dict,constant和另一个DataFrame。
  • index:对于行标签,要用于结果帧的索引是可选缺省值np.arrange(n),如果没有传递索引值。
  • columns:对于列标签,可选的默认语法是 - np.arange(n)。 这只有在没有索引传递的情况下才是这样。
  • dtype:每列的数据类型。
  • copy:如果默认值为False,则此命令(或任何它)用于复制数据。

常用案例:

import pandas as pd
data = [['Alex',10],['Bob',12],['Clarke',13]]
df = pd.DataFrame(data,columns=['Name','Age'])
print(df)

执行上面示例代码,得到以下结果:

      Name      Age
0     Alex      10
1     Bob       12
2     Clarke    13

但当我们给的data数据长度不一致时:

import pandas as pd
data = {'A': [1, 2], 'C': [1, 2, 3, 4]}
df = pd.DataFrame(data)
print(df)

我们会得到:

 raise ValueError("arrays must all be same length")
ValueError: arrays must all be same length

实现不等长数据帧的几种方式:

1、利用字典

示例

import pandas as pd
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data,index=['one', 'two'])
print(df)

执行上面示例代码,得到以下结果:

     a   b     c
one  1   2   NaN
two  5  10  20.0

示例

import pandas as pd
data = {'A': [1, 2], 'C': [1, 2, 3, 4]}
df = pd.DataFrame(dict([(k, pd.Series(v)) for k, v in data.items()]))
print(df)

执行上面示例代码,得到以下结果:

     A  C
0  1.0  1
1  2.0  2
2  NaN  3
3  NaN  4

2、利用pd.Series()

import pandas as pd
d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
      'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print(df)

执行上面示例代码,得到以下结果:

   one  two
a  1.0    1
b  2.0    2
c  3.0    3
d  NaN    4

series是一个一维数组,基于NumPy的ndarray结构。Pandas会默然用0到n-1来作为series的index,但也可以自己指定index(可以把index理解为dict里面的key)。

pd.Series([list],index=[list])

3、利用zip()

import pandas as pd
data = {'a': [], 'b': ['1'], 'c': ['0', '1']}
k = list(data.keys())
v = list(data.values())
df = pd.DataFrame(list(zip(k, v)), columns=['one', 'two'])
print(df)

执行上面示例代码,得到以下结果:

  one     two
0   a     []
1   b     [1]
2   c     [0, 1]