Pandas初体验之数据结构——Series和DataFrame

zhangxiaojiakele 2020-02-23

  Pandas是为了解决数据分析任务而创建的,纳入了大量的库和标准数据模型,提供了高效地操作大型数据集所需的工具。

  对于Pandas包,在Python中常见的导入方法如下:

from pandas import Series,DataFrame
import pandas as pd

首先,我们需要对于SeriesDataFrame有个基本的了解:

Series:一维数组,类似于Python中的基本数据结构list,区别是Series只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率。就像数据库中的列数据。

  <span>DataFrame</span>: 二维的表格型数据结构。很多功能与R<span>语言</span>中的data.frame类似。可以将DataFrame理解为Series的容器。

接下来我们通过实例分别了解SeriesDataFrame。

  1、Series

  PandasSeries对象是一个带索引数据构成的一维数组。可以用一个数组创建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_aSeries数组,当中值为[1,2,5,7],对应的索引为[‘nu‘, ‘li‘, ‘xue‘, ‘xi‘]

  • 创建一个名为dict_a的字典,字典中包含如下内容{‘ting‘:1, ‘shuo‘:2, ‘du‘:32, ‘xie‘:44}

  • dict_a字典转化成名为series_bSeries数组。

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

实例:

  • 创建一个五行三列的名为df1DataFrame数组,列名为 [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的同学来说,SeriesDataFrame其实也不是很难,但是它们确是基础中的基础,是我们以后学习中常用的东西,所以我们必须把它们掌握好,才能更好的学习这门课。

相关推荐