您的位置:首页 > 理论基础 > 数据结构算法

Chapter5-1: pandas 数据结构介绍

2016-12-20 21:44 260 查看
'''
Chapter5-1: pandas 数据结构介绍

索引:

一、 Series(序列数据)

1.生成Series:pd.Series(value,index),index 默认0123...

2.Series({'a':1})#传入字典数据生成序列     #定长的字典

3.isnull() notnull() 检测缺失值

4.数据对齐功能:对应index会对齐进行操作,只在一边的生成NAN

5.Series的索引可以通过赋值就地修改

二、DataFrame (表数据)

1.创建DataFrame: DataFrame(data) 其中data是字典数据,每个键的值是一个列表

2.frame.column==frame['column']#得到一个Series

3.可以按照编号输出某行frame.ix[行号]

4.通过赋值方式可以传入新的属性frame['newcolumn'],但是frame.newcolumn不可

5.frame['column'] = sdata 如果sdata是个序列数据,则根据sdata的index精确匹配插入,没有value的补NAN

6.del函数可以删除列  del frame['column']

7.嵌套字典{'a':{...},'b':{...}}

三、索引对象

1.index对象负责管理index和columns

2.index 对象不可修改,可以删除和增加,但是只是index对象的内容变了,数据本身没有变化

四.函数备忘

create at 2016-12-20

@author: Bigboy
'''

实践内容:

#-*- coding:utf-8 -*-
from pandas import Series,DataFrame

#1-------------------------------------------
#Series
obj = Series([3,4,5,6])
print obj
print obj.index
print obj.values
obj1 = Series([3,4,5,6],index=['a','b','c','d'])
print obj1
print obj1['d']
print obj1[['c','d']]#注意[]内是个数组
print obj1[obj1>3]
print obj1*2
print 'd' in obj1 #定长的字典

'''
out:
0 3
1 4
2 5
3 6
dtype: int64

RangeIndex(start=0, stop=4, step=1)
[3 4 5 6]

a 3
b 4
c 5
d 6
dtype: int64

6

c 5
d 6
dtype: int64

b 4
c 5
d 6
dtype: int64

a 6
b 8
c 10
d 12
dtype: int64

True
'''
#2-3-------------------------------------------------------------------------------
#Series可以看做是定长的字典

sdata = {'a':1,'b':2,'c':3}
obj2 = Series(sdata)#传入字典,得到字典全部的值
print obj2
sindex = ['a','b','d']
obj3 = Series(sdata,sindex)#传入sindex中含有sdata中不存在,也能存到obj,但是对应的value是NAN
print obj3
print obj3.isnull()
'''
out:
a 1
b 2
c 3
dtype: int64

a 1.0
b 2.0
d NaN
dtype: float64
a False
b False
d True
dtype: bool
'''
#5-------------------------------------------------------------------------------------
obj2.index = ['TOM','BOB','EVE']
print obj2
'''
out:
TOM 1
BOB 2
EVE 3
dtype: int64
'''

###================================================================================================================###
#DataFrame
#1-2---------------------------------------------------------------------
data = {'age':[1,2,3,4,5],
'year':[2005,2006,2004,2008,2018],
'name':['Bob','Tom','Tim','Cok','SN']
}
frame = DataFrame(data)#自动加上序号
print frame
print DataFrame(data,columns=['name'])#可以输入列属性按顺心排列
print DataFrame(data,columns=['name'],index=[1,2,3,4,5])#还可以加入index参数
print DataFrame(data,columns=['name','d'])#输入没有的属性得到一列NAN
print frame.year#直接调用属性
print frame['year']#按照属性值查找,返回的是一个Series
'''
out:
age name year
0 1 Bob 2005
1 2 Tom 2006
2 3 Tim 2004
3 4 Cok 2008
4 5 SN 2018

name
0 Bob
1 Tom
2 Tim
3 Cok
4 SN

name
1 Bob
2 Tom
3 Tim
4 Cok
5 SN

name d
0 Bob NaN
1 Tom NaN
2 Tim NaN
3 Cok NaN
4 SN NaN

0 2005
1 2006
2 2004
3 2008
4 2018
Name: year, dtype: int64
0 2005
1 2006
2 2004
3 2008
4 2018
Name: year, dtype: int64
'''
#3-4------------------------------------------------------------------------------
print frame.ix[2]
frame['date'] = '1220'
print frame
'''
out:
age 3
name Tim
year 2004
Name: 2, dtype: object
age name year date
0 1 Bob 2005 1220
1 2 Tom 2006 1220
2 3 Tim 2004 1220
3 4 Cok 2008 1220
4 5 SN 2018 1220
'''
#6------------------------------------------------------------------------------
del frame['date']
print frame
'''
out:
age name year
0 1 Bob 2005
1 2 Tom 2006
2 3 Tim 2004
3 4 Cok 2008
4 5 SN 2018
'''
print frame.ix[1]['name']#name列的第1个值
print frame['age'][1]
print frame.T#转置自身不变
print frame

'''
out:
Tom

2

0 1 2 3 4
age 1 2 3 4 5
name Bob Tom Tim Cok SN
year 2005 2006 2004 2008 2018

age name year
0 1 Bob 2005
1 2 Tom 2006
2 3 Tim 2004
3 4 Cok 2008
4 5 SN 2018
'''
#nndarray构造frame
import numpy as np
data = np.arange(16).reshape(4,4)
frame2 = DataFrame(data)
print frame2

#12-----------------------------------------------------------------------
index = frame2.index
index =index.delete(1)
print index
print frame2

for i in index:
print frame2.ix[i]


函数备忘:





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息