Pandas 版本 1.2.4
Series
在pandas中,Series用于表示单列存储的一种同构容器。

根据pandas官方文档描述,Series用于表示带有标签的一维数组。
1. 构造函数

Series有5个构造参数,我们分别测试,用以了解他们的特点。
data
data用以表示构建Series时传入的数据,它支持以下几种类型,可以方便的将数据转为Series,然后进一步操作。
- array-like:list, tuple, np.array
- iterable: 可迭代对象,比如python中的生成器。再比如str,但是字符串不会迭代字符,而是将字符串整体作为一个元素存放。
- dict: 字典(key会作为索引(index),vlue作为值)
- scalar value:纯数值
import numpy as np
import pandas as pd
# python data types
my_list = [1, 2, 3, 4]
my_tuple = (1, 2, 3, 4)
my_dict = {'a': 1, 'b': 2, 'c': 3}
my_str = '1234'
my_generator = (x for x in range(1, 5))
my_number = 1
# numpy data type
my_ndarray = np.array([1,2,3,4])
# create series
my_series = pd.Series(my_number)
print(my_series)
index
index参数支持array-like(类数组类型)或者一维数组。
import numpy as np
import pandas as pd
# python data types
my_list = [1, 2, 3, 4]
# numpy data type
my_ndarray = np.array([1,2,3,4])
# how about index?
# array-like
my_index_list = ['a', 'b', 'c', 'd']
# 1d-ndarray
my_index_1d_array = np.array(my_index_list)
my_series = pd.Series(my_list, my_index_1d_array)
print(my_series)
dtype
dtype参数用于指定Series的数据类型,由于Series是一个同构容器,指定了这个参数,那么所有元素的类型也就确定了。
我们支持pandas是基于python和numpy构建的,那么对应的数据类型也是纷繁复杂,未来补充一篇关于数据类型的博客。
(04pandas——数据类型)[https://www.jianshu.com/writer#/notebooks/39881088/notes/88351941]
单纯的按文档来看,至少支持str, numpy.dtype, or ExtensionDtype, optional
name
给Series指定名称,目前仅发现了输出时会多一个name属性。若不指定,name=None


copy
拷贝输入数据?为了验证这个copy功能,我先创建一个Series,然后再根据这个series创建一个新的series,然后删除新建series中的某个元素,发现仅仅是新建的series被删除了元素,先创建的series数据没有任何改动。这个参数很迷啊
2. Series的属性


import numpy as np
import pandas as pd
# create series
my_series = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
# 01. T: 转置,series中无效
transposed_series = my_series.T
# 02. array:将pd.Series对象转化为pd.PandasArray类型的对象
my_array = my_series.array
# 03. at: 通过标签(或者说是索引index)值,像字典一样获取index所对应的值
a_value = my_series.at['a']
# 04. attrs: 存放Series的全局属性的一个字典对象
# attrs是一个可读写对象,如果我们想让Series携带一些有用的信息的话,也可以存放到attrs属性中
my_series.attrs.update({'cookie': 'samll value'})
# 05. axes: 返回一个Index类型的对象,其中存放的是索引列表
my_series_labels = my_series.axes
# 06. dtype: 返回Serise的数据类型,str格式
my_series_dtype = my_series.dtype
# 07. dtypes: 和dtype效果一样
my_series_dtypes = my_series.dtypes
# 08. flags: Series对象没有flags属性
# 09. hasnans: 是否有nan值,有则返回True,没有则返回False。
has_nan = my_series.hasnans
# 如果series中是字符串,我们还要面临判断nan(缺失值)和 ''(空字符串)的区分。
# hasnans属性无法判断空字符串,切记!
# my_series2 = pd.Series(['1', '2', ''])
# print(my_series2.hasnans) # output: False
# my_series3 = pd.Series(['1', '2', pd.NA])
# print(my_series3.hasnans) # output: True
# my_series4 = pd.Series(['1', '2', np.nan])
# print(my_series4.hasnans) # output: True
# 10. iat: 通过一个整数索引访问数值, 比如取第一个元素
get_element = my_series.iat[0]
# 11. iloc: 对筛选后,基于索引的纯整数索引
# 比如,我们想取出数值大于2的第一个元素。
first_element = my_series[my_series > 2].iloc[0]
# 12. index: 获取Series的索引。返回的是Index对象
my_index = my_series.index
# 13. is_monotonic: 判断Series是否单调递增
# 14. is_monotonic_decreasing: 判断Series是否单调递减
# 15. is_monotonic_increasing: 判断Series是否单调递增,效果和is_monotonic一样。
is_monotonic_series = my_series.is_monotonic
# 16. is_unique: 判断Series中的元素是否都是唯一的
is_unique = my_series.is_unique
# 17. loc: 通过一组索引标签 或 布尔数组 来访问数值
# index group
index_group = ['a', 'c', 'd']
group_value1 = my_series.loc[index_group]
# 布尔数组也是同理
index_bool = [True, False, True, True]
group_value2 = my_series.loc[index_bool]
# 18. name: 获取Series的名称
name = my_series.name
# 19. nbytes: 获取Series的大小, 单位是byte
series_size = my_series.nbytes
# 20. ndim: 返回一个整数,用于表示series的维度
my_series_ndim = my_series.ndim
# 21. shape: 返回一个元组,用于表示series的形状
my_series_shape = my_series.shape # output: (4,)
# 22. size: 返回一个整数,用于表示series的长度
my_series_length = my_series.size # output: 4
# 23. values: 返回等价的np.ndarray对象
my_series_values = my_series.values
网友评论