03pandas——Series

作者: 转身丶即天涯 | 来源:发表于2021-05-21 18:26 被阅读0次
Pandas 版本 1.2.4

Series

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

image.png

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

1. 构造函数

image.png

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


不指定name.png
指定name为aaa.png
copy

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

2. Series的属性

image.png
image.png
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

相关文章

网友评论

    本文标题:03pandas——Series

    本文链接:https://www.haomeiwen.com/subject/nuswjltx.html