Python----数据分析(Pandas二:一维数组Series,Series的创建,Series的属 ...

海哥  金牌会员 | 2025-3-17 09:24:06 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 958|帖子 958|积分 2874

一、一维数组Series

   Series:一维数组,与Numpy中的一维array类似。它是一种类似于一维数组的对象,是由一组数据(各种 NumPy 数据范例)以及一组与之相干的数据标签(即索引)组成。
        仅由一组数据也可产生简单的 Series 对象,用值列表生成 Series 时,Pandas 默认主动生成整数索引 。

二、Series的创建

  在Pandas中,一维数组的创建离不开Pandas库中的Series类。
  1. pandas.Series(data=None, index=None, dtype=None, name=None, copy=None, fastpath=False)
复制代码
描述说明data 标量值,如整数或字符串
Python列表或元组
Python字典
1d-Ndarray
index数组或列表,用于定义Series的索引。如果未提供,则默认为从0开始的 整数索引。dtype指定Series的数据范例。name给Series一个名字,用于后续的索引和操作。copy布尔值,默认为False。如果为True,则复制数据;如果为False,则尽可 能避免复制数据,仅影响Ndarray输入。fastpath布尔值,默认为False,通常不须要用户指定。它是Pandas库内部使 用的一个优化标志,当设置为 True时,答应 Series构造函数绕过一些查抄和验 证步调,加快Series的创建速度。但由于这个参数跳过了某些安全查抄,因此在 正常使用中,如果在创建Series时设置了 fastpath=True,而传入的数据又不符 合预期,则大概会导致不可预测的行为或错误。 2.1、使用标量创建

  1. import pandas as pd
  2. data=0
  3. series=pd.Series(data,index=['a','b','c'])
  4. print(series)
复制代码
  1. a    0
  2. b    0
  3. c    0
  4. dtype: int64
复制代码
2.2、使用列表或元组创建

  1. import pandas as pd
  2. data1=[1,2,3,4,5]
  3. data2=(1,2,3,4,5)
  4. series1=pd.Series(data1,index=['a','b','c','d','e'])
  5. series2=pd.Series(data2,index=['a','b','c','d','e'])
  6. print(series1,series2)
复制代码
  1. a    1
  2. b    2
  3. c    3
  4. d    4
  5. e    5
  6. dtype: int64 a    1
  7. b    2
  8. c    3
  9. d    4
  10. e    5
  11. dtype: int64
复制代码
2.3、使用字典

        使用字典创建Series时,字典的键就是索引,字典的值就是该索引对应的值。如果使 用字典创建Series,并且指定了与字典的键不同的index参数,那么生成的Series数组 中的数据就是以index参数的值为索引,但索引所对应的值是NaN。
        在Pandas中, NaN(Not a Number)是一个特殊的浮点数,用于表现缺失数据或无 效数据。NaN 是 IEEE 浮点标准的一部分,Pandas 使用 NaN 来表现数据集中缺失或 未定义的值。
  1. import pandas as pd
  2. data={
  3.     'a':1,
  4.     'b':2,
  5.     'c':3
  6. }
  7. series=pd.Series(data)
  8. print(series)
复制代码
  1. a    1
  2. b    2
  3. c    3
  4. dtype: int64
复制代码
2.4、使用数组

  1. import pandas as pd
  2. import numpy as np
  3. data=np.array(
  4.     [1,2,3,4,5]
  5. )
  6. series=pd.Series(data)
  7. print(series)
复制代码
  1. 0    1
  2. 1    2
  3. 2    3
  4. 3    4
  5. 4    5
  6. dtype: int64
复制代码
三、Series的属性

3.1、index

        返回Series中的索引。
  1. import pandas as pd
  2. series=pd.Series([1,2,3],index=['a','b','c'])
  3. print(series.index)
  4. series.index=['e','f','g']
  5. print(series.index)
复制代码
  1. Index(['a', 'b', 'c'], dtype='object')
  2. Index(['e', 'f', 'g'], dtype='object')
复制代码
3.2、values

        用于返回Series中的数据,返回的数据将以Ndarray数组的形式存在。
  1. import pandas as pd
  2. series=pd.Series([1,2,3],index=['a','b','c'])
  3. print(series.values)
  4. print(type(series.values))
复制代码
  1. [1 2 3]
  2. <class 'numpy.ndarray'>
复制代码
3.3、name

        用于返回Series的名称,如果创建时指定了name参数,那么该属性的返回值就是 name参数,如果没有指定则为None。
  1. import pandas as pd
  2. series=pd.Series([1,2,3],index=['a','b','c'])
  3. print(series.name)
  4. series.name='test'
  5. print(series.name)
复制代码
  1. None
  2. test
复制代码
3.4、dtype和dtypes

        对于Series来说,dtype和dtypes的作用是一样的,都是用来返回Series对象的数据 范例。 需
        要留意的是:
                        该属性是只读属性,不可以通过直接赋值的方式去修改数据范例。
  1. import pandas as pd
  2. series=pd.Series([1,2,3],index=['a','b','c'])
  3. print(series.dtype)
复制代码
  1. int64
复制代码
3.5、shape

        用于描述Series的形状。
  1. import pandas as pd
  2. series=pd.Series([1,2,3],index=['a','b','c'])
  3. print(series.shape)
复制代码
  1. (3,)
复制代码
3.6、 size

         用于返回Series的元素数量,该返回值是一个整数。
  1. import pandas as pd
  2. series=pd.Series([1,2,3],index=['a','b','c'])
  3. print(series.size)
复制代码
  1. 3
复制代码
3.7、empty

        用来表现Series数组是否为空,返回值一个布尔值,如果数组里一个元素都没有就返 回True,否则返回False。
  1. import pandas as pd
  2. series=pd.Series()
  3. print(series.empty)
复制代码
  1. True
复制代码
3.8、hasnans

        用于返回数组中是否包含NaN值,如果数组中存在NaN,那么返回True,否则返回 False。
  1. import pandas as pd
  2. import numpy as np
  3. series=pd.Series([1,2,np.nan],index=['a','b','c'])
  4. print(series.hasnans)
复制代码
  1. True
复制代码
3.9、is_unique

        用于返回数组中的元素是否为独一无二的,如果全部的元素都是独一无二的,即数组 中没有重复元素,那么就返回True,否则返回False。
  1. import pandas as pd
  2. import numpy as np
  3. series=pd.Series(['a','b','c'])
  4. print(series.is_unique)
复制代码
  1. True
复制代码
3.10、nbytes

        用于返回该Series对象中全部数据占用的总字节数。
  1. import pandas as pd
  2. series=pd.Series([1,2,3],dtype='int64')
  3. print(series.nbytes)
复制代码
  1. 8
复制代码
3.11、axes

        用于返回series对象行轴标签的列表。
  1. import pandas as pd
  2. series = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'], dtype='int64')
  3. print(series.axes)
复制代码
  1. [Index(['a', 'b', 'c', 'd', 'e'], dtype='object')]
复制代码
3.12、ndim

        返回Series数组的维度,对于Series数组来说,它的维度始终为1。
  1. import pandas as pd
  2. series = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'], dtype='int64')
  3. print(series.ndim)
复制代码
  1. 1
复制代码
3.13、array

        用于返回Series的底层数组,包罗数组的元素、数组的长度及数组元素的数据范例。
  1. import pandas as pd
  2. import numpy as np
  3. data = np.array([1, 2, 3, 4, 5])
  4. series = pd.Series(data)
  5. print(series.array)
  6. print(type(series.array))
复制代码
  1. <NumpyExtensionArray>
  2. [np.int64(1), np.int64(2), np.int64(3), np.int64(4), np.int64(5)]
  3. Length: 5, dtype: int64
  4. <class 'pandas.core.arrays.numpy_.NumpyExtensionArray'>
复制代码
3.14、attrs

        返回series的自定义属性,可以用来存储额外的说明性数据。
  1. import pandas as pd
  2. import numpy as np
  3. data = np.array([1, 2, 3, 4, 5])
  4. print(series.attrs)
  5. series.attrs = {'source': 'file1', 'time': '19:27:27'}
  6. print(series)
  7. print('额外属性', series.attrs)
复制代码
  1. {}0    1
  2. 1    2
  3. 2    3
  4. 3    4
  5. 4    5
  6. dtype: int64额外属性 {'source': 'file1', 'time': '19:27:27'}
复制代码
3.15、is_monotonic_decreasing

        返回一个布尔值,表现Series是否按降序排列。
  1. import pandas as pd
  2. series = pd.Series([5, 4, 3, 2, 1])
  3. print(series.is_monotonic_decreasing)
复制代码
  1. True
复制代码
3.16、is_monotonic_increasing

        返回一个布尔值,表现Series是否按升序排列。
  1. import pandas as pd
  2. series = pd.Series([5, 4, 3, 2, 1])
  3. print(series.is_monotonic_increasing)
复制代码
  1. False
复制代码
四、 Series中元素的索引与访问

4.1、位置索引

        可以使用整数索引来访问Series中的元素,就像访问列表一样。
  1. import pandas as pd
  2. series=pd.Series([10,20,30,40,50,60])
  3. print(series[0])
  4. print(series[1])
复制代码
  1. 10
  2. 20
复制代码
4.2、标签索引

        除了使用位置索引之外,还可以使用标签进行索引,与访问字典中的元素类似。
  1. import pandas as pd
  2. series=pd.Series([10,20,30,40,50],index=['a','b','c','d','e'])
  3. print(series['a'])
  4. print(series['c'])
复制代码
  1. 10
  2. 30
复制代码
4.3、切片索引

        Series对象的切片方式有两种,第一种是使用位置切片,其使用方法与列表的切片类 似;第二种是使用标签切片,其语法与位置切片类似,都是 start:stop,且开始值 与停止值可以省略,但与位置切片不同的是,标签切片的范围是左右都闭合,即既包 含start,又包含stop,而位置切片是左闭右开,只包含start,不包含stop。
  1. import pandas as pd
  2. series=pd.Series([10,20,30,40,50],index=['a','b','c','d','e'])
  3. print(series[:])
  4. print(series['b':'d'])
复制代码
  1. a    10
  2. b    20
  3. c    30
  4. d    40
  5. e    50
  6. dtype: int64
  7. b    20
  8. c    30
  9. d    40
  10. dtype: int64
复制代码
4.4、loc与iloc

        loc与iloc也是Series对象的属性,它们的作用就是用来访问Series中的元素,loc是基 于标签的索引,iloc是基于位置的索引。
  1. import pandas as pd
  2. series = pd.Series([10, 20, 30, 40, 50], index=['a', 'b', 'c', 'd', 'e'])
  3. print(series.loc['a'])
  4. print(series.iloc[0:2])
  5. print(series.iloc[2])
复制代码
  1. 10
  2. a    10
  3. b    20
  4. dtype: int64
  5. 30
复制代码
4.5、at与iat

        at与iat也是Series对象的属性,可以用来访问元素,at是基于标签的索引,iat是基于 位置的索引。
  1. import pandas as pd
  2. series = pd.Series([10, 20, 30, 40, 50], index=['a', 'b', 'c', 'd', 'e'])
  3. print(series.at['a'])
  4. print(series.iat[0])
  5. print(series.iat[2])
复制代码
  1. 1010
  2. 30
复制代码
4.6、head

        head是Series对象的方法,用于快速检察 Series数据的开头部分内容。
  1. series.head(n=None)
复制代码
描述说明n是可选参数,用于指定要返回的行数。如果不提供该参数,默认值为5。
  1. import pandas as pd
  2. data = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
  3. index = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
  4. series = pd.Series(data, index=index)
  5. print(series.head())
复制代码
  1. a    10
  2. b    20
  3. c    30
  4. d    40
  5. e    50
  6. dtype: int64
复制代码
4.7、tail

        tail的用法与head类似,但不同的是,它用于快速检察Series数据的末尾部分内容。
  1. series.tail(n=None)
复制代码
描述说明n是可选参数,用于指定要返回的行数。若不提供该参数,默认值为5。
  1. import pandas as pd
  2. data = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
  3. index = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
  4. series = pd.Series(data, index=index)
  5. print(series.tail())
复制代码
  1. f     60
  2. g     70
  3. h     80
  4. i     90
  5. j    100
  6. dtype: int64
复制代码
4.8、isin

        该函数用于判断 Series中的每个元素是否在指定的一组值中,它会返回一个与原 Series长度雷同的布尔型Series, 此中对应位置为True表现该位置的元素在指定 的值集合中,False则表现不在。
  1. series.isin(values)
复制代码
描述说明values是一个可迭代对象(如列表、元组、集合等),用于指定要进行判断 的一组值。
  1. import pandas as pd
  2. data = [10, 20, 30, 40, 50]
  3. series = pd.Series(data)
  4. values_to_check = [20, 40]
  5. result = series.isin(values_to_check)
  6. print(result)
复制代码
  1. 0    False
  2. 1     True
  3. 2    False
  4. 3     True
  5. 4    False
  6. dtype: bool
复制代码
4.9、get

        Series.get 方法用于通过标签来获取Series中的元素。
  1. Series.get(key, default=None)
复制代码
描述说明key你想要获取的元素的标签。default可选参数,如果 key不在标签中,返回这个默认值。如果没有指定,默认为 None。
  1. import pandas as pd
  2. s = pd.Series(['apple', 'banana', 'cherry'], index=[1, 2, 3])
  3. print(s.get(2))
  4. print(s.get(4, 'Not Found'))
复制代码
  1. banana
  2. Not Found
复制代码
五、思维导图


 
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

海哥

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表