Pandas初体验之数据结构——Series和DataFrame
Pandas
是为了解决数据分析任务而创建的,纳入了大量的库和标准数据模型,提供了高效地操作大型数据集所需的工具。
对于Pandas
包,在Python
中常见的导入方法如下:
from pandas import Series,DataFrame import pandas as pd
首先,我们需要对于Series和DataFrame有个基本的了解:
Series:一维数组,类似于Python
中的基本数据结构list
,区别是Series
只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率。就像数据库中的列数据。
DataFrame
: 二维的表格型数据结构。很多功能与R语言
中的data.frame
类似。可以将DataFrame
理解为Series
的容器。
接下来我们通过实例分别了解Series和DataFrame。
1、Series
Pandas的Series对象是一个带索引数据构成的一维数组。可以用一个数组创建Series对象,如下所示:
In [1] : data = pd.Series([1,2,3,4]) In [2] : data Out[2] :0 1 1 2 2 3 3 4
Series对象将一组数据和一组索引绑定在一起,我们可以通过values属性和index属性获取数据。values属性返回的结果与Numpy数组类似。index属性返回的是一个类型为pd.index的类数组对象。和Numpy数组一样,数据可以通过Python的中括号索引标签来获取:
In [3]: data.values Out[3]:array([1,2,3,4]) In [4]: data.index Out[4]:Int64Index([0,1,2,3]) In [5]:data2=Series([4,7,-5,3],index=['d','b','a','c']) In [6]:data2 Out[6]: d 1 b 2 a 3 c 4
如果你有一些数据在一个Python
字典中,你可以通过传递字典来从这些数据创建一个Series
,只传递一个字典的时候,结果Series
中的索引将是排序后的字典的键。
In [7]:sdata={'Ohio':35000,'Texas':71000,'Oregon':16000,'Utah':5000} In [8]:obj3=Series(sdata) In [9]:obj3 Out[9]: Ohio 35000 Texas 71000 Oregon 16000 Utah 5000
实例:
-
创建一个名为
series_a
的series
数组,当中值为[1,2,5,7]
,对应的索引为['nu', 'li', 'xue', 'xi']
; -
创建一个名为
dict_a
的字典,字典中包含如下内容{'ting':1, 'shuo':2, 'du':32, 'xie':44}
; -
将
dict_a
字典转化成名为series_b
的series
数组。
from pandas import Series,DataFrame import pandas as pd def create_series(): ''' 返回值: series_a: 一个Series类型数据 series_b: 一个Series类型数据 dict_a: 一个字典类型数据 ''' a=[1,2,5,7] index=['nu','li','xue','xi'] series_a=Series(a,index) dict_a={'ting':1,'shuo':2,'du':32,'xie':44} series_b=Series(dict_a) return series_a,dict_a,series_b
2、DataFrame
DataFrame
是一个表格型的数据结构,是以一个或多个二维块存放的数据表格(层次化索引),DataFrame
既有行索引还有列索引,它有一组有序的列,每列既可以是不同类型(数值、字符串、布尔型)的数据,或者可以看做由Series
组成的字典。
创建:
dictionary = {'state':['0hio','0hio','0hio','Nevada','Nevada'], 'year':[2000,2001,2002,2001,2002], 'pop':[1.5,1.7,3.6,2.4,2.9]} frame = DataFrame(dictionary)
修改行名:
frame=DataFrame(dictionary,index=['one','two','three','four','five'])
添加修改:
frame['add']=[0,0,0,0,0]
添加Series类型:
value = Series([1,3,1,4,6,8],index = [0,1,2,3,4,5]) frame['add1'] = value
实例:
-
创建一个五行三列的名为
df1
的DataFrame
数组,列名为[states,years,pops]
,行名['one','two','three','four','five']
; -
给
df1
添加新列,列名为new_add
,值为[7,4,5,8,2]
。
from pandas import Series,DataFrame import pandas as pd def create_dataframe(): ''' 返回值: df1: 一个DataFrame类型数据 ''' df1=DataFrame(index=['one','two','three','four','five'],columns=['states','years','pops']) df1['new_add']=[7,4,5,8,2] return df1
对于刚接触Pandas的同学来说,Series和DataFrame其实也不是很难,但是它们确是基础中的基础,是我们以后学习中常用的东西,所以我们必须把它们掌握好,才能更好的学习这门课。