问题描述
因为pandas是基于python的,所有在做机器学习项目时,最基本的数据结构时list,虽然list比较简单易用,但是用来做数据科学还是需要很多改进的地方。在机器学习的几个库中,numpy有最简单高效的narray,pandas有更加高效的Series。今天我们就来学习一下Series。
Series定义
Series是带有特殊索引的数组。回忆一下,我们知道数组ndarray是带有索引index(0~n-1)的数据列表。而Series是在ndarray基础上,可以自定义索引。
通过list创建Series
from pandas import Series, DataFrame
import port pandas as pd
# 通过list创建Series
ser1 = Series([1,2,3,4])
print(ser1)
输出结果为
0 1
1 2
2 3
3 4
dtype: int64
对比一下numpy的ndarray
import numpy as np
array1 = np.array([1,2,3,4])
print(array1)
输出结果为
[1 2 3 4]
当我们不特别指定索引index时,Series和ndarray功能基本相同,都是以数字0~n-1作为索引的。下面我们测试一下使用特定索引值。
ser2 = pd.Series([1,2,3,4], index=['a','b','c','d'])
输出结果为
a 1
b 2
c 3
d 4
dtype: int64
可以看出索引值已经变成了字母'a,b,c,d'
通过Dictionary创建Series
通过diction创建索引时,dictionary的atrribute自动成为索引值。
sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
ser3 = Series(sdata)
print(ser3)
输出:
Ohio 35000
Oregon 16000
Texas 71000
Utah 5000
dtype: int64
我们也可以在用dictionary创建Series时,指定索引值
index = ['California', 'Ohio', 'Oregon', 'Texas']
输出为:
California NaN
Ohio 35000.0
Oregon 16000.0
Texas 71000.0
dtype: float64
可以看出索引Series是以索引排序进行数据展示的,如果这个索引对应的值不存在,那么就要显示成NaN,代表这个索引的值为空。我们可以使用pandas特有的函数isnull来检测哪些值为空。
pd.isnull(ser4)
输出为:
California True
Ohio False
Oregon False
Texas False
dtype: bool
Series的使用
首先我们可以通过自定义的index来访问Series元素
ser1[0]
Out[195]: 1
ser2['a']
Out[196]: 1
ser2[['a','b']]
Out[197]:
a 1
b 2
dtype: int64
ser2.values
Out[198]: array([1, 2, 3, 4])
ser2.index
Out[199]: Index(['a', 'b', 'c', 'd'], dtype='object')
其次我们还可以像ndarray那样参与矩阵运算
In [200]: ser2[ser2 > 2]
Out[200]:
c 3
d 4
dtype: int64
In [201]: ser2 * 2
Out[201]:
a 2
b 4
c 6
d 8
dtype: int64
In [202]: np.exp(ser2)
Out[202]:
a 2.718282
b 7.389056
c 20.085537
d 54.598150
dtype: float64
In [203]:
网友评论