'''
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
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]
函数备忘: