Pandas学习
(一).前言:
Pandas是建立在Numpy数据结构上的,尤其时它的Series 和Dataframe对象,为数据科学家们处理那些消耗大量时间的"数据清理"任务提供了捷径.
下面我将重点介绍Series ,Dataframe和其他数据结构的高效使用方法.
(二).Pandas的安装:
在安装Pandas之前首相要确保你已经安装了Numpy,详细的安装方法,请参考Pandas官方文档(http://pandas.pydata.org/).
(三).Pandas对象简介:
三个基本数据结构:Series,DataFrame,和Index.
1.Pandas的Series对象
1.1 Series是通用的Numpy数组
Series对象和一维Numpy数组基本可以等价交换,本质差异就是索引:
Numpy通过隐式定义的整数索引获取数值,而Series使用一种显式定义的索引与数值关联,意思就是索引不单单可以是整数,还可以是任意想要的类型,例如:字符串,浮点数等等.
data = pd.Series([0.25,0.5,0.75,1.0],index=['a','b','c','d'])
print(data)
输出结果:
a 0.25
b 0.50
c 0.75
d 1.00
dtype: float64
也可以使用不连续或者不按顺序的索引:
data = pd.Series([0.25,0.5,0.75,1.0],index=[2,5,3,7])
print(data)
输出结果:
2 0.25
5 0.50
3 0.75
7 1.00
dtype: float64
进程已结束,退出代码为 0
1.2. Series是特殊的字典
Series其实是一种将类型键映射到类型值的数据结构.
我们可以直接使用字典创建一个Series对象:
area_dict={'California':423967,'Texas':605662,'New York':141297,'Florida':170312,'Illinois':149995}
area=pd.Series(area_dict)
print(area)
输出结果:
California 423967
Texas 605662
New York 141297
Florida 170312
Illinois 149995
dtype: int64
用字典创建Series时,典型的字典数值获取方式仍然有效
print(population['California'])
1.3. 创建Series对象
上述几种创建方式都是这样的形式
其中index是一个可选参数,data参数支持多种数据类型.
例如:data可以是一个Numpy数组
pd.Series([2,4,6])
输出结果:
0 2
1 4
2 6
dtype: int64
data也可以是一个标量,创建时会重复填充到每一个索引上:
pd.Series(5,index=[100,200,300])
输出结果:
100 5
200 5
300 5
dtype: int64
data还可以是一个字典,index默认是排序的字典键:
pd.Series({2:'a',1:'b',3:'c'})
输出结果:
2 a
1 b
3 c
dtype: object
每一种形式都可以通过显式指定索引:
pd.Series({2:'a',1:'b',3:'c'},index=[3,2])
输出结果:
3 c
2 a
dtype: object
需要注意的是,Series只会保留显式定义的键值对.
2. Pandas的DataFrame对象
Pandas的另一个基础数据结构就是Dataframe.也可以作为Numpy的一个通用类型数组,也可以看作特殊的字典.
2.1.DataFrame是通用的Numpy数组
前面我们了解到了,Series是有灵活的行索引的一维数组,那么DaraFrame就可以看做,是一种既具有灵活的行索引,还具有灵活的列名的二维数组.
population_dict={'California':38332521,'Texas':26448193,'New York':19651127,'Florida':19552860,'Illinois':12882135}
population=pd.Series(population_dict)
area_dict={'California':423967,'Texas':605662,'New York':141297,'Florida':170312,'Illinois':149995}
area=pd.Series(area_dict)
states=pd.DataFrame({'population':population,'area':area})
print(states)
输出结果:
population area
California 38332521 423967
Texas 26448193 605662
New York 19651127 141297
Florida 19552860 170312
Illinois 12882135 149995
进程已结束,退出代码为 0
可以看到DataFrame类似于二维数组,具有列名的对象
和Series一样,DataFrame也有index属性可以获取索引标签:
print(states.index)
输出结果:
Index(['California', 'Texas', 'New York', 'Florida', 'Illinois'], dtype='object')
另外,DataFrame还有一个columns属性,是存放列标签的index对象:
print(states.columns)
输出结果:
Index(['population', 'area'], dtype='object')
2.2. DataFrame是特殊的字典
DataFrame是一种一列映射一个Series值的数据.例如:通过area可以返回包含列属性的Series对象:
print(states['area'])
输出结果:
California 423967
Texas 605662
New York 141297
Florida 170312
Illinois 149995
Name: area, dtype: int64
进程已结束,退出代码为 0
注意:在Numpy二维数组里面,data[0]是返回第一行,而DataFrame中data[‘col0’]是返回第一列
2.3.创建DataFrame对象
2.3.1通过单个Series创建.
在这里插入代码片