Chapter5-1: pandas 数据结构介绍

'''
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]



函数备忘:





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值