Pandas 基础 (1)—— Series

1. Pandas 介绍

Pandas 的名称来自于面板数据(panel data)和 Python 数据分析(data analysis)。panel data是经济学中关于多维数据集的一个术语,在 Pandas 中也提供了 panel 的数据类型。

pandas 的数据结构分类:

  • Series:一维数组,与 Numpy 中的一维 array 类似。二者与 Python 基本的数据结构 List 也很相近,其区别是:List 中的元素可以是不同的数据类型,而 Array 和 Series 中则只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率。
  • Time- Series:以时间为索引的 Series。
  • DataFrame:二维的表格型数据结构。很多功能与 R 中的 data.frame 类似。可以将DataFrame 理解为 Series 的容器。以下的内容主要以 DataFrame 为主。
  • Panel :三维的数组,可以理解为 DataFrame 的容器。

使用下面这样的 pandas 引入约定:

from pandas import  Series, DataFrame

import pandas as pd

2. Series 对象

Series 是一种类似于一维数组的对象,它由一组数据(各种 NumPy 数据类型)以及一组与之相关的数据标签(即索引)组成。

In [114]: obj = Series([4,7,-5,3])

In [115]: obj
Out[115]: 
0    4
1    7
2   -5
3    3
dtype: int64
# 通过 Series 的 values 和 index 属性获取其数组表示形式和索引对象
In [116]: obj.values
Out[116]: array([ 4,  7, -5,  3], dtype=int64)

In [117]: obj.index
Out[117]: RangeIndex(start=0, stop=4, step=1)
# 使用 index 参数人为地设置索引符号
In [118]: obj2 = Series([4,7,-5,3],index=['a','b','c','d'])

In [119]: obj2
Out[119]: 
a    4
b    7
c   -5
d    3
dtype: int64
  
In [120]: obj2.index
Out[120]: Index([u'a', u'b', u'c', u'd'], dtype='object')

可以通过索引的方式获取 Series 中的单个或一组值

In [121]: obj2['a']
Out[121]: 4

In [122]: obj2['c'] = 100

In [123]: obj2[['b','c','d']]
Out[123]: 
b      7
c    100
d      3
dtype: int64

数组运算(数组过滤、标量相乘、应用数学函数等)

In [125]: obj2[obj2 > 10]
Out[125]: 
c    100
dtype: int64

In [126]: obj2 * 2
Out[126]: 
a      8
b     14
c    200
d      6
dtype: int64

In [127]: np.exp(obj2)
Out[127]: 
a    5.459815e+01
b    1.096633e+03
c    2.688117e+43
d    2.008554e+01
dtype: float64

可以将 Series 看成是一个定长的有序字典,从而判断索引键是否在数组中

In [128]: 'b' in obj2
Out[128]: True

In [129]: 'f' in obj2
Out[129]: False

通过字典来创建 Series

In [130]: d = {'a':100, 'b':200, 'c':300}

In [131]: obj3 = Series(d)

In [132]: obj3
Out[132]: 
a    100
b    200
c    300
dtype: int64

In [133]: keys = ['a','b','c','d']

In [134]: obj4 = Series(d,index=keys)

In [135]: obj4
Out[135]: 
a    100.0
b    200.0
c    300.0
d      NaN
dtype: float64

由于 ‘d’ 所对应的值找不到,所以结果就会出现 NaN (not a number),在 pandas 中用于表示缺失或 NA 值

pandas 的 isnull 和 notnull 函数可用于检测缺失数据

In [138]: pd.isnull(obj4)
Out[138]: 
a    False
b    False
c    False
d     True
dtype: bool

In [139]: pd.notnull(obj4)
Out[139]: 
a     True
b     True
c     True
d    False
dtype: bool
# Series 也有类似的实例方法
In [140]: obj4.isnull()
Out[140]: 
a    False
b    False
c    False
d     True
dtype: bool

Series 一个重要的功能:在算术运算中会自动对齐不同索引的数据

In [141]: obj3
Out[141]: 
a    100
b    200
c    300
dtype: int64

In [142]: obj4
Out[142]: 
a    100.0
b    200.0
c    300.0
d      NaN
dtype: float64

In [143]: obj3 + obj4
Out[143]: 
a    200.0
b    400.0
c    600.0
d      NaN
dtype: float64

Series 对象本身及其索引都有一个 name 属性,可以随意设置属性值

In [144]: obj4.name = "This is obj4"

In [145]: obj4.index.name = "obj4-index"

In [146]: obj4
Out[146]: 
obj4-index
a    100.0
b    200.0
c    300.0
d      NaN
Name: This is obj4, dtype: float64

Series 的索引可以通过赋值的方式就地修改

In [147]: obj4.index = ['I', 'love', 'you', 'too']

In [148]: obj4
Out[148]: 
I       100.0
love    200.0
you     300.0
too       NaN
Name: This is obj4, dtype: float64
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wohu007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值