Pandas数据处理之Pandas的DataFrame对象

《Python数据科学手册》读书笔记

3.2.2 Pandas的DataFrame对象

Pandas的另一个基础数据结构是DataFrame。和之前介绍的Series一样,DataFrame既可以作为一个通用型Numpy数组,也可以看做特殊的Python字典。

1.DataFrame是通用的Numpy数组

  如果将Series 类比为带灵活索引的一维数组,那么DataFrame 就可以看作是一种既有灵活的行索引,又有灵活列索引的二维数组。就像你可以把二维数组看成是有序排列的一维数组一样,你也可以把DataFrame 看成是有序排列的若干Series 对象。这里的“排列”指的是它们拥有共同的索引。

In [1] : improt numpy as np
		 import pandas as pd
In [2] : population_dict = {'California': 38332521,
							'Texas': 26448193,
							'New York': 19651127,
							'Florida': 19552860,
							'Illinois': 12882135}
		 population = pd.Series(population_dict)

		 area_dict = {'California': 423967,
		 			  'Texas': 695662,
		  			  'New York': 141297,
					  'Florida': 170312,
					  'Illinois': 149995}
		 area = pd.Series(area_dict)
		 
In [3] : area
Out[3] :California    423967
		Texas         695662
		New York      141297
		Florida       170312
		Illinois      149995
		dtype: int64
In [4] : polulation
Out[4] :California    38332521
		Texas         26448193
		New York      19651127
		Florida       19552860
		Illinois      12882135
		dtype: int64
# 用一个字典创建一个包含以上信息的二维对象
In [5] :states = pd.DataFrame({'population':polulation,'area':area})
In [6] :states
Out[6] :
			population	 area
California	38332521	423967
Texas		26448193	695662
New York	19651127	141297
Florida		19552860	170312
Illinois	12882135	149995

In [7] :states.index	# index属性 获取行索引标签
Out[7] :Index(['California', 'Texas', 'New York', 'Florida', 'Illinois'], dtype='object')
In [8] :states.columns	# columns属性 获取列索引标签
Out[8] :Index(['population', 'area'], dtype='object')

  因此,DataFrame 可以看作一种通用的NumPy 二维数组,它的行与列都可以通过索引获取。

2. DataFrame是特殊的字典

与Series 类似,我们也可以把DataFrame 看成一种特殊的字典。字典是一个键映射一个值,而DataFrame 是一列映射一个Series 的数据。例如,通过’area’ 的列属性可以返回
包含面积数据的Series 对象:

In [9] :states['area']	# 面积数据
Out[9] :California 423967
		Florida 170312
		Illinois 149995
		New York 141297
		Texas 695662
		Name: area, dtype: int64

3.创建DataFrame对象

①.通过单个Series对象创建

给一个Series对象作为data,给定列名columns

In [10] :pd.DataFrame(population, columns=['population'])
Out[10] :
			population
California	38332521
Texas		26448193
New York	19651127
Florida		19552860
Illinois	12882135
②.通过字典列表创建。

任何元素是字典的列表都可以变成DataFrame。(本质是列表)用一个简单的列表综合来创建一些数据:

In [11] :data = [{'a': i, 'b': 2 * i} for i in range(2,5)]
In [12] :data
Out[12] :[{'a': 2, 'b': 4}, {'a': 3, 'b': 6}, {'a': 4, 'b': 8}]
In [13] :pd.DataFrame(data)
Out[13] :
	a	b
0	2	4
1	3	6
2	4	8

即使字典中有些键不存在,Pandas 也会用缺失值NaN(不是数字,not a number)来表示:

In [14] :pd.DataFrame([{'a': 1, 'b': 2}, {'b': 3, 'c': 4}])
Out[14] :
	a	 b	 c
0	1.0	 2	NaN
1	NaN	 3	4.0
③.通过Series 对象字典创建

用一个字典创建,字典的value值为Series对象。(本质是字典)

In [15] :pd.DataFrame({'population':polulation,'area':area})
Out[15] :
			population	 area
California	38332521	423967
Texas		26448193	695662
New York	19651127	141297
Florida		19552860	170312
Illinois	12882135	149995
④.通过NumPy 二维数组创建

假如有一个二维数组,就可以创建一个可以指定行列索引值的DataFrame。如果不指定行列索引值,那么行列默认都是整数索引值:(,本质是给一个多维Series对象,给定行索引index,给定列索引columus,默认为None)

In [16] :pd.DataFrame(np.random.rand(3, 2),columns=['foo', 'bar'],index=['a', 'b', 'c'])
Out[16] :
	  foo		  bar
a	0.754991	0.898389
b	0.324190	0.100392
c	0.611049	0.332776
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值