pandas模块介绍(2)

接上个文章的介绍,这次介绍下DataFrame。

DataFrame
     
DataFrame 是⼀个表格型的数据结构,它含有⼀组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame既有⾏索引也有列索引,它可以被看做由 Series 组成的字典(共⽤同⼀个索引)。DataFrame 中的数据是以⼀个或多个⼆维块存放的(⽽不是列表、字典或别的⼀维数据结构)。

DataFrame 的办法有很多,最常⽤的⼀种是直接传⼊⼀个由等⻓列表或NumPy数组组成的字典。对于特别大的DataFrame,head方法会选取前五行 如果指定了列序列,则 DataFrame 的列就会按照指定顺序进⾏排列, 如果传⼊的列在数据中找不到,就会在结果中产⽣缺失值用NAN补充
data={'state':['Ohio','Ohio',	'Ohio',	'Nevada',	'Nevada',	'Nevada'],
	  'year':[2000,	2001,	2002,	2001,	2002,	2003],
	  'pop':[1.5,	1.7,	3.6,	2.4,	2.9,	3.2]}
frame=pd.DataFrame(data)
In	[45]:	frame
Out[45]:	
		pop		state		year
0	    1.5		Ohio		2000
1		1.7		Ohio		2001
2		3.6		Ohio		2002
3		2.4		Nevada		2001
4		2.9		Nevada		2002
5		3.2		Nevada		2003
#head方法

In	[46]:	frame.head()
Out[46]:	
		pop		state		year
0		1.5		Ohio		2000
1		1.7		Ohio		2001
2		3.6		Ohio		2002
3		2.4		Nevada		2001
4		2.9		Nevada		2002

#指定顺序
In	[47]:	pd.DataFrame(data,	columns=['year',	'state',	'pop'])
Out[47]:	
		year		state		pop
0		2000		Ohio		1.5
1		2001		Ohio		1.7
2		2002		Ohio		3.6
3		2001		Nevada		2.4
4		2002		Nevada		2.9
5		2003		Nevada		3.2
通过类似字典标记的⽅式或属性的⽅式,可以将 DataFrame的列获取为⼀个Series, 返回的 Series 拥有原 DataFrame 相同的索引,且其 name属性也已经被相应地设置好了
In	[51]:	frame2['state']
Out[51]:	
one						Ohio
two						Ohio
three					Ohio
four					Nevada
five					Nevada
six						Nevada
Name:	state,	dtype:	object
In	[52]:	frame2.year
Out[52]:	
one						2000
two						2001
three				    2002
four					2001
five					2002
six						2003
Name:	year,	dtype:	int64
另⼀种常⻅的数据形式是嵌套字典, 内层字典的键会被合并、排序以形成最终的索引。如果明确指定 了索引,则不会这样
In	[65]:	pop	=	{'Nevada':	{2001:	2.4,	2002:	2.9},
								'Ohio':	{2000:	1.5,	2001:	1.7,	2002:3.6}}
In	[66]:	frame3	=	pd.DataFrame(pop)
In	[67]:	frame3
Out[67]:	
						Nevada		Ohio
2000					NaN			1.5
2001					2.4			1.7
2002					2.9			3.6

下表列出DataFrame所接受的各种数据:

类型说明
二维ndarray数据矩阵,还可以传入行标和列标
由数组、列表或元组组成的字典每个序列会变成DataFrame的一列。所有序列的长度
NumPy的结构化/记录数组类似于“由数组组成的字典”
由Series组成的字典每个Series会成为—列。如果没有显式指定索引,则各Series的索引会被合并成结果的行索引
由字典组成的字典各内层字典会成为一列。键会被合并成结果的行索引,跟“由Series组成的字典”的情况一样
字典或Series的列表各项将会成为DataFrame的一行。字典键或Series索引的并集将会成为DataFrame的列标
由列表或元组组成的列表类似于“二维ndarray"
另一个DataFrame该DataFra me的索引将会被沿用,除非显式指定了其他索引
NumPy的MaskedArray类似于“二维ndarray”的情况,只是掩码值在结果DataFrame会变成NA/缺失值
如果设置了 DataFrame index columns name属性,则这些信息也会被显示出来; Series ⼀样, values 属性也会以⼆维 ndarray的形式返回DataFrame中的数据; 如果 DataFrame 各列的数据类型不同,则值数组的 dtype 就会选 ⽤能兼容所有列的数据类型:
In	[72]:	frame3.index.name	=	'year';	frame3.columns.name	=	'state'
In	[73]:	frame3
Out[73]:	
state		Nevada		Ohio
year
2000		NaN			1.5
2001		2.4			1.7
2002		2.9			3.6


In	[74]:	frame3.values
Out[74]:	
array([[	nan,		1.5],
	   [	2.4,		1.7],
	   [	2.9,		3.6]])


In	[75]:	frame2.values
Out[75]:
array([[2000,	'Ohio',	1.5,	nan],
	   [2001,	'Ohio',	1.7,	-1.2],
	   [2002,	'Ohio',	3.6,	nan],
	   [2001,	'Nevada',	2.4,	-1.5],
	   [2002,	'Nevada',	2.9,	-1.7],
	   [2003,	'Nevada',	3.2,	nan]],	
       dtype=object)


 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值