Pandas的学习(2.Series的索引和切片、基本概念以及Series的运算)

Series的索引和切片

   可以取中括号取单个索引(此时返回的是元素类型),或者中括号里一个列表取多个索引(此时返回的仍然是一个Series类型)

    分为显示索引隐式索引

(1) 显示索引 (必须给索引的值):

    -- 使用index中的元素作为索引值
    -- 使用 .loc[]  (推荐)

注意此时是闭区间

import numpy as np
from pandas import Series

# 创建好Series
s = Series(np.random.random(10),index=list('abcdefghig'))
print(s)
print(s['a'])  # 可以直接取出行号为 'a' 的数据
print(s.loc['a'])  # 通过 .loc[]  的 方式取出索引为'a'的值
'''
    运行结果:
    a    0.866009
    b    0.173073
    c    0.679109
    d    0.247098
    e    0.115333
    f    0.085793
    g    0.135284
    h    0.203943
    i    0.125305
    g    0.564275
    dtype: float64
    0.8598185678819752
    0.8598185678819752
'''

(2) 隐式索引:

   --- 使用整数作为索引值
   --- 使用  .iloc[]  (推荐)

 注意: 此时是半开区间

print(s[0])  # 通过[]整数的方法取出相应索引的值
print(s.iloc[0])  # 通过 .iloc[] 取出相应索引的值
"""
   运行结果:
   0.32848002630924467
    0.32848002630924467 
"""

(3) 切片   (代码实例)

# 切片
'''# 取出索引值为 'a'到'e'的值'''
print(s['a':'e'])
'''# 取出从第一个开始到第五个'''
print(s[0:5])
'''取的方法和列表大致相同'''

 

 Series的基本概念

    1. 可以把Series看成一个定长的有序字典
         可以通过shape,size,index,values等得到series的属性

'''# 打印Series的形状 对于Series而言只能是一维的'''
print(s.shape)
# 结果  (10,)   代表 10 行

'''# 打印出Series的大小'''
print(s.size)  
# 结果  10

'''打印出索引值'''
print(s.index)
# 结果 Index(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'g'], dtype='object')

'''打印出所有的值'''
print(s.values)
# 结果 [0.08580958 0.06484278 0.86393773 0.99667033 0.93736993 0.55856375
#  0.86119536 0.396556   0.30890221 0.51369992]

2. 可以通过head(),tail()快速查看Series对象的样式

     对于大数据来说,读取文件的前几行和读取文件的后几行来说是非常必要的

'''head()方法,打印前几行,默认只打印前5行'''
print(s.head())
'''可以给head()方法中传递正整数值,数值为几,就打印前几行'''
print(s.head(7))  # 打印前7行

'''tail()方法,打印后几行,默认只打印后5行'''
print(s.tail())
'''可以给tail()方法中传递正整数值,数值为几,就打印后几行'''
print(s.tail(7))  # 打印后5行

3.当索引没有对应的值时,可能出现缺失数据显示NaN(not a number)的情况

s1 = Series([1, 26, None, np.nan], index=list('金木水火'))
print(s1)
"""
    运行结果:
    金     1.0
    木    26.0
    水     NaN
    火     NaN
    dtype: float64
"""

    有空值时,是可以进行加和等运算的,Series会自动将无效的空值等转化为float型,而在numpy的类型中是不可以的  

4.可以使用pd.isnull(),pd.notnull(),或自带isnull(),notnull()函数检测缺失数据

'''判断Series是否为空,返回的类型还是Series'''
print(s1.isnull())
""" 结果
    金    False
    木    False
    水     True
    火     True
    dtype: bool
"""

'''判断Series不为空吗 , 为空返回False,不为空返回True'''
print(s1.notnull())
""" 结果:
    金     True
    木     True
    水    False
    火    False
    dtype: bool
"""

'''取出Series中不为空的数据 Series[Series.notnull()]'''
print(s1[s1.notnull()])
"""
    金     1.0
    木    26.0
    dtype: float64
"""

5.Series对象本身及其索引都有一个name属性,  

    name的作用: 区分,在DataFrame中用于区分,在DataFrame中是列名

s1.name = '元素'
print(s1)  # 然后就会有Name属性
""" 结果:
    金     1.0
    木    26.0
    水     NaN
    火     NaN
    Name: 元素, dtype: float64
"""

在运算中自动对齐不同索引的数据
如果索引不对应,则补NaN
    注意:要想保留所有的index,则需要使用.add()函数

 Series的运算

   1.可以进行加减乘除    (直接利用加减乘除符号进行运算时,Nan是不会进行加减乘除的)

print(s1 + 10)
"""
金    11.0
木    36.0
水     NaN
火     NaN
Name: 元素, dtype: float64
"""

2.  使用add()方法,参数fill_value,    如果在进行加减乘除运算的时候,有NaN的值,

    那么fill_value默认会将NaN设置为= 后面的值

print(s1.add(10,fill_value=0))  # fill_value=0把NaN设置为0
"""
金    11.0
木    36.0
水    10.0
火    10.0
Name: 元素, dtype: float64
"""

 3.Series之间进行运算

   ---  在运算中自动对齐不同索引的数据        Series最重要的特征是有索引值

   --- 如果索引对应,,在进行相加时,索引相同进行相加
   ---  如果索引不对应,则补NaN
                             注意:要想保留所有的index,则需要使用.add()函数

from pandas import Series

s1 = Series([2, 4, 7, 9], index=[0, 1, 2, 3])
s2 = Series([1, 2, 3, 4], index=[2, 3, 4, 5])
# 索引不对应
print(s1 + s2)
"""
    0     NaN
    1     NaN
    2     8.0
    3    11.0
    4     NaN
    5     NaN
    dtype: float64
"""
# 保留所有的引用,即连个索引取并集
# fill_value: 有空即填充等号后面的值
print(s1.add(s2,fill_value=0))
"""
    0     2.0
    1     4.0
    2     8.0
    3    11.0
    4     3.0
    5     4.0
    dtype: float64
"""

Series数据有空值(None)时,是可以的进行相加的

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

还是那个同伟伟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值