zoukankan      html  css  js  c++  java
  • pandas库的使用Series

    pandas库的使用

    pandas 我们课程后续用得最多的一个模块,主要用于进行数据探索和数据分析

    Pandas 是基于 NumPy 的一个开源 Python 库,它被广泛用于快速分析数据,以及数据清洗和准备等工作。它的名字来源是由“ Panel data”(面板数据,一个计量经济学名词)两个单词拼成的。**简单地说,你可以把 Pandas 看作是 Python 版的 Excel。

    pandas库与numpy的区别

    Numpy    

    基础数据类型

    关注数据的结构表达

    维度:数据间关系

    -------------------------------------------------------------

    Pandas

    扩展数据类型

    关注数据的应用表达

    数据与索引间的关系

    Pandas 的数据结构

    Series 是一种一维数组,和 NumPy 里的数组很相 似。事实上,Series 基本上就是基于 NumPy 的数组对象来的。和 NumPy 的数组不同,Series 能为数据自定义标签,也就是索引(index),然后通过索引来访问数组中的数据。

    通常,我们导入如下:

    In [1]: import numpy as np

    In [2]: import pandas as pd

    对象创建

    Series类型由一组数据及与之相关的数据索引组成。

    Serjes可以由如下类型创建:

    1.python列表,index与列表元素个数一致

    2.标量值,index表达Series类型的尺寸

    3.ndarray,索引和数据都可以通过ndarray创建

    4.python 字典 键值中的键是索引,index从字典中进行选择操作

    5.其他函数,range()函数等。

    创建一个Series通过传递值的列表,让大熊猫创建一个默认的整数索引:

    s = pd.Series(date,index)

    上面的 data 参数可以是任意数据对象,比如字典、列表甚至是 NumPy 数组,而index 参数则是对 data 的索引值,类似字典的 key。

    下面这个例子里,将创建一个 Series 对象,并用字符串对数字列表进行索引:

    In [22]: countries = ['USA','Nigeria','France','Ghana']  
      ...: my_date = [100,200,300,400]
      ...: s = pd.Series(my_date,tcountries)

    In [23]: s
    Out[23]:
    USA        100
    Nigeria    200
    France     300
    Ghana      400
    dtype: int64 #Numpy 中的数据类型

    注意:请记住, index 参数是可省略的,你可以选择不输入这个参数。如果不带 index 参数,Pandas 会自动用默认 index 进行索引,类似数组,索引值是 [0, ..., len(data) - 1] ,如下所示:

    从 NumPy 数组对象创建 Series:

    In [5]: np_arr = np.array(my_date)
    In [6]: pd.Series(np_arr)
    Out[6]:
    0    100
    1    200
    2    300
    3    400
    dtype: int32
       
    #从字典创建Series数组    

    In [7]: my_dict = {'a':50,'b':60,'c':70,'d':80}
      ...: pd.Series(my_dict)
    Out[7]:
    a    50
    b    60
    c    70
    d    80
    dtype: int64
       
     #如果传入index 从字典的键进行挑选,无值则为NaN,按index的顺序来
    In [11]: e =pd.Series(my_dict,index=['c','a','b','d','f'])
    In [12]: e
    Out[12]:
    c    70.0
    a    50.0
    b    60.0
    d    80.0
    f     NaN
    dtype: float64
    Series类型的基本操作
    Series类型包括index和values两部分。
    Series类型的操作类似ndarray类型。
    Series类型的操作类似python字典类型。
     
    Series对象可以根据 .index 和.values 获得Series对象的索引和数据,示例代码如下:
    In [15]: import pandas as pd 
    # 导入pandas as pd
    In [16]: b= pd.Series([9,8,7,6],['a','b','c','d'])
    #生成一个Series 对象
    In [17]: b
    Out[17]:
    a    9
    b    8
    c    7
    d    6
    dtype: int64

    In [18]: b.index #获取所有的索引
    Out[18]: Index(['a', 'b', 'c', 'd'], dtype='object')

    In [19]: b.values #获取所有的values值
    Out[19]: array([9, 8, 7, 6], dtype=int64)
    In [20]: b['b']
    Out[20]: 8

    In [21]: b[1]
    Out[21]: 8
    #自动索引和自定义索引并存
    In [22]: b[['c','d',0]]
    Out[22]:
    c    7.0
    d    6.0
    0    NaN
    dtype: float64

    In [23]: b[['c','d','a']]
    Out[23]:
    c    7
    d    6
    a    9
    dtype: int64
    #两套索引共存但是不能混合使用
    Series类型的操作类似ndarray类型。
    索引方法相同,都采用[]
    NumPy中运算和操作可用于Series类型
    可以通过自定义索引的列表进行切片。
    可以通过自定义索引进行切片,如果存在自定义索引,则一同被切片
     
    In [24]: b[3]  #通过自动索引3 取到5
    Out[24]: 6

    In [25]: b[:3]# 切片0-3之内的值并且还有其索引
    Out[25]:
    a    9
    b    8
    c    7
    dtype: int64
       
    In [26]: b[b>b.median()] #大于中位数的
    Out[26]:
    a    9
    b    8
    dtype: int64

    In [27]: np.exp(b) #e的x方运算
    Out[27]:
    a    8103.083928
    b    2980.957987
    c    1096.633158
    d     403.428793
    dtype: float64
    Series类型的操作类似python字典类型。
    通过自定义索引访问。
    保留字in操作
    使用.get()方法
     
    In [28]: 'c' in b
    Out[28]: True  #判断自定义索引是否在b中

    In [29]: 0 in b
    Out[29]: False  #无法判断自动索引 ok?

    In [30]: b.get('f',100) #b中提取f索引的值100,如果不存在则返回100,存在返回f对应的值如果不定义100则返回空
    Out[30]: 100

    Series的对齐问题,示例代码如下:

    In [34]: a =pd.Series([1,2,3],['c','d','e'])
    #生成一个Series对象a
    In [35]: a+b
    Out[35]: #结果是一个并集只有同索引的值可以相加,其他值默认都是NaN
    a    NaN
    b    NaN
    c    8.0
    d    8.0
    e    NaN
    dtype: float64
    PS:
       Series类型在运算中会自动对齐不同索引的数据

    Series类型的name属性:

    Series对象和索引都可以有一个名字,存储在.name中。

    In [37]: b.name
    
    In [38]: b.name='Series 对象'  #给b.name 赋值
    
    In [39]: b.index.name='索引列' #给index.name赋值
    
    In [40]: b
    Out[40]:
    索引列
    a    9
    b    8
    c    7
    d    6
    Name: Series 对象, dtype: int64
    
    

    Series类型的修改

    Series对象可以随时修改并即刻生效。

    In [42]: b
    Out[42]:
    索引列
    a    9
    b    8
    c    7
    d    6
    Name: Series 对象, dtype: int64
    
    In [43]: b['a']
    Out[43]: 9
    
    In [44]: b['a']=15
    
    In [45]: b.name = 'Series' #赋值生效
    
    In [46]: b
    Out[46]:
    索引列
    a    15
    b     8
    c     7
    d     6
    Name: Series, dtype: int64
    
    In [47]: b.name = 'New Series'
    
    In [48]: b['b','c'] = 20
    
    In [49]: b
    Out[49]:
    索引列
    a    15
    b    20
    c    20
    d     6
    Name: New Series, dtype: int64
    
  • 相关阅读:
    PCA本质和SVD
    特征工程(转载)
    python入门基础代码
    长尾理论
    金融行业数据分析
    [rancher-net]
    rancher中使用ingress-lbs做负载均衡
    python 高级语言特性
    docker从初识到深入
    关于容器技术的发展以及虚拟化技术的总结
  • 原文地址:https://www.cnblogs.com/pythonyeyu/p/10734389.html
Copyright © 2011-2022 走看看