作者:陈傲 武汉理工大学教育学1801
数据帧(DataFrame)是二维数据结构,即数据以行和列的表格方式排列。
数据帧(DataFrame)的功能特点:
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]