03-python-pandas-data-structures

3. Pandas之:深入理解Pandas的数据结构

简介

本文将会讲解Pandas中基本的数据类型Series和DataFrame,并详细讲解这两种类型的创建,索引等基本行为。

使用Pandas需要引用下面的lib:

In [1]: import numpy as np

In [2]: import pandas as pd

Series

Series是一维带label和index的数组。我们使用下面的方法来创建一个Series:

>>> s = pd.Series(data, index=index)

这里的data可以是Python的字典,np的ndarray,或者一个标量。

index是一个横轴label的list。接下来我们分别来看下怎么创建Series。

ndarray创建

s = pd.Series(np.random.randn(5), index=['a', 'b', 'c', 'd', 'e'])

s
Out[67]: 
a   -1.300797
b   -2.044172
c   -1.170739
d   -0.445290
e    1.208784
dtype: float64

使用index获取index:

从dict创建

从标量创建

Series 和 ndarray

Series和ndarray是很类似的,在Series中使用index数值表现的就像ndarray:

Series和dict

如果使用label来访问Series,那么它的表现就和dict很像:

矢量化操作和标签对齐

Series可以使用更加简单的矢量化操作:

Name属性

Series还有一个name属性,我们可以在创建的时候进行设置:

s还有一个rename方法,可以重命名s:

DataFrame

DataFrame是一个二维的带label的数据结构,它是由Series组成的,你可以把DataFrame看成是一个excel表格。DataFrame可以由下面几种数据来创建:

  • 一维的ndarrays, lists, dicts, 或者 Series

  • 结构化数组创建

  • 2维的numpy.ndarray

  • 其他的DataFrame

从Series创建

可以从Series构成的字典中来创建DataFrame:

进行index重排:

进行列重排:

从ndarrays 和 lists创建

从结构化数组创建

可以从结构化数组中创建DF:

从字典list创建

从元组中创建

可以从元组中创建更加复杂的DF:

列选择,添加和删除

可以像操作Series一样操作DF:

可以删除特定的列,或者pop操作:

如果插入常量,那么会填满整个列:

默认会插入到DF中最后一列,可以使用insert来指定插入到特定的列:

使用assign 可以从现有的列中衍生出新的列:

注意, assign 会创建一个新的DF,原DF保持不变。

下面用一张表来表示DF中的index和选择:

操作
语法
返回结果

选择列

df[col]

Series

通过label选择行

df.loc[label]

Series

通过数组选择行

df.iloc[loc]

Series

行的切片

df[5:10]

DataFrame

使用boolean向量选择行

df[bool_vec]

DataFrame

本文已收录于 www.flydean.com

最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!

欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!

最后更新于

这有帮助吗?