• pandas入门


          数据分析绝对绕不过的三个包是numpy、scipy和pandas。numpy是Python的数值计算扩展,专门用来处理矩阵,它的运算效率比列表更高效。scipy是基于numpy的科学计算包,包括统计、线性代数等工具。pandas是基于numpy的数据分析工具,能更方便的操作大型数据集。后续的章节主要围绕pandas讲解。

          

    numpy和pandas

    numpy的数据结构是n维的数组对象,叫做ndarray。Python的list虽然也能表示,但是不高效,随着列表数据的增加,效率会降低。

    我们首先载入numpy包,因为它是第三方工具,所以每次使用前必须在代码中载入。as是命名为别名,方便调用,np是numpy约定俗成的简写。

    1 import numpy as np
    2 
    3 data1 = [1,2,3,4,5]
    4 
    5 array1 = np.array(data1)
    6 
    7 array1
    8 
    9 array([1,2,3,4,5])#输出结果

    创建数组使用numpy中的array函数,调用时要记住加np。我们将系统自带的列表list转换成了numpy中的数组。

    1 data2 = [[1,3,4],[2,5,6]]
    2 
    3 array2 = np.array(data2)
    4 
    5 array2
    6 
    7 array([1,3,4],
    8           [2,5,6]])

    列表会被转换为一个多维数组,它也可以被称为矩阵。array数组需要注意的是,它内部的元素必须为相同的内型,比如数值和字符串。可以用dtype查询其类型,不用加括号,它的数据类型包括int8,int16,int32等,当我们想转换数据式,可以用astype函数

    array2.dtype
    
    dtype('int64')#array2U21的数据类型为int64
    
    array2_str.dtype = array2.astype('str')
    
    array2_str.dtype
    
    dtype('<U21')

    数组的计算也很方便

     1 array1
     2 
     3 array([1,2,3,4,5])
     4 
     5 array+1
     6 
     7 array([2,3,4,5,6])
     8 
     9 arrray1 * array1
    10 
    11 array([1 , 4 , 9 , 16 , 25])
    12 
    13 array1 * 2
    14 
    15 array([2 , 4 , 6 , 8 , 10])
    16 
    17  

    数组索引和列表相同,通过方括号和数字即可选择,也可直接赋值

    array1[2]
    
    3
    
    array1[-2:]
    
    array([4,5])
    
    array1[1] = 1
    
    array1
    
    array([1,1,3,4,5])
    

    可以通过递归对多维数组进行筛选,如果省略了后面的索引,则返回次一级的难度,这一点和list一样

     1 array2
     2 
     3 array([[1,3,4],
     4           [2,5,6]])
     5 
     6 array2[0]
     7 
     8 array([1,3,4])
     9 
    10 array2[0][1]
    11 
    12 3

    pandas有两个主要数据结构,Series和DataFrame,记住大小写区分,Series类似一维数组,和numpy的array接近,由一组数据和数据标签组成。数据标签有索引的作用。

     1 import pandas as pd
     2 
     3 s = pd.Series([1,2,3,4])
     4 s
     5 #下面是结果
     6 0   1
     7 1   2
     8 2   3
     9 3   4
    10 dtype:int64

    上面所有内容都是在Jupyter notebook显示的,上面的结果,右边是我们输入的一组数据,左边是数据的索引,即标签。数据标签是pandas区分于numpy的重要特征。

    索引不一定是从0开始的数字,它可以被定义。

    1 s=pd.Series([1,2,3,4]),index = ['a','b','c','d'])
    2 
    3 s
    4 
    5 a     1
    6 b     2
    7 c      3
    8 d     4
    9 dtype:int64

    索引的概念有点像SQL的主键,不过它的功能更强大

     1 s.index
     2 
     3 Index(['a','b','c','d'],dtype='object')
     4 
     5 s['a']
     6 
     7 1
     8 
     9 s[['a','c']]
    10 
    11 a   1
    12 c   3
    13 dtype:int64

    index函数可以显示Series的索引。Series和array一样,通过方括号选取数据,当要选取多个数据时,应该用列表表示多个索引,所以第三个案列嵌套了两层方括号。

    如果数据是一个字典,也能直接通过这个字典创建Series

    d={'语文':'89','数学':'90'}
    
    s2=pd.Series(d)
    
    s2
    
    语文    89
    数学    90
    dtype:object

    此时,字典的key就是Series的索引。

    s2 = pd.Series(d,index=['语文','数学','英语']
    
    s2
    
    语文       89
    
    数学       90
    
    英语        NAN
    
    dtype:object

    Series有自动对齐索引的功能,当定义的索引英语和字典对不上是,会自动选择NaN,即结果为空,表示缺失。缺失值的处理会在后续讲解。

    这次就只讲了一下pandas和Series的一些知识,下面的内容会讲一些其它的知识。

  • 相关阅读:
    istio 配置解读
    docker 不同版本 添加--insecure-registry
    Ingress 暴露tcp端口
    jenkins 调用 k8s api
    十五项指标衡量DevOps是否成功
    关于使用镜像仓库的思考
    Jenkins pipeline:pipeline 语法详解
    lvm xfs 扩容
    看到了一个pipeline例子,
    私有仓库harbor安装包括https
  • 原文地址:https://www.cnblogs.com/qq991025/p/12383070.html
Copyright © 2020-2023  润新知