利用Python进行数据分析--Pandas(1)

pandas入门之Series和DataFrame

1、Series

Series的list特性

Series是pandas内置的一种类似一维数组的对象,数据列具有许多list的特性,如切片。同时具有与之相关的标签列index一一对应。

input:obj = Series([11, 22, 33, 44])
input:
    obj = Series([11, 22, 33, 44],index=[1,2,3,4])
    obj
output:
    1	11
    2	22
    3	33
    4	44

左边为索引index,右边为值values。在没有指定index时,默认index为从0开始自增。可以通过index和values属性获得其数组的表现形式,如obj.index。

input: 
    obj[1]
output:
    11
input:
    li = [1,2,3]
    obj[li]
output:
    1	11
    2	22
    3	33
input:
    obj[[True,True,False,True]]
output:
    1	11
    2	22
    4	44
input: 
    obj>23
output:
    1	False
    2	False
    3	True
    4	True

Series可以通过索引的方式选取Series中的单个或一组值,即可以传入索引值数组,也可以传入与Series长度相等的boolean数组。

支持NumPy数组运算,并保留索引和值之间的链接。

Series的dict特性

input: '22' in obj
output: True
input:
    di = {
        1:101,
        2:202,
        3:303
    }
    Series(di)
output:
    1	101
    2	202
    3	303

还可以将Series看成是一个定长的有序字典,同时也可以利用字典来创建Series,字典的index即对应Series的index。

##数据对齐功能
input:
    obj = Series([4,7,9,3], index=['b','d','c','a'])
    obj2 = Series([3,3,3,3], index=['a','c','d','z'])
	obj+obj2
output:
    a     6.0
	b     NaN
	c    12.0
	d    10.0
	z     NaN
	dtype: float64

在对两个Series进行操作时,只要某个index对应的值缺失一次,即结果为NaN。pandas中的isnull和notnull函数可以检测确实数据。

Series具有name和index.那么属性,在赋值后可以显示出来。

2、DataFrame

DataFrame是一个表格型的数据结构,含有一组有序的列,每列可以是不同的类型,我的理解是每一列是一个Series,DataFrame的index为所有的列共享并一一对应。

DataFrame既有行索引也有列索引,可以视为由Series组成的字典。

# 利用字典创建df
data = {
    'city':['xm','xm','fz'],
    'year':[2000,2001,2000],
    'pop':[15,16,20]
}
# 嵌套字典创建df时,外键作为列,内键作为行,可以转置改变
data2 = {
    'city':{0:'xm',1:'xm'},
    'year':{0:2000,1:2001},
    'pop': {0:15,  1:16}
}
frame = DataFrame(data)
frame
city year pop
0 xm 2000 15
1 xm 2001 16
2 fz 2000 20
# 手动为df的列指定顺序,如果原df的列不包括某个index值,则这一列都视为缺失,如下debt
frame2=DataFrame(data, columns=['year','city','pop','debt'],index=[1,2,3])
frame2
year city pop debt
1 2000 xm 15 NaN
2 2001 xm 16 NaN
3 2000 fz 20 NaN
# DataFrame的一列对应一个series
# 返回的series拥有原DF相同的索引
# 即拥有相同引用,而不是拷贝
city=frame2['city']
city
1    xm
2    xm
3    fz
Name: city, dtype: object
# 列赋值,可以传入单个值也可以传入与df长度相同的数组
frame['new'] = 100
frame
# frame['new'] = [100, 200, 300]  按顺序进行赋值
city year pop new
0 xm 2000 15 100
1 xm 2001 16 100
2 fz 2000 20 100

ps:
python中del关键字,python具有垃圾回收机制,因此del删除的是引用,而不是内存地址。

posted @ 2019-08-07 17:23  Cyndaquil  阅读(139)  评论(0编辑  收藏  举报