Python数据处理库pandas中的Series数据结构简介

简介

pandas 是python处理数据的很重要的一个库, pandas名字来源于panel data, 一个计量经济学中多维结构化数据库的概念(不是大熊猫的意思T—T)。所以 pandas 的重点就在于 结构化数据。 他与numpy (处理数组数据)的区别就是 每个数据多了个标签(index), 专门处理表格数据。pandas有两大数据结构 SeriesDataFrame。 本文主要是关于Series的基本用法。。

In [1]: import pandas as pd

Series:一维数组数据, 每个数据单元有个标签index

In [2]: from pandas import Series

In [3]: obj = pd.Series([3, 2, -4, 9, 3])

In [4]: obj
Out[4]: 
0    3
1    2
2   -4
3    9
4    3
dtype: int64

左边显示index,右边显示数组。

可以通过.array和.index   获取numpy数组和index标签。

In [5]: obj.array
Out[5]: 
<PandasArray>
[3, 2, -4, 9, 3]
Length: 5, dtype: int64

In [6]: obj.index
Out[6]: RangeIndex(start=0, stop=5, step=1)

也可以创建自定义标签的序列:

In [7]: obj2 = pd.Series([3, 2, -4, 9, 3], index=['a', 'b', 'e', 'ff', 'g'])

In [8]: obj2
Out[8]: 
a     3
b     2
e    -4
ff    9
g     3
dtype: int64

 可以通过标签来获取数据, 这是numpy不能的

In [9]: obj2['a']
Out[9]: 3

In [11]: obj2[['b', 'e']] #注意 ['b', 'e'] 是个存有标签的列表
Out[11]: 
b    2
e   -4
dtype: int64

对pandas结构数据进行运算 标签不会变

In [12]: obj2[obj2>0]
Out[12]: 
a     3
b     2
ff    9
g     3
dtype: int64

In [13]: obj2 / 2
Out[13]: 
a     1.5
b     1.0
e    -2.0
ff    4.5
g     1.5
dtype: float64

Series 也可以看作是 标签index 到 数据单元的 映射(mapping), 所以可以把字典转换成 Series

In [14]: data = {'class1': 100, 'class2': 300, 'class3': 200, 'class4': 50}

In [15]: obj3 = pd.Series(data)

In [16]: obj3
Out[16]: 
class1    100
class2    300
class3    200
class4     50
dtype: int64

可以按指定字典的key来组建Series 

In [17]: keys = ['class5', 'class4', 'class3', 'class2']

In [18]: obj4 = pd.Series(data, index=keys)

In [19]: obj4
Out[19]: 
class5      NaN
class4     50.0
class3    200.0
class2    300.0
dtype: float64

class5 在上面字典中 没有定义, 所以会用NaN(not a number)来代替。现实中数据会有很多NaN数据,所以数据预处理很重要~

可以用.isna 来检测是由有数据缺失:

In [20]: pd.isna(obj4)
Out[20]: 
class5     True
class4    False
class3    False
class2    False
dtype: bool

Series一个很重要的特征是: 他可以根据index来做对应运算(data alignment)

In [21]: obj3
Out[21]: 
class1    100
class2    300
class3    200
class4     50
dtype: int64

In [22]: obj4
Out[22]: 
class5      NaN
class4     50.0
class3    200.0
class2    300.0
dtype: float64

In [23]: obj3 + obj4
Out[23]: 
class1      NaN
class2    600.0
class3    400.0
class4    100.0
class5      NaN
dtype: float64

 可以给这个Series 类 和他的标签 起个名字

In [24]: obj4.name = 'dataset'

In [25]: obj4.index.name= 'class'

In [26]: obj4
Out[26]: 
class
class5      NaN
class4     50.0
class3    200.0
class2    300.0
Name: dataset, dtype: float64

参考自: Python for Data Analysis, 2nd Edition by Wes McKinney

猜你喜欢

转载自blog.csdn.net/bo17244504/article/details/124686751