pandas初探:Series生成与索引

Series

Series是一种一维的数组型对象,它包括一个值序列,和它们的索引。
直观的来说,它更像一个字典。因为它的形式为索引:值

生成Series一般有两种方法,通过列表和通过字典

1.列表生成Series

import pandas as pd
from pandas import Series, DataFrame

obj = pd.Series([1, 2, 4])
print(obj)
# 0    1
# 1    2
# 2    4
# dtype: int64

当没有为数据指定索引时,默认索引为0到N-1(N是数据的长度)。
可以通过index属性,来指定索引

import pandas as pd
from pandas import Series, DataFrame

obj = pd.Series([1, 2, 4], index=['d', 'b', 'a'])
print(obj)
# d    1
# b    2
# a    4
# dtype: int64

2.字典生成Series

可以使用字典来生成一个Series。
此时索引为字典的键,值为对应的键值

import pandas as pd
from pandas import Series, DataFrame

dic = {'shanghai': 1000, 'wuhan': 2000, 'beijing': 3000}
obj = pd.Series(dic)
print(obj)
# shanghai    1000
# wuhan       2000
# beijing     3000
# dtype: int64

可以使用字典风格的方法对Series中的索引和数据值进行判断

import pandas as pd
from pandas import Series, DataFrame

dic = {'Shanghai': 4000, 'Wuhan': 2000, 'Beijing': 3000}
obj = pd.Series(dic)
print(5000 in obj.values)   # False
print('Shanghai' in obj)    # True

.

进行索引

选择数据时可以用标签位置进行索引

import pandas as pd
from pandas import Series, DataFrame

dic = {'Shanghai': 4000, 'Wuhan': 2000, 'Beijing': 3000}
obj = pd.Series(dic)
print(obj['Shanghai']) # 4000
print(obj[0])          # 4000

传入一个标签列表,返回一个按列表内元素顺序排列的Seires

import pandas as pd
from pandas import Series, DataFrame

dic = {'Shanghai': 4000, 'Wuhan': 2000, 'Beijing': 3000}
obj = pd.Series(dic)
print(obj[['Beijing', 'Shanghai']])
# Beijing     3000
# Shanghai    4000
# dtype: int64

当然,也可以用切片。但这时,用标签切片和位置切片的结果有点区别

import pandas as pd
from pandas import Series, DataFrame

dic = {'Shanghai': 4000, 'Wuhan': 2000, 'Beijing': 3000}
obj = pd.Series(dic)
print(obj['Shanghai':'Beijing']) # 标签切片时包括:右边的元素
# Shanghai    4000
# Wuhan       2000
# Beijing     3000
# dtype: int64
print(obj[0:2])                 # 位置切片时不包括:右边的元素
# Shanghai    4000
# Wuhan       2000
# dtype: int64

.

数学操作

Series的数学操作与Numpy相似,都是逐元素操作
不过Seires在操作中将保存索引值连接。

import numpy as np
import pandas as pd
from pandas import Series, DataFrame

obj = pd.Series([1, 2, 3, 4])
print(obj * 2)
# 0    2
# 1    4
# 2    6
# 3    8
# dtype: int64
print(np.exp(obj))
# 0     2.718282
# 1     7.389056
# 2    20.085537
# 3    54.598150
# dtype: float64

另外,当合并两个Seires时,索引会自动对齐:

import pandas as pd
from pandas import Series, DataFrame

obj = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
obj2 = pd.Series([2, 3, 4, 5, 6], index=['b', 'c', 'a', 'd', 'f'])
print(obj+obj2)
# a    5.0
# b    4.0
# c    6.0
# d    9.0
# f    NaN

在obj中,键’a’对应的值为1.
在obj2中,键’a’对应的值为4.因此,计算结果为5(这既是对齐的含义)
又因为键’f’未出现在obj中,因此计算结果中’f’对应的值为NaN

参考资料

《利用python进行数据分析》

发布了19 篇原创文章 · 获赞 1 · 访问量 778

猜你喜欢

转载自blog.csdn.net/weixin_43901558/article/details/104814739