pandas-dataframe

本文介绍如何使用 Python 的 Pandas 库构建 DataFrame 对象,并演示了多种构造 DataFrame 的方式,包括从字典、NumPy 数组、嵌套字典及 Series 对象创建 DataFrame。同时展示了 DataFrame 的基本操作,如按列名或属性检索数据、通过位置或名称检索行、修改列值等。
'''
DataFrame是Pandas中的一个表结构的数据结构,
包括三部分信息,表头(列的名称),表的内容(二维矩阵),索引(每行一个唯一的标记)
底层数据类型是二维数组来存储的。
'''

#用一个相等长度列表的 字典 或 NumPy数组 来构建一个DataFrame
#同Series一样,它的索引会自动分配,并以首字母排序排列(一个Series的字典):
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],
        'year': [2000, 2001, 2002, 2001, 2002],
        'pop': [1.5, 3.6,1.7, 2.4, 2.9]}
frame = pd.DataFrame(data)
print frame

#设定一个列的顺序,自定义列的索引,DataFrame的列将会精确的按照你所传递的顺序排列
#和Series一样,如果你传递了一个行,但不包括在 data 中,在结果中它会表示为NA值::
frame2=pd.DataFrame(data,columns=['year','pop','state','null'],index=['11','12','13','14','15'])
print frame2
'''
      year state   pop null
11    2000 Ohio    1.5  NaN
12    2001 Ohio    1.7  NaN
13    2002 Ohio    3.6  NaN
14    2001 Nevada  2.4  NaN
15    2002 Nevada  2.9  NaN
'''


#DataFrame中的一列可以通过 字典记法 或 属性 来检索:
print frame2['null']
print frame2.state

#行操作:使用一些方法通过位置或名字来检索,例如 ix 索引成员(field)
print frame2.ix['13']

#列操作:可以通过赋值来修改
#例如,空的 ‘null’ 列可以通过一个纯量来赋值:
frame2.null=16.5
print frame2

#通过列表或数组给一列赋值时,如果你使用Series来赋值,它会代替在DataFrame中精确匹配的索引的值,并在说有的空洞插入丢失数据
#给一个不存在的列赋值,将会创建一个新的列。 像字典一样 del 关键字将会删除列:
frame2['eastern']=frame2.state == 'Ohio'
print frame2
'''
     year  state pop   debt eastern
11   2000   Ohio 1.5    NaN    True
12   2001   Ohio 1.7   -1.2    True
13   2002   Ohio 3.6    NaN    True
14   2001 Nevada 2.4   -1.5   False
15   2002 Nevada 2.9   -1.7   False
'''

#另一种通用的数据形式是一个嵌套的字典的字典格式创建Dataframe
#如果被传递到DataFrame,它的外部键会被解释为 列索引,内部键会被解释为 行索引:
pop={'Ne1':{'one':2.3,'three':3.2},
     'Ne2':{'one':2.3,'two':1.5,'three':3.2},
     'Ne3':{'one':2.3,'two':9.2,'three':3.2}}
frame3=pd.DataFrame(pop,index=['one','two','three'])
print frame3

'''
      Ne1  Ne2  Ne3
one   2.3  2.3  2.3
two   3.2  3.2  3.2
three NaN  1.5  9.2
'''

#对dataframe转置:
print frame3.T
#Series字典格式创建Dataframe:
pdata = {'Nee1': frame3['Ne1'][:-1],   #[:-1]去除最后一个值,+从左到右,-从右到左
        'Nee2': frame3['Ne2'][:2]}
frame4=pd.DataFrame(pdata)
print frame4

'''
可能的传递到DataFrame的构造器!!
二维ndarray一个数据矩阵,有可选的行标和列标
数组,列表或元组的字典每一个序列成为DataFrame中的一列。所有的序列必须有相同的长度。
NumPy的结构/记录数组和“数组字典”一样处理
Series的字典每一个值成为一列。如果没有明显的传递索引,将结合每一个Series的索引来形成结果的行索引。
字典的字典每一个内部的字典成为一列。和“Series的字典”一样,结合键值来形成行索引。
字典或Series的列表每一项成为DataFrame中的一列。结合字典键或Series索引形成DataFrame的列标。
列表或元组的列表和“二维ndarray”一样处理
另一个DataFrameDataFrame的索引将被使用,除非传递另外一个
NumPy伪装数组(MaskedArray)除了蒙蔽值在DataFrame中成为NA/丢失数据之外,其它的和“二维ndarray”一样
'''

#如果一个DataFrame的 index 和 columns 有它们的 name ,也会被显示出来:
frame4.index.name = 'year'; frame4.columns.name = 'state'
print frame4

#DataFrame的  values 属性  返回一个包含在DataFrame中的数据的  二维ndarray:
print frame4.values
'''
[[ 2.3, 2.3],
 [ nan, 1.5]]
'''
print frame2.values

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值