本文的主要内容是基于中国大学mooc(慕课)中的“Python数据分析与可视化”课程进行整理和总结。
DataFrame类型由公用相同索引的一组列组成。
DataFrame 的多列数据共用同一列索引,是一个表格型的数据类型,每列值的数据类型可以不相同;
DataFrame既有行索引也有列索引,对于每一行的索引叫index,每一列的索引叫colum;
DataFrame可以用于表达二维数据,同时也能用于表达多维数据;
DataFrame类型可以由如下类型创建:
- 二维ndarray对象;
a = pd.DataFrame(np.arange(10).reshape(2,5))
a
0 1 2 3 4
0 0 1 2 3 4
1 5 6 7 8 9
可以看到,除了生成的0-9元素外,在纵向上自动生成了行索引,在横向上自动生成了列索引,自动生成的索引都是从0开始的整数。
- 由一维ndarray/列表/字典/元组或Series类型;
b = {'one':pd.Series([1,2,3],index=['a','b','c']),
'two':pd.Series([4,5,6,7],index=['a','b','c','d'])}
bd = pd.DataFrame(b)
bd
one two
a 1.0 4
b 2.0 5
c 3.0 6
d NaN 7
可以看到,字典中的键自从变成了自定义的列索引,在字典中的每一个元素对应了DataFrame的一列,key称为那一列索引的名字,当字典中两个Series类型对应的索引不一致时,生成的DataFrame会自动添加NaN(空值)
pd.DataFrame(bd,index=['b','c'],columns=['two','three'])
two three
b 5 NaN
c 6 NaN
可以发现 ,数据会根据行列索引自动补齐。
还能通过列表类型的字典创建:
c = {'one':[1,2,3,4],
'two':[9,8,7,6]}
pd.DataFrame(c,index=['a','b','c','d'])
one two
a 1 9
b 2 8
c 3 7
d 4 6
- Series类型
- 其他的DataFrame类型
下面根据图片信息创建DataFrame类型。
d = {'城市':['北京','上海','广州','深圳','沈阳'],
'环比':[101.5,101.2,101.3,100.9,100.5],
'同比':[120.7,120.6,120.1,119.5,120.1],
'定基':[121.4,122.5,122.4,1210,122.3]}
pd.DataFrame(d,index=['c1','c2','c3','c4','c5'])
城市 环比 同比 定基
c1 北京 101.5 120.7 121.4
c2 上海 101.2 120.6 122.5
c3 广州 101.3 120.1 122.4
c4 深圳 100.9 119.5 1210.0
c5 沈阳 100.5 120.1 122.3
d.index
Index(['c1', 'c2', 'c3', 'c4', 'c5'], dtype='object')
d.columns
Index(['城市', '环比', '同比', '定基'], dtype='object')
d.values
array([['北京', 101.5, 120.7, 121.4],
['上海', 101.2, 120.6, 122.5],
['广州', 101.3, 120.1, 122.4],
['深圳', 100.9, 119.5, 1210.0],
['沈阳', 100.5, 120.1, 122.3]], dtype=object)
我们可以通过使用如下方法获得DataFrame其中的元素。
d['同比']
c1 120.7
c2 120.6
c3 120.1
c4 119.5
c5 120.1
Name: 同比, dtype: float64
d.ix['c1']
城市 北京
环比 101.5
同比 120.7
定基 121.4
Name: c1, dtype: object
d['同比']['c1']
120.7