搞机器学习、数据可视化这方面的工作、学习,pandas应该是必须要学习的内容。
pandas有两大数据结构:series以及dataframe。
这一篇文章写一些关于series的相关知识。
官方学习资料:https://pandas.pydata.org/pandas-docs/stable/getting_started/dsintro.html(下面代码的例子取自官网)
series可以看做是一个一维的数据结构,多种数据类型可以填充入series。
那么如何创建一个series呢?
s = pd.Series(data, index=index)
series可以由ndarray、dict、scalar value进行构造。
由ndarray构造
s = pd.Series(np.random.randn(5), index=['a', 'b', 'c', 'd', 'e'])
由dict构造
d = {'a': 0., 'b': 1., 'c': 2.}
pd.Series(d)
由scala value构造
pd.Series(5., index=['a', 'b', 'c', 'd', 'e'])
series就像ndarray一样,所以ndarray相关的方法在series对象上也能够使用。
例如:索引取值,切片,“过滤数据”等等
索引取值
s[0]
切片
s[:3]
过滤数值
s[s > s.median()]
当然,series也像numpy的ndarray一样,有一个类型的字段:
s.dtype
->dtype('float64')
一般直接打印series的对象时,dtype会显示在最后面。
series也像dict一样,它可以支持索引以及key的检测,例如:检测key=y是否在series内。
d = {'b': 1, 'a': 0, 'c': 2}
d=pd.Series(d)
print('f' in d)
->False
series也可以像向量一样进行加减等操作:
d = {'b': 1, 'a': 0, 'c': 2}
d=pd.Series(d)
print(d+d)
->
b 2
a 0
c 4
dtype: int64
print(d[1:]+d[:-1])
->
a 0.0
b NaN
c NaN
dtype: float64
当加法前后的index不匹配时,对应的value会自动推断为NaN
当然,你也可以给series取一个专属名字,只要在构建series时给一个name参数就可以了。
d = {'b': 1, 'a': 0, 'c': 2}
d=pd.Series(d, name='abc')
->
b 1
a 0
c 2
Name: abc, dtype: int64
不过,当你rename这个series对象的时候,它两就不是一个对象了。
d = {'b': 1, 'a': 0, 'c': 2}
d=pd.Series(d,name='abc')
c1=d.rename('ab')
print(id(c1),id(d))
->感兴趣可以看看结果,应该是不一致的。