DataFrame类型
以下所有内容是学习嵩天老师的课程总结归纳的~
DataFrame类型由共用相同索引的一组列组成
image.png
可以认为这种数据类型是一个表格,index是每一行的行名。
DataFrame类型有一个轴axis的概念,其中index是0轴,表示为axis=0,而在不同列进行操作时,是1轴,则axis=1
总结:
dataframe是一个表格型的数据类型,每列值的类型可以不同。
dataframe有行索引(index),也有列索引(col)
DataFrame类型可以由如下类型创建
1.二维ndarray对象
2.由一维ndarray,列表,字典,元组或Series构成的字典
3.由Series类型创建
4.由其他dataframe类型创建
从二维ndarray对象创建
###dataframe类型
#从二维ndarray对象创建
import pandas as pd
import numpy as np
d =pd.DataFrame(np.arange(10).reshape(2,5))
d
>>>d
0 1 2 3 4
0 0 1 2 3 4
1 5 6 7 8 9
最左边的0 1 是自动行索引,上面的 0 1 2 3 4 是自动列索引
从一维ndarray对象字典创建
##从一维ndarray对象字典创建
dt = {'one':pd.Series([1,2,3],index= ["a","b","c"]),
'two':pd.Series([9,8,7,6], index=["a","b","c","d"])}
d = pd.DataFrame(dt)
>>>d
one two
a 1.0 9
b 2.0 8
c 3.0 7
d NaN 6
可以根据index提取出部分数据,并用collumns改变列名
d = pd.DataFrame(dt,index=["b","c","d"],columns = ["two","three"])
>>>d
two three
b 8 NaN
c 7 NaN
d 6 NaN
从列表类型的字典创建
dl = {'one':[1,2,3,4],'two':[9,8,7,6]}
d = pd.DataFrame(dl, index=["a","b","c","d"])
>>>d
one two
a 1 9
b 2 8
c 3 7
d 4 6
实例
image.png
将上述表格用dataframe类型表示出来,代码如下:
##实例
import pandas as pd
dl = {'城市': ['beijing','shanghai','guangzhou','shengzheng','shengyang'],
'环比': [101.5 , 101.2 , 101.3 , 102.0 , 100.1],
'同比': [120.7 , 127.3 , 119.4 , 140.9 , 101.4],
'定基': [121.4 , 127.8 , 120.0 , 145.5 , 101.6 ]}
d = pd.DataFrame(dl,index=["c1","c2","c3","c4","c5"])
d
>>>d
城市 环比 同比 定基
c1 beijing 101.5 120.7 121.4
c2 shanghai 101.2 127.3 127.8
c3 guangzhou 101.3 119.4 120.0
c4 shengzheng 102.0 140.9 145.5
c5 shengyang 100.1 101.4 101.6
d.index,d.columns,d.values 等函数的使用,如下
>>>d.index
Index(['c1', 'c2', 'c3', 'c4', 'c5'], dtype='object')
>>>d.columns
Index(['城市', '环比', '同比', '定基'], dtype='object')
>>>d.values
array([['beijing', 101.5, 120.7, 121.4],
['shanghai', 101.2, 127.3, 127.8],
['guangzhou', 101.3, 119.4, 120.0],
['shengzheng', 102.0, 140.9, 145.5],
['shengyang', 100.1, 101.4, 101.6]], dtype=object)
需要注意的是,d.values输出的是datdaframe的数值部分,以ndarray类型表示。
dataframe提取数据
同样也是切片操作
import pandas as pd
dl = {'城市': ['beijing','shanghai','guangzhou','shengzheng','shengyang'],
'环比': [101.5 , 101.2 , 101.3 , 102.0 , 100.1],
'同比': [120.7 , 127.3 , 119.4 , 140.9 , 101.4],
'定基': [121.4 , 127.8 , 120.0 , 145.5 , 101.6 ]}
d = pd.DataFrame(dl,index=["c1","c2","c3","c4","c5"])
d['同比']
Out[13]:
c1 120.7
c2 127.3
c3 119.4
c4 140.9
c5 101.4
Name: 同比, dtype: float64
d['同比']['c2']
Out[14]: 127.3
#最新版的panda移除了DataFrame.ix命令
d.ix["c",]
##会报错:AttributeError: 'DataFrame' object has no attribute 'ix'
#只能用整数来提取同一行的数据,可以改为
d.iloc[2,]
Out[17]:
城市 guangzhou
环比 101.3
同比 119.4
定基 120.0
Name: c3, dtype: object
总结
dataframe是一个二维带“标签”的数组