溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python之Numpy與Pandas怎么應(yīng)用

發(fā)布時間:2022-07-04 09:25:06 來源:億速云 閱讀:214 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹了python之Numpy與Pandas怎么應(yīng)用的相關(guān)知識,內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇python之Numpy與Pandas怎么應(yīng)用文章都會有所收獲,下面我們一起來看看吧。

    1 Numpy 介紹與應(yīng)用

    1-1Numpy是什么

    NumPy 是一個運行速度非??斓臄?shù)學(xué)庫,一個開源的的python科學(xué)計算庫,主要用于數(shù)組、矩陣計算,包含:

    一個強大的N維數(shù)組對象 ndarray廣播功能函數(shù)整合 C/C++/Fortran 代碼的工具線性代數(shù)、傅里葉變換、隨機數(shù)生成等功能 1-2 為什么選擇Numpy

    對于同樣的數(shù)值計算任務(wù),使用Numpy比直接編寫原生python代碼的優(yōu)點有:

    代碼更簡潔:

    Numpy直接以數(shù)組、矩陣為粒度計算并且支撐大量的數(shù)學(xué)函數(shù),而Python需要用for循環(huán)從底層實現(xiàn)

     性能更高效:

    Numpy的數(shù)組存儲效率和輸入輸出計算性能,比Python使用List或者嵌套List好很多

    注意:Numpy的數(shù)據(jù)存儲和Python原生的List是不一樣的
    加上Numpy的大部分代碼都是C語言實現(xiàn)的,這是Numpy比純Python代碼高效的原因

    相關(guān)學(xué)習(xí)、代碼如下:須提前安裝好Numpy、pandas和matplotlib

    Numpy終端安裝命令:pip install numpy
    Pandas終端安裝命令:pip install pandas
    Matplotlib終端安裝過命令:pip install matplotlib

    python之Numpy與Pandas怎么應(yīng)用

    # @Software : PyCharm
    # Numpy是Python各種數(shù)據(jù)科學(xué)類庫的基礎(chǔ)庫
    # 比如:Pandas,Scipy,Scikit_Learn等
    # Numpy應(yīng)用:
    '''
    NumPy 通常與 SciPy(Scientific Python)和 Matplotlib(繪圖庫)一起使用, 這種組合廣泛用于替代 MatLab,是一個強大的科學(xué)計算環(huán)境,有助于我們通過 Python 學(xué)習(xí)數(shù)據(jù)科學(xué)或者機器學(xué)習(xí)。
    SciPy 是一個開源的 Python 算法庫和數(shù)學(xué)工具包。
    SciPy 包含的模塊有最優(yōu)化、線性代數(shù)、積分、插值、特殊函數(shù)、快速傅里葉變換、信號處理和圖像處理、常微分方程求解和其他科學(xué)與工程中常用的計算。
    Matplotlib 是 Python 編程語言及其數(shù)值數(shù)學(xué)擴展包 NumPy 的可視化操作界面。它為利用通用的圖形用戶界面工具包,如 Tkinter, wxPython, Qt 或 GTK+ 向應(yīng)用程序嵌入式繪圖提供了應(yīng)用程序接口(API)。
    
    '''
    # 安裝 NumPy 最簡單的方法就是使用 pip 工具:
    # pip3 install --user numpy scipy matplotlib
    # --user 選項可以設(shè)置只安裝在當(dāng)前的用戶下,而不是寫入到系統(tǒng)目錄。
    # 默認(rèn)情況使用國外線路,國外太慢,我們使用清華的鏡像就可以:
    # pip install numpy scipy matplotlib -i.csv https://pypi.tuna.tsinghua.edu.cn/simple
    # 這種pip安裝是一種最簡單、最輕量級的方法,當(dāng)然,這里的前提是有Python包管理器
    # 如若不行,可以安裝Anaconda【目前應(yīng)用較廣泛】,這是一個開源的Python發(fā)行版
    # 安裝Anaconda地址:https://www.anaconda.com/
    # 安裝驗證
    # 測試是否安裝成功
    from numpy import *     # 導(dǎo)入 numpy 庫
    print(eye(4))           # 生成對角矩陣
    # 查看版本:
    import numpy as np
    print(np.__version__)
    # 實現(xiàn)2個數(shù)組的加法:
    # 1-原生Python實現(xiàn)
    def Py_sum(n):
        a = [i**2 for i in range(n)]
        b = [i**3 for i in range(n)]
        # 創(chuàng)建一個空列表,便于后續(xù)存儲
        ab_sum = []
        for i in range(n):
            # 將a、b中對應(yīng)的元素相加
            ab_sum.append(a[i]+b[i])
        return ab_sum
    # 調(diào)用實現(xiàn)函數(shù)
    print(Py_sum(10))
    # 2-Numpy實現(xiàn):
    def np_sum(n):
        c = np.arange(n) ** 2
        d = np.arange(n) ** 3
        return c+d
    print(np_sum(10))
    # 易看出使用Numpy代碼簡潔且運行效率快
    # 測試1000,10W,以及100W的運行時間
    # 做繪圖對比:
    import pandas as pd
    # 輸入數(shù)據(jù)
    py_times = [1.72*1000, 202*1000, 1.92*1000]
    np_times = [18.8, 14.9*1000, 17.8*10000]
    
    # 創(chuàng)建Pandas的DataFrame類型數(shù)據(jù)
    ch_lxw = pd.DataFrame({
        'py_times': py_times,
        'np_times': np_times    # 可加逗號
    })
    print(ch_lxw)
    import matplotlib.pyplot as plt
    # 線性圖
    print(ch_lxw.plot())
    # 柱狀圖
    print(ch_lxw.plot.bar())
    # 簡易箱線圖
    print(ch_lxw.boxplot)
    
    plt.show()

    線性圖運行效果如下:

    python之Numpy與Pandas怎么應(yīng)用

    柱狀圖運行效果如下:

    python之Numpy與Pandas怎么應(yīng)用

    2 NumPy Ndarray 對象

    NumPy 最重要的一個特點是其 N 維數(shù)組對象 ndarray,它是一系列同類型數(shù)據(jù)的集合,以 0 下標(biāo)為開始進(jìn)行集合中元素的索引。

    ndarray 對象是用于存放同類型元素的多維數(shù)組,其中的每個元素在內(nèi)存中都有相同存儲大小的區(qū)域。ndarray 對象采用了數(shù)組的索引機制,將數(shù)組中的每個元素映射到內(nèi)存塊上,并且按照一定的布局對內(nèi)存塊進(jìn)行排序(行或列)

    ndarray 內(nèi)部由以下內(nèi)容組成:

    • 一個指向數(shù)據(jù)(內(nèi)存或內(nèi)存映射文件中的一塊數(shù)據(jù))的指針;

    • 數(shù)據(jù)類型或 dtype,描述在數(shù)組中的固定大小值的格子;

    • 一個表示數(shù)組形狀(shape)的元組,表示各維度大小的元組;

    • 一個跨度元組(stride),其中的整數(shù)指的是為了前進(jìn)到當(dāng)前維度下一個元素需要"跨過"的字節(jié)數(shù)。

    相關(guān)學(xué)習(xí)、代碼如下:

    '''
    創(chuàng)建一個 ndarray 只需調(diào)用 NumPy 的 array 函數(shù)即可:
    numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
    參數(shù)說明:
    
    名稱	描述
    object	表示數(shù)組或嵌套的數(shù)列
    dtype	表示數(shù)組元素的數(shù)據(jù)類型,可選
    copy	表示對象是否需要復(fù)制,可選
    order	創(chuàng)建數(shù)組的樣式,C為行方向,F(xiàn)為列方向,A為任意方向(默認(rèn))
    subok	默認(rèn)返回一個與基類類型一致的數(shù)組
    ndmin	指定生成數(shù)組的最小維度
    '''
    # ndarray 對象由計算機內(nèi)存的連續(xù)一維部分組成,并結(jié)合索引模式,將每個元素映射到內(nèi)存塊中的一個位置。
    # 內(nèi)存塊以行順序(C樣式)或列順序(FORTRAN或MatLab風(fēng)格,即前述的F樣式)來保存元素
    
    # 學(xué)好Numpy,便于后期對Pandas的數(shù)據(jù)處理
    # 1:一維
    import numpy as np
    lxw = np.array([5, 2, 0])
    print(lxw)
    print()
    # 2: 多于一個維度
    import numpy as np
    lxw2 = np.array([[1, 5, 9], [5, 2, 0]])
    print(lxw2)
    print()
    # 3: 最小維度
    import numpy as np
    lxw3 = np.array([5, 2, 0, 1, 3, 1, 4], ndmin=2)     # ndmin: 指定生成數(shù)組的最小維度
    print(lxw3)
    print()
    # 4: dtype參數(shù)
    import numpy as np
    lxw4 = np.array([3, 3, 4, 4], dtype=complex)        # dtype: 數(shù)組元素的數(shù)據(jù)類型[complex 復(fù)數(shù)】
    print(lxw4)

    3 Numpy 數(shù)據(jù)類型

    numpy 支持的數(shù)據(jù)類型比 Python 內(nèi)置的類型要多很多,基本上可以和 C 語言的數(shù)據(jù)類型對應(yīng)上,其中部分類型對應(yīng)為 Python 內(nèi)置的類型.

    常用 NumPy 基本類型:

    名稱  描述
    bool_ :【布爾型數(shù)據(jù)類型(True 或者 False)】
    int_ : 【默認(rèn)的整數(shù)類型(類似于 C 語言中的 long,int32 或 int64)】
    intc :【與 C 的 int 類型一樣,一般是 int32 或 int 64】
    intp :【用于索引的整數(shù)類型(類似于 C 的 ssize_t,一般情況下仍然是 int32 或 int64)】
    int8 :【字節(jié)(-128 to 127)】
    int16 :【整數(shù)(-32768 to 32767)】
    int32 :【整數(shù)(-2147483648 to 2147483647)】
    int64 :【整數(shù)(-9223372036854775808 to 9223372036854775807)】
    uint8 :【無符號整數(shù)(0 to 255)】
    uint16 :【無符號整數(shù)(0 to 65535)】
    uint32 :【無符號整數(shù)(0 to 4294967295)】
    uint64 :【無符號整數(shù)(0 to 18446744073709551615)】
    float_ float64 :【類型的簡寫】
    float16 :【半精度浮點數(shù),包括:1 個符號位,5 個指數(shù)位,10 個尾數(shù)位】
    float32 :【單精度浮點數(shù),包括:1 個符號位,8 個指數(shù)位,23 個尾數(shù)位】
    float64 :【雙精度浮點數(shù),包括:1 個符號位,11 個指數(shù)位,52 個尾數(shù)位】
    complex_ complex128: 【類型的簡寫,即 128 位復(fù)數(shù)】
    complex64 :【復(fù)數(shù),表示雙 32 位浮點數(shù)(實數(shù)部分和虛數(shù)部分)】
    complex128 :【復(fù)數(shù),表示雙 64 位浮點數(shù)(實數(shù)部分和虛數(shù)部分)】

    相關(guān)學(xué)習(xí)、代碼如下:

    '''
    # numpy 的數(shù)值類型實際上是 dtype 對象的實例,并對應(yīng)唯一的字符,包括 np.bool_,np.int32,np.float32,等等。
    '''
    # Numpy 類型對象:
    '''
    dtype 對象是使用以下語法構(gòu)造的:
    
    numpy.dtype(object, align, copy)
    
    object - 要轉(zhuǎn)換為的數(shù)據(jù)類型對象
    align - 如果為 true,填充字段使其類似 C 的結(jié)構(gòu)體。
    copy - 復(fù)制 dtype 對象 ,如果為 false,則是對內(nèi)置數(shù)據(jù)類型對象的引用
    
    '''
    # 1: 使用標(biāo)量類型
    import numpy as np
    lxw = np.dtype(np.int32)
    print(lxw)
    print()
    # 2: int8, int16, int32, int64 四種數(shù)據(jù)類型可以使用字符串 'i1', 'i2','i4','i8' 代替
    import numpy as np
    lxw2 = np.dtype('i8')       # int64
    print(lxw2)
    print()
    # 3: 字節(jié)順序標(biāo)注
    import numpy as np
    lxw3 = np.dtype('<i4')      # int32
    print(lxw3)
    print()
    # 4: 首先創(chuàng)建結(jié)構(gòu)化數(shù)據(jù)類型
    import numpy as np
    lxw4 = np.dtype([('age', np.int8)])     # i1
    print(lxw4)
    print()
    # 5: 將數(shù)據(jù)類型應(yīng)用于 ndarray 對象
    import numpy as np
    lxw5 = np.dtype([('age', np.int32)])
    a = np.array([(10,), (20,), (30,)], dtype=lxw5)
    print(a)
    print()
    # 6: 類型字段名可以用于存取實際的 age 列
    import numpy as np
    lxw6 = np.dtype([('age', np.int64)])
    a = np.array([(10,), (20,), (30,)], dtype=lxw6)
    print(a['age'])
    print()
    # 7: 定義一個結(jié)構(gòu)化數(shù)據(jù)類型 student,包含字符串字段 name,整數(shù)字段 age,及浮點字段 marks,并將這個 dtype 應(yīng)用到 ndarray 對象
    import numpy as np
    student = np.dtype([('name', 'S20'), ('age', 'i2'), ('marks', 'f4')])
    print(student)      # 運行結(jié)果:[('name', 'S20'), ('age', '<i2'), ('marks', '<f4')]
    print()
    # 8:
    import numpy as np
    student2 = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')])
    lxw = np.array([('lxw', 21, 52), ('cw', 22, 58)], dtype=student2)
    print(lxw)          # 運行結(jié)果:[(b'lxw', 21, 52.) (b'cw', 22, 58.)]
    # 每個內(nèi)建類型都有一個唯一定義它的字符代碼,如下:
    '''
    字符	對應(yīng)類型
    b	布爾型
    i.csv	(有符號) 整型
    u	無符號整型 integer
    f	浮點型
    c	復(fù)數(shù)浮點型
    m	timedelta(時間間隔)
    M	datetime(日期時間)
    O	(Python) 對象
    S, a	(byte-)字符串
    U	Unicode
    V	原始數(shù)據(jù) (void)
    '''

    4 Numpy 數(shù)組屬性

    在 NumPy中,每一個線性的數(shù)組稱為是一個軸(axis),也就是維度(dimensions)。

    比如說,二維數(shù)組相當(dāng)于是兩個一維數(shù)組,其中第一個一維數(shù)組中每個元素又是一個一維數(shù)組。

    相關(guān)代碼學(xué)習(xí)、如下:

    # NumPy 的數(shù)組中比較重要 ndarray 對象屬性有:
    '''
    屬性	            說明
    ndarray.ndim	秩,即軸的數(shù)量或維度的數(shù)量
    ndarray.shape	數(shù)組的維度,對于矩陣,n 行 m 列
    ndarray.size	數(shù)組元素的總個數(shù),相當(dāng)于 .shape 中 n*m 的值
    ndarray.dtype	ndarray 對象的元素類型
    ndarray.itemsize	ndarray 對象中每個元素的大小,以字節(jié)為單位
    ndarray.flags	ndarray 對象的內(nèi)存信息
    ndarray.real	ndarray元素的實部
    ndarray.imag	ndarray 元素的虛部
    ndarray.data	包含實際數(shù)組元素的緩沖區(qū),由于一般通過數(shù)組的索引獲取元素,所以通常不需要使用這個屬性。
    
    '''
    # ndarray.ndim
    # ndarray.ndim 用于返回數(shù)組的維數(shù),等于秩。
    import numpy as np
    lxw = np.arange(36)
    print(lxw.ndim)             # a 現(xiàn)只有一個維度
    # 現(xiàn)調(diào)整其大小
    a = lxw.reshape(2, 6, 3)    # 現(xiàn)在擁有三個維度
    print(a.ndim)
    print()
    # ndarray.shape
    # ndarray.shape 表示數(shù)組的維度,返回一個元組,這個元組的長度就是維度的數(shù)目,即 ndim 屬性(秩)。比如,一個二維數(shù)組,其維度表示"行數(shù)"和"列數(shù)"。
    # ndarray.shape 也可以用于調(diào)整數(shù)組大小。
    import numpy as np
    lxw2 = np.array([[169, 175, 165], [52, 55, 50]])
    print(lxw2.shape)   # shape: 數(shù)組的維度
    print()
    # 調(diào)整數(shù)組大小:
    import numpy as np
    lxw3 = np.array([[123, 234, 345], [456, 567, 789]])
    lxw3.shape = (3, 2)
    print(lxw3)
    print()
    # NumPy 也提供了 reshape 函數(shù)來調(diào)整數(shù)組大小:
    import numpy as np
    lxw4 = np.array([[23, 543, 65], [32, 54, 76]])
    c = lxw4.reshape(2, 3)  # reshape: 調(diào)整數(shù)組大小
    print(c)
    print()
    # ndarray.itemsize
    # ndarray.itemsize 以字節(jié)的形式返回數(shù)組中每一個元素的大小。
    
    # 例如,一個元素類型為 float64 的數(shù)組 itemsize 屬性值為 8(float64 占用 64 個 bits,
    # 每個字節(jié)長度為 8,所以 64/8,占用 8 個字節(jié)),又如,一個元素類型為 complex32 的數(shù)組 item 屬性為 4(32/8)
    import numpy as np
    # 數(shù)組的 dtype 為 int8(一個字節(jié))
    x = np.array([1, 2, 3, 4, 5], dtype=np.int8)
    print(x.itemsize)
    # 數(shù)組的dtypy現(xiàn)在為float64(八個字節(jié))
    y = np.array([1, 2, 3, 4, 5], dtype=np.float64)
    print(y.itemsize)   # itemsize: 占用字節(jié)個數(shù)
    # 拓展:
    # 整體轉(zhuǎn)化為整數(shù)型
    print(np.array([3.5, 6.6, 8.9], dtype=int))
    # 設(shè)置copy參數(shù),默認(rèn)為True
    a = np.array([2, 5, 6, 8, 9])
    b = np.array(a)                     # 復(fù)制a
    print(b)                            # 控制臺打印b
    print(f'a: {id(a)}, b: {id(b)}')     # 可打印出a和b的內(nèi)存地址
    print('='*20)
    # 類似于列表的引用賦值
    b = a
    print(f'a: {id(a)}, b: {id(b)}')
    # 創(chuàng)建一個矩陣
    lxw5 = np.mat([1, 2, 3, 4, 5])
    print(type(lxw5))   # 矩陣類型: <class 'numpy.matrix'>
    # 復(fù)制出副本,并保持原類型
    yy = np.array(lxw5, subok=True)
    print(type(yy))
    # 只復(fù)制副本,不管其類型
    by = np.array(lxw5, subok=False)    # False: 使用數(shù)組的數(shù)據(jù)類型
    print(type(by))
    print(id(yy), id(by))
    print('='*20)
    # 使用數(shù)組的copy()方法:
    c = np.array([2, 5, 6, 2])
    cp = c.copy()
    print(id(c), id(cp))
    print()
    # ndarray.flags
    '''
    ndarray.flags 返回 ndarray 對象的內(nèi)存信息,包含以下屬性:
    屬性	描述
    C_CONTIGUOUS (C)	數(shù)據(jù)是在一個單一的C風(fēng)格的連續(xù)段中
    F_CONTIGUOUS (F)	數(shù)據(jù)是在一個單一的Fortran風(fēng)格的連續(xù)段中
    OWNDATA (O)	數(shù)組擁有它所使用的內(nèi)存或從另一個對象中借用它
    WRITEABLE (W)	數(shù)據(jù)區(qū)域可以被寫入,將該值設(shè)置為 False,則數(shù)據(jù)為只讀
    ALIGNED (A)	數(shù)據(jù)和所有元素都適當(dāng)?shù)貙R到硬件上
    UPDATEIFCOPY (U)	這個數(shù)組是其它數(shù)組的一個副本,當(dāng)這個數(shù)組被釋放時,原數(shù)組的內(nèi)容將被更新
    
    '''
    import numpy as np
    lxw4 = np.array([1, 3, 5, 6, 7])
    print(lxw4.flags)   # flags: 其內(nèi)存信息

    Pandas學(xué)習(xí)

    當(dāng)然,做這些的前提是首先把文件準(zhǔn)備好

    文件準(zhǔn)備:

    文件太長,故只截取了部分,當(dāng)然,此文件可自行弄類似的也可以!

    python之Numpy與Pandas怎么應(yīng)用

    1 pandas新增數(shù)據(jù)列

    在進(jìn)行數(shù)據(jù)分析時,經(jīng)常需要按照一定條件創(chuàng)造新的數(shù)據(jù)列,然后再進(jìn)一步分析

    • 直接賦值

    • df.apply()方法

    • df.assign()方法

    • 按條件進(jìn)行分組分別賦值

    # 1:
    import pandas as pd
    
    # 讀取數(shù)據(jù)
    lxw = pd.read_csv('sites.csv')
    
    # print(lxw.head())
    df = pd.DataFrame(lxw)
    # print(df)
    df['lrl'] = df['lrl'].map(lambda x: x.rstrip('%'))
    # print(df)
    df.loc[:, 'jf'] = df['yye'] - df['sku_cost_prc']
    # 返回的是Series
    # print(df.head())
    # 2:
    def get_cha(n):
        if n['yye'] > 5:
            return '高價'
        elif n['yye'] < 2:
            return '低價'
        else:
            return '正常價'
    df.loc[:, 'yye_type'] = df.apply(get_cha, axis=1)
    # print(df.head())
    print(df['yye_type'].value_counts())
    # 3:
    # 可同時添加多個新列
    print(df.assign(
        yye_bh=lambda x: x['yye']*2-3,
        sl_zj=lambda x: x['sku_cnt']*6
    ).head(10))
    # 4:
    
    # 按條件先選擇數(shù)據(jù),然后對這部分?jǐn)?shù)據(jù)賦值新列
    # 先創(chuàng)建空列
    df['zyye_type'] = ''
    
    df.loc[df['yye'] - df['sku_cnt']>8, 'zyye_type'] = '高'
    df.loc[df['yye'] - df['sku_cnt'] <= 8, 'zyye_type'] = '低'
    print(df.head())

    下面分別是每個小問對應(yīng)運行效果:

    1:

    python之Numpy與Pandas怎么應(yīng)用

    2:

    python之Numpy與Pandas怎么應(yīng)用

    3:

    python之Numpy與Pandas怎么應(yīng)用

    4:

    python之Numpy與Pandas怎么應(yīng)用

    2 Pandas數(shù)據(jù)統(tǒng)計函數(shù)

    # Pandas數(shù)據(jù)統(tǒng)計函數(shù)
    '''
    1-匯總類統(tǒng)計
    2-唯一去重和按值計數(shù)
    3-相關(guān)系數(shù)和協(xié)方差
    '''
    import pandas as pd
    lxw = pd.read_csv('nba.csv')
    # print(lxw.head(3))
    # 1:
    # 一下子提取所有數(shù)字列統(tǒng)計結(jié)果
    print(lxw.describe())
    # 查看單個Series的數(shù)據(jù)
    print(lxw['Age'].mean())
    # 年齡最大
    print(lxw['Age'].max())
    # 體重最輕
    print(lxw['Weight'].min())
    # 2:
    # 2-1 唯一性去重【一般不用于數(shù)值項,而是枚舉、分類項】
    print(lxw['Height'].unique())
    print(lxw['Team'].unique())
    # 2-2 按值計算
    print(lxw['Age'].value_counts())
    print(lxw['Team'].value_counts())
    # 3:
    # 應(yīng)用:股票漲跌、產(chǎn)品銷量波動等等
    '''
    對于兩個變量X、Y:
    1-協(xié)方差:衡量同向程度程度,如果協(xié)方差為正,說明X、Y同向變化,協(xié)方差越大說明同向程度越高;
            如果協(xié)方差為負(fù),說明X、Y反向運動,協(xié)方差越小說明方向程度越高。
    2-相關(guān)系數(shù):衡量相似度程度,當(dāng)他們的相關(guān)系數(shù)為1時,說明兩個變量變化時的正向相似度最大,
                當(dāng)相關(guān)系數(shù)為-1,說明兩個變化時的反向相似度最大。
                 
    '''
    # 協(xié)方差矩陣:
    print(lxw.cov())
    # 相關(guān)系數(shù)矩陣:
    print(lxw.corr())
    # 單獨查看年齡和體重的相關(guān)系數(shù)
    print(lxw['Age'].corr(lxw['Weight']))
    # Age和Salary的相關(guān)系數(shù)
    print(lxw['Age'].corr(lxw['Salary']))
    # 注意看括號內(nèi)的相減
    print(lxw['Age'].corr(lxw['Salary']-lxw['Weight']))

    1:

    python之Numpy與Pandas怎么應(yīng)用

    2-1:

    python之Numpy與Pandas怎么應(yīng)用

    部分2-2:

    python之Numpy與Pandas怎么應(yīng)用

    3:

    python之Numpy與Pandas怎么應(yīng)用

    3 Pandas對缺失值的處理

    特殊Excel的讀取、清洗、處理:

    # Pandas對缺失值的處理
    '''
    函數(shù)用法:
    1-isnull和notnull: 檢測是否有控制,可用于dataframe和series
    2-dropna: 丟棄、刪除缺失值
    2-1 axis: 刪除行還是列,{0 or 'index', 1 or 'columns'}, default()
    2-2 how: 如果等于any, 則任何值都為空,都刪除;如果等于all所有值都為空,才刪除
    2-3 inplace: 如果為True,則修改當(dāng)前dataframe,否則返回新的dataframe
    2-4 value: 用于填充的值,可以是單個值,或者字典(key是列名,value是值)
    2-5 method: 等于ffill使用前一個不為空的值填充forword fill;等于bfill使用后一個不為空的值填充backword fill
    2-6 axis: 按行還是按列填充,{0 or "index", 1 or "columns"}
    2-7 inplace: 如果為True則修改當(dāng)前dataframe,否則返回新的dataframe
    
    '''
    # 特殊Excel的讀取、清洗、處理
    import pandas as pd
    # 1: 讀取excel時,忽略前幾個空行
    stu = pd.read_excel("Score表.xlsx", skiprows=14)     # skiprows: 控制在幾行以下
    print(stu)
    # 2: 檢測空值
    print(stu.isnull())
    print(stu['成績'].isnull())
    print(stu['成績'].notnull())
    # 篩選沒有空成績的所有行
    print(stu.loc[stu['成績'].notnull(), :])
    # 3: 刪除全是空值的列:
    # axis: 刪除行還是列,{0 or 'index', 1 or 'columns'}, default()
    # how: 如果等于any, 則任何值都為空,都刪除;如果等于all所有值都為空,才刪除
    # inplace: 如果為True則修改當(dāng)前dataframe,否則返回新的dataframe
    stu.dropna(axis="columns",  how="all", inplace=True)
    print(stu)
    # 4: 刪除全是空值的行:
    stu.dropna(axis="index", how="all", inplace=True)
    print(stu)
    # 5: 將成績列為空的填充為0分:
    stu.fillna({"成績": 0})
    print(stu)
    # 同上:
    stu.loc[:, '成績'] = stu['成績'].fillna(0)
    print(stu)
    # 6: 將姓名的缺失值填充【使用前面的有效值填充,用ffill: forward fill】
    stu.loc[:, '姓名'] = stu['姓名'].fillna(method='ffill')
    print(stu)
    # 7: 將清洗好的Excel保存:
    stu.to_excel("Score成績_clean.xlsx", index=False)

    1:

    python之Numpy與Pandas怎么應(yīng)用

    2

    python之Numpy與Pandas怎么應(yīng)用

    python之Numpy與Pandas怎么應(yīng)用

    python之Numpy與Pandas怎么應(yīng)用

    3:

    python之Numpy與Pandas怎么應(yīng)用

    4:

    python之Numpy與Pandas怎么應(yīng)用

    5:

    python之Numpy與Pandas怎么應(yīng)用

    6:

    python之Numpy與Pandas怎么應(yīng)用

    關(guān)于“python之Numpy與Pandas怎么應(yīng)用”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“python之Numpy與Pandas怎么應(yīng)用”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI