• pandas之Series


     

    Pandas

    Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。

    ​ ———— 百度百科


    import numpy as np
    import pandas as pd
    from pandas import Series,DataFrame
    #Series:专门处理一维数据的,
    #DataFrame:专门处理二维数据的
    import matplotlib.pyplot as plt
    %matplotlib inline

    Series


    Series -- 专门处理一维的数组
    Series是一种类似与一维数组的对象,由下面两个部分组成:
    values:一组数据(ndarray类型)
    index:相关的数据索引标签
    1、series的创建

    # Series有两种创建方式:
    1由列表或numpy数组创建
    s1 = Series([1,2,3]) # 由列表创作
       s2 = Series(np.array([1,2,3]))   # 由numpy数组创作
       type(s1) ----> pandas.core.series.Series
       # 可以通过index参数自定义索引,例:
       s3 = Series(np.array([1,2,3]),index = list("abc"))  # s3的索引为abc
       # 这种创建方法,索引(index)和value值必须一一对应,不能多也不能少
       # 修改索引的时候不能单个修改,索引值必须全部写出来,不修改的写原来的值
       # 特别地,由ndarray创建的是引用,而不是副本。对Series元素的改变也会改变原来的ndarray对象中的元素。(列表没有这种情况)
    2由字典创建
    s = Series(data = {"a":10,"pi":3.14,"e":2.713,"g":0.618}, index = ["a","pi","e","g","kk"])
       # index -- 指定索引 (如果不写index,索引默认以英文字母首字母排序)
    # 使用ndarray和list 的时候注意索引是一对一的
    # 使用字典创建Series的时候,索引指定的可以少也可以多
    # 多的一种情况补上NaN(空值),少的不显示
    2、series的索引和切片

    s = Series(data = {"a":10,"pi":3.14,"e":2.713,"g":0.618}, index = ["a","pi","e","g","kk"])
    # 索引
    可以使用中括号取单个索引(此时返回的是元素类型),或者中括号里一个列表取多个索引(此时返回的仍然是一个Series类型)。分为显示索引和隐式索引:
    1显示索引:
    1. 使用index中的元素作为索引值
    2. 使用.loc[](推荐)
       s["e"] s.loc["e"]           -- 取一个值时,返回的是元素的类型
       s[["a","e"]] s.loc["a","e"] -- 取多个值时,返回的是Series类型
       # 取多个值时,必须使用两个中括号
    2隐式索引:
    1. 使用整数作为索引值
    2. 使用.iloc[](推荐)
       s[0] s.iloc[1]         -- 取一个值时,返回的是元素的类型
       s[[0,2]] s.iloc[[0,2]] -- 取多个值时,返回的是Series类型
       # 取多个值时,必须使用两个中括号
       # 隐式索引 传入的是默认的索引值,为int类型(从0开始)
    # 切片
    s["a":"g"] s.loc["a":"g"] -- 显示索引切片时,区间是闭区间(左闭右闭)
    s[0:2] s.iloc[0:2]        -- 隐式索引 切片时 区间是左闭右开的
    3、series的基本概念及属性

    可以把Series看成一个定长的有序字典
    可以通过shape,size,index,values等得到series的属性
    s.shape -- s的形状
    s.size -- s的长度
    s.index -- s的索引
    s.values -- s的值
    可以通过head(),tail()快速查看Series对象的样式
    data = pd.read_csv("../../../day03/2-pandas/softpo/president_heights.csv")
    read_csv -- 可以读取csv、Excel等文件
       # data 为DataFrame对象
    data.head() -- # 查看csv表格的头部, 默认为前5行
    data.tail() -- # 查看csv表格的尾部, 默认为后5行
    # 可以通过参数 n 来修改默认行数
    # Series 也有此属性,   如:
    s_name = data["name"]
    s_name.tail()

    # 当索引没有对应的值时,可能出现缺失数据显示NaN(not a number)的情况
    s = Series({"a":1,"b":2,"c":3},index=["a","b","c","d"])
    # 可以使用pd.isnull(),pd.notnull(),或自带isnull(),notnull()函数检测缺失数据
    pd.isnull(s)
    # 返回值:有空值的返回True, 否则返回False
    s.isnull()
    # 返回值同上,自带的方法
    pd.notnull(s)
    # 返回值: 有空值的返回False, 否则返回True
    # 自带的方法(s.notnull())返回值相同
    # 用法:
    ind = pd.notnull(s)
    s[ind]
    # 通过notnull方法获取boolean值,把它作为一个检索,取出所有为True的数据,就会得到所有数值不为空的数据(即排空)
    # 也可以通过isnull方法,取出所有为空的数据,然后进行赋值

    # Series对象本身及其实例都有一个name属性
    设置name属性有两种方法:
    1s = Series(data= np.random.randint(0,10,size=5),index=["a","b","c","d","e"],name="python")
    2s = Series(data= np.random.randint(0,10,size=5),index=["a","b","c","d","e"])
    s.name = "python"
    4、series的运算

    1适用于numpy的数组运算也适用于Series 例:
    s+10
    s.add(2)
    2Series之间的运算
    1. 在运算中自动对齐不同索引的数据
    2. 如果索引不对应,则补NaN
    s = Series(data= np.random.randint(0,10,size=5),index=["a","b","c","d","e"])
    a = Series(data = np.random.randint(0,20, size=3),index=["A","B","c"])
    s + a -- 索引不对应,得到以下值:
         A    NaN
         B    NaN
         a    NaN
         b    NaN
         c    7.0
         d    NaN
         e    NaN
     dtype: float64
       # 注意:要想保留所有的index,则需要使用.add()函数
       s.add(a,fill_value = 0) -- fill_value:填充(将为空的值,填充为0)

     

  • 相关阅读:
    关于springMVC+Mybatis jar包详解
    关于struts2的过滤器和mybatis的插件的分析
    C# Zip压缩、解压
    JS 字符串转字节截取
    JS 时间差计算 XX秒前、XX小时前、XX天前
    IIS配置web.config 将带www域名转为不带www域名
    JavaScript获取当前url路径
    SQL 查询今天、昨天、7天内、30天的数据
    SQL求解两个时间差
    SqlServer获取当前日期
  • 原文地址:https://www.cnblogs.com/fansirs/p/13944523.html
Copyright © 2020-2023  润新知