欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python數(shù)學(xué)建模之Numpy?應(yīng)用介紹與Pandas學(xué)習(xí)

 更新時(shí)間:2022年07月03日 14:42:11   作者:lxw-pro  
這篇文章主要介紹了python數(shù)學(xué)建模之Numpy?應(yīng)用介紹與Pandas學(xué)習(xí),NumPy?是一個(gè)運(yùn)行速度非??斓臄?shù)學(xué)庫(kù),一個(gè)開(kāi)源的的python科學(xué)計(jì)算庫(kù),主要用于數(shù)組、矩陣計(jì)算

Numpy學(xué)習(xí)

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

1-1Numpy是什么

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

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

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

代碼更簡(jiǎn)潔:

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

 性能更高效:

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

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

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

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

526

# @Software : PyCharm
# Numpy是Python各種數(shù)據(jù)科學(xué)類(lèi)庫(kù)的基礎(chǔ)庫(kù)
# 比如:Pandas,Scipy,Scikit_Learn等
# Numpy應(yīng)用:
'''
NumPy 通常與 SciPy(Scientific Python)和 Matplotlib(繪圖庫(kù))一起使用, 這種組合廣泛用于替代 MatLab,是一個(gè)強(qiáng)大的科學(xué)計(jì)算環(huán)境,有助于我們通過(guò) Python 學(xué)習(xí)數(shù)據(jù)科學(xué)或者機(jī)器學(xué)習(xí)。
SciPy 是一個(gè)開(kāi)源的 Python 算法庫(kù)和數(shù)學(xué)工具包。
SciPy 包含的模塊有最優(yōu)化、線性代數(shù)、積分、插值、特殊函數(shù)、快速傅里葉變換、信號(hào)處理和圖像處理、常微分方程求解和其他科學(xué)與工程中常用的計(jì)算。
Matplotlib 是 Python 編程語(yǔ)言及其數(shù)值數(shù)學(xué)擴(kuò)展包 NumPy 的可視化操作界面。它為利用通用的圖形用戶(hù)界面工具包,如 Tkinter, wxPython, Qt 或 GTK+ 向應(yīng)用程序嵌入式繪圖提供了應(yīng)用程序接口(API)。

'''
# 安裝 NumPy 最簡(jiǎn)單的方法就是使用 pip 工具:
# pip3 install --user numpy scipy matplotlib
# --user 選項(xiàng)可以設(shè)置只安裝在當(dāng)前的用戶(hù)下,而不是寫(xiě)入到系統(tǒng)目錄。
# 默認(rèn)情況使用國(guó)外線路,國(guó)外太慢,我們使用清華的鏡像就可以:
# pip install numpy scipy matplotlib -i.csv https://pypi.tuna.tsinghua.edu.cn/simple
# 這種pip安裝是一種最簡(jiǎn)單、最輕量級(jí)的方法,當(dāng)然,這里的前提是有Python包管理器
# 如若不行,可以安裝Anaconda【目前應(yīng)用較廣泛】,這是一個(gè)開(kāi)源的Python發(fā)行版
# 安裝Anaconda地址:https://www.anaconda.com/
# 安裝驗(yàn)證
# 測(cè)試是否安裝成功
from numpy import *     # 導(dǎo)入 numpy 庫(kù)
print(eye(4))           # 生成對(duì)角矩陣
# 查看版本:
import numpy as np
print(np.__version__)
# 實(shí)現(xiàn)2個(gè)數(shù)組的加法:
# 1-原生Python實(shí)現(xiàn)
def Py_sum(n):
    a = [i**2 for i in range(n)]
    b = [i**3 for i in range(n)]
    # 創(chuàng)建一個(gè)空列表,便于后續(xù)存儲(chǔ)
    ab_sum = []
    for i in range(n):
        # 將a、b中對(duì)應(yīng)的元素相加
        ab_sum.append(a[i]+b[i])
    return ab_sum
# 調(diào)用實(shí)現(xiàn)函數(shù)
print(Py_sum(10))
# 2-Numpy實(shí)現(xiàn):
def np_sum(n):
    c = np.arange(n) ** 2
    d = np.arange(n) ** 3
    return c+d
print(np_sum(10))
# 易看出使用Numpy代碼簡(jiǎn)潔且運(yùn)行效率快
# 測(cè)試1000,10W,以及100W的運(yùn)行時(shí)間
# 做繪圖對(duì)比:
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類(lèi)型數(shù)據(jù)
ch_lxw = pd.DataFrame({
    'py_times': py_times,
    'np_times': np_times    # 可加逗號(hào)
})
print(ch_lxw)
import matplotlib.pyplot as plt
# 線性圖
print(ch_lxw.plot())
# 柱狀圖
print(ch_lxw.plot.bar())
# 簡(jiǎn)易箱線圖
print(ch_lxw.boxplot)

plt.show()

線性圖運(yùn)行效果如下:

63

柱狀圖運(yùn)行效果如下:

528

2 NumPy Ndarray 對(duì)象

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

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

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

  • 一個(gè)指向數(shù)據(jù)(內(nèi)存或內(nèi)存映射文件中的一塊數(shù)據(jù))的指針;
  • 數(shù)據(jù)類(lèi)型或 dtype,描述在數(shù)組中的固定大小值的格子;
  • 一個(gè)表示數(shù)組形狀(shape)的元組,表示各維度大小的元組;
  • 一個(gè)跨度元組(stride),其中的整數(shù)指的是為了前進(jìn)到當(dāng)前維度下一個(gè)元素需要"跨過(guò)"的字節(jié)數(shù)。

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

'''
創(chuàng)建一個(gè) ndarray 只需調(diào)用 NumPy 的 array 函數(shù)即可:
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
參數(shù)說(shuō)明:

名稱(chēng)	描述
object	表示數(shù)組或嵌套的數(shù)列
dtype	表示數(shù)組元素的數(shù)據(jù)類(lèi)型,可選
copy	表示對(duì)象是否需要復(fù)制,可選
order	創(chuàng)建數(shù)組的樣式,C為行方向,F(xiàn)為列方向,A為任意方向(默認(rèn))
subok	默認(rèn)返回一個(gè)與基類(lèi)類(lèi)型一致的數(shù)組
ndmin	指定生成數(shù)組的最小維度
'''
# ndarray 對(duì)象由計(jì)算機(jī)內(nèi)存的連續(xù)一維部分組成,并結(jié)合索引模式,將每個(gè)元素映射到內(nèi)存塊中的一個(gè)位置。
# 內(nèi)存塊以行順序(C樣式)或列順序(FORTRAN或MatLab風(fēng)格,即前述的F樣式)來(lái)保存元素

# 學(xué)好Numpy,便于后期對(duì)Pandas的數(shù)據(jù)處理
# 1:一維
import numpy as np
lxw = np.array([5, 2, 0])
print(lxw)
print()
# 2: 多于一個(gè)維度
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ù)類(lèi)型[complex 復(fù)數(shù)】
print(lxw4)

3 Numpy 數(shù)據(jù)類(lèi)型

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

常用 NumPy 基本類(lèi)型:

名稱(chēng)  描述
bool_ :【布爾型數(shù)據(jù)類(lèi)型(True 或者 False)】
int_ : 【默認(rèn)的整數(shù)類(lèi)型(類(lèi)似于 C 語(yǔ)言中的 long,int32 或 int64)】
intc :【與 C 的 int 類(lèi)型一樣,一般是 int32 或 int 64】
intp :【用于索引的整數(shù)類(lèi)型(類(lèi)似于 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 :【無(wú)符號(hào)整數(shù)(0 to 255)】
uint16 :【無(wú)符號(hào)整數(shù)(0 to 65535)】
uint32 :【無(wú)符號(hào)整數(shù)(0 to 4294967295)】
uint64 :【無(wú)符號(hào)整數(shù)(0 to 18446744073709551615)】
float_ float64 :【類(lèi)型的簡(jiǎn)寫(xiě)】
float16 :【半精度浮點(diǎn)數(shù),包括:1 個(gè)符號(hào)位,5 個(gè)指數(shù)位,10 個(gè)尾數(shù)位】
float32 :【單精度浮點(diǎn)數(shù),包括:1 個(gè)符號(hào)位,8 個(gè)指數(shù)位,23 個(gè)尾數(shù)位】
float64 :【雙精度浮點(diǎn)數(shù),包括:1 個(gè)符號(hào)位,11 個(gè)指數(shù)位,52 個(gè)尾數(shù)位】
complex_ complex128: 【類(lèi)型的簡(jiǎn)寫(xiě),即 128 位復(fù)數(shù)】
complex64 :【復(fù)數(shù),表示雙 32 位浮點(diǎn)數(shù)(實(shí)數(shù)部分和虛數(shù)部分)】
complex128 :【復(fù)數(shù),表示雙 64 位浮點(diǎn)數(shù)(實(shí)數(shù)部分和虛數(shù)部分)】

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

'''
# numpy 的數(shù)值類(lèi)型實(shí)際上是 dtype 對(duì)象的實(shí)例,并對(duì)應(yīng)唯一的字符,包括 np.bool_,np.int32,np.float32,等等。
'''
# Numpy 類(lèi)型對(duì)象:
'''
dtype 對(duì)象是使用以下語(yǔ)法構(gòu)造的:

numpy.dtype(object, align, copy)

object - 要轉(zhuǎn)換為的數(shù)據(jù)類(lèi)型對(duì)象
align - 如果為 true,填充字段使其類(lèi)似 C 的結(jié)構(gòu)體。
copy - 復(fù)制 dtype 對(duì)象 ,如果為 false,則是對(duì)內(nèi)置數(shù)據(jù)類(lèi)型對(duì)象的引用

'''
# 1: 使用標(biāo)量類(lèi)型
import numpy as np
lxw = np.dtype(np.int32)
print(lxw)
print()
# 2: int8, int16, int32, int64 四種數(shù)據(jù)類(lèi)型可以使用字符串 '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ù)類(lèi)型
import numpy as np
lxw4 = np.dtype([('age', np.int8)])     # i1
print(lxw4)
print()
# 5: 將數(shù)據(jù)類(lèi)型應(yīng)用于 ndarray 對(duì)象
import numpy as np
lxw5 = np.dtype([('age', np.int32)])
a = np.array([(10,), (20,), (30,)], dtype=lxw5)
print(a)
print()
# 6: 類(lèi)型字段名可以用于存取實(shí)際的 age 列
import numpy as np
lxw6 = np.dtype([('age', np.int64)])
a = np.array([(10,), (20,), (30,)], dtype=lxw6)
print(a['age'])
print()
# 7: 定義一個(gè)結(jié)構(gòu)化數(shù)據(jù)類(lèi)型 student,包含字符串字段 name,整數(shù)字段 age,及浮點(diǎn)字段 marks,并將這個(gè) dtype 應(yīng)用到 ndarray 對(duì)象
import numpy as np
student = np.dtype([('name', 'S20'), ('age', 'i2'), ('marks', 'f4')])
print(student)      # 運(yùn)行結(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)          # 運(yùn)行結(jié)果:[(b'lxw', 21, 52.) (b'cw', 22, 58.)]
# 每個(gè)內(nèi)建類(lèi)型都有一個(gè)唯一定義它的字符代碼,如下:
'''
字符	對(duì)應(yīng)類(lèi)型
b	布爾型
i.csv	(有符號(hào)) 整型
u	無(wú)符號(hào)整型 integer
f	浮點(diǎn)型
c	復(fù)數(shù)浮點(diǎn)型
m	timedelta(時(shí)間間隔)
M	datetime(日期時(shí)間)
O	(Python) 對(duì)象
S, a	(byte-)字符串
U	Unicode
V	原始數(shù)據(jù) (void)
'''

4 Numpy 數(shù)組屬性

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

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

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

# NumPy 的數(shù)組中比較重要 ndarray 對(duì)象屬性有:
'''
屬性	            說(shuō)明
ndarray.ndim	秩,即軸的數(shù)量或維度的數(shù)量
ndarray.shape	數(shù)組的維度,對(duì)于矩陣,n 行 m 列
ndarray.size	數(shù)組元素的總個(gè)數(shù),相當(dāng)于 .shape 中 n*m 的值
ndarray.dtype	ndarray 對(duì)象的元素類(lèi)型
ndarray.itemsize	ndarray 對(duì)象中每個(gè)元素的大小,以字節(jié)為單位
ndarray.flags	ndarray 對(duì)象的內(nèi)存信息
ndarray.real	ndarray元素的實(shí)部
ndarray.imag	ndarray 元素的虛部
ndarray.data	包含實(shí)際數(shù)組元素的緩沖區(qū),由于一般通過(guò)數(shù)組的索引獲取元素,所以通常不需要使用這個(gè)屬性。

'''
# ndarray.ndim
# ndarray.ndim 用于返回?cái)?shù)組的維數(shù),等于秩。
import numpy as np
lxw = np.arange(36)
print(lxw.ndim)             # a 現(xiàn)只有一個(gè)維度
# 現(xiàn)調(diào)整其大小
a = lxw.reshape(2, 6, 3)    # 現(xiàn)在擁有三個(gè)維度
print(a.ndim)
print()
# ndarray.shape
# ndarray.shape 表示數(shù)組的維度,返回一個(gè)元組,這個(gè)元組的長(zhǎng)度就是維度的數(shù)目,即 ndim 屬性(秩)。比如,一個(gè)二維數(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ù)來(lái)調(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é)的形式返回?cái)?shù)組中每一個(gè)元素的大小。

# 例如,一個(gè)元素類(lèi)型為 float64 的數(shù)組 itemsize 屬性值為 8(float64 占用 64 個(gè) bits,
# 每個(gè)字節(jié)長(zhǎng)度為 8,所以 64/8,占用 8 個(gè)字節(jié)),又如,一個(gè)元素類(lèi)型為 complex32 的數(shù)組 item 屬性為 4(32/8)
import numpy as np
# 數(shù)組的 dtype 為 int8(一個(gè)字節(jié))
x = np.array([1, 2, 3, 4, 5], dtype=np.int8)
print(x.itemsize)
# 數(shù)組的dtypy現(xiàn)在為float64(八個(gè)字節(jié))
y = np.array([1, 2, 3, 4, 5], dtype=np.float64)
print(y.itemsize)   # itemsize: 占用字節(jié)個(gè)數(shù)
# 拓展:
# 整體轉(zhuǎn)化為整數(shù)型
print(np.array([3.5, 6.6, 8.9], dtype=int))
# 設(shè)置copy參數(shù),默認(rèn)為T(mén)rue
a = np.array([2, 5, 6, 8, 9])
b = np.array(a)                     # 復(fù)制a
print(b)                            # 控制臺(tái)打印b
print(f'a: {id(a)}, b: {id(b)}')     # 可打印出a和b的內(nèi)存地址
print('='*20)
# 類(lèi)似于列表的引用賦值
b = a
print(f'a: {id(a)}, b: {id(b)}')
# 創(chuàng)建一個(gè)矩陣
lxw5 = np.mat([1, 2, 3, 4, 5])
print(type(lxw5))   # 矩陣類(lèi)型: <class 'numpy.matrix'>
# 復(fù)制出副本,并保持原類(lèi)型
yy = np.array(lxw5, subok=True)
print(type(yy))
# 只復(fù)制副本,不管其類(lèi)型
by = np.array(lxw5, subok=False)    # False: 使用數(shù)組的數(shù)據(jù)類(lèi)型
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 對(duì)象的內(nèi)存信息,包含以下屬性:
屬性	描述
C_CONTIGUOUS (C)	數(shù)據(jù)是在一個(gè)單一的C風(fēng)格的連續(xù)段中
F_CONTIGUOUS (F)	數(shù)據(jù)是在一個(gè)單一的Fortran風(fēng)格的連續(xù)段中
OWNDATA (O)	數(shù)組擁有它所使用的內(nèi)存或從另一個(gè)對(duì)象中借用它
WRITEABLE (W)	數(shù)據(jù)區(qū)域可以被寫(xiě)入,將該值設(shè)置為 False,則數(shù)據(jù)為只讀
ALIGNED (A)	數(shù)據(jù)和所有元素都適當(dāng)?shù)貙?duì)齊到硬件上
UPDATEIFCOPY (U)	這個(gè)數(shù)組是其它數(shù)組的一個(gè)副本,當(dāng)這個(gè)數(shù)組被釋放時(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)備:

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

在這里插入圖片描述

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

在進(jìn)行數(shù)據(jù)分析時(shí),經(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 '高價(jià)'
    elif n['yye'] < 2:
        return '低價(jià)'
    else:
        return '正常價(jià)'
df.loc[:, 'yye_type'] = df.apply(get_cha, axis=1)
# print(df.head())
print(df['yye_type'].value_counts())
# 3:
# 可同時(shí)添加多個(gè)新列
print(df.assign(
    yye_bh=lambda x: x['yye']*2-3,
    sl_zj=lambda x: x['sku_cnt']*6
).head(10))
# 4:

# 按條件先選擇數(shù)據(jù),然后對(duì)這部分?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())

下面分別是每個(gè)小問(wèn)對(duì)應(yīng)運(yùn)行效果:

1:

在這里插入圖片描述

2:

在這里插入圖片描述

3:

在這里插入圖片描述

4:

在這里插入圖片描述

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

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

1:

在這里插入圖片描述

2-1:

在這里插入圖片描述

部分2-2:

在這里插入圖片描述

3:

在這里插入圖片描述

3 Pandas對(duì)缺失值的處理

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

# Pandas對(duì)缺失值的處理
'''
函數(shù)用法:
1-isnull和notnull: 檢測(cè)是否有控制,可用于dataframe和series
2-dropna: 丟棄、刪除缺失值
2-1 axis: 刪除行還是列,{0 or 'index', 1 or 'columns'}, default()
2-2 how: 如果等于any, 則任何值都為空,都刪除;如果等于all所有值都為空,才刪除
2-3 inplace: 如果為T(mén)rue,則修改當(dāng)前dataframe,否則返回新的dataframe
2-4 value: 用于填充的值,可以是單個(gè)值,或者字典(key是列名,value是值)
2-5 method: 等于ffill使用前一個(gè)不為空的值填充forword fill;等于bfill使用后一個(gè)不為空的值填充backword fill
2-6 axis: 按行還是按列填充,{0 or "index", 1 or "columns"}
2-7 inplace: 如果為T(mén)rue則修改當(dāng)前dataframe,否則返回新的dataframe

'''
# 特殊Excel的讀取、清洗、處理
import pandas as pd
# 1: 讀取excel時(shí),忽略前幾個(gè)空行
stu = pd.read_excel("Score表.xlsx", skiprows=14)     # skiprows: 控制在幾行以下
print(stu)
# 2: 檢測(cè)空值
print(stu.isnull())
print(stu['成績(jī)'].isnull())
print(stu['成績(jī)'].notnull())
# 篩選沒(méi)有空成績(jī)的所有行
print(stu.loc[stu['成績(jī)'].notnull(), :])
# 3: 刪除全是空值的列:
# axis: 刪除行還是列,{0 or 'index', 1 or 'columns'}, default()
# how: 如果等于any, 則任何值都為空,都刪除;如果等于all所有值都為空,才刪除
# inplace: 如果為T(mén)rue則修改當(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: 將成績(jī)列為空的填充為0分:
stu.fillna({"成績(jī)": 0})
print(stu)
# 同上:
stu.loc[:, '成績(jī)'] = stu['成績(jī)'].fillna(0)
print(stu)
# 6: 將姓名的缺失值填充【使用前面的有效值填充,用ffill: forward fill】
stu.loc[:, '姓名'] = stu['姓名'].fillna(method='ffill')
print(stu)
# 7: 將清洗好的Excel保存:
stu.to_excel("Score成績(jī)_clean.xlsx", index=False)

1:

在這里插入圖片描述

2

在這里插入圖片描述

在這里插入圖片描述![

在這里插入圖片描述

3:

在這里插入圖片描述

4:

在這里插入圖片描述

5:

在這里插入圖片描述

6:

在這里插入圖片描述

總結(jié)

今天我學(xué)習(xí)了處理python數(shù)據(jù)分析的另一個(gè)庫(kù)——Numpy,剛開(kāi)始接觸這個(gè)庫(kù)的時(shí)候真的感覺(jué)沒(méi)什么意思,可學(xué)的越深入一點(diǎn),越覺(jué)得越有意思,當(dāng)然,昨天的那個(gè)庫(kù)也挺不錯(cuò)的,主要是Numpy這個(gè)是學(xué)Pandas的基礎(chǔ),得打好基礎(chǔ),當(dāng)然也不會(huì)落下Pandas的學(xué)習(xí)!

到此這篇關(guān)于python數(shù)學(xué)建模之Numpy 應(yīng)用介紹與Pandas學(xué)習(xí)的文章就介紹到這了,更多相關(guān)python Numpy 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Windows安裝Anaconda3的方法及使用過(guò)程詳解

    Windows安裝Anaconda3的方法及使用過(guò)程詳解

    今天帶大家學(xué)習(xí)的是關(guān)于Python的相關(guān)知識(shí),文章圍繞著在windows上Anaconda3的安裝方法及使用展開(kāi),文中有非常詳細(xì)的介紹,需要的朋友可以參考下
    2021-06-06
  • Python模塊glob函數(shù)示例詳解教程

    Python模塊glob函數(shù)示例詳解教程

    這篇文章主要介紹了Python模塊glob函數(shù)的示例詳解教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-10-10
  • python?pyvis庫(kù)創(chuàng)建可視化交互式網(wǎng)絡(luò)圖

    python?pyvis庫(kù)創(chuàng)建可視化交互式網(wǎng)絡(luò)圖

    這篇文章主要為大家介紹了python?pyvis庫(kù)創(chuàng)建可視化交互式網(wǎng)絡(luò)圖,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • python中的[1:]、[::-1]、X[:,m:n]和X[1,:]的使用

    python中的[1:]、[::-1]、X[:,m:n]和X[1,:]的使用

    本文主要介紹了python中的[1:]、[::-1]、X[:,m:n]和X[1,:]的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 使用Python保存網(wǎng)頁(yè)上的圖片或者保存頁(yè)面為截圖

    使用Python保存網(wǎng)頁(yè)上的圖片或者保存頁(yè)面為截圖

    這篇文章主要介紹了使用Python保存網(wǎng)頁(yè)上的圖片或者保存頁(yè)面為截圖的方法,保存網(wǎng)頁(yè)圖片主要用到urllib模塊,即簡(jiǎn)單的爬蟲(chóng)原理,需要的朋友可以參考下
    2016-03-03
  • python中pycurl庫(kù)的用法實(shí)例

    python中pycurl庫(kù)的用法實(shí)例

    這篇文章主要介紹了python中pycurl庫(kù)的用法實(shí)例,可實(shí)現(xiàn)從指定網(wǎng)址讀取網(wǎng)頁(yè)的功能,需要的朋友可以參考下
    2014-09-09
  • 淺談對(duì)python中if、elif、else的誤解

    淺談對(duì)python中if、elif、else的誤解

    這篇文章主要介紹了淺談對(duì)python中if、elif、else的誤解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • python 多個(gè)參數(shù)不為空校驗(yàn)方法

    python 多個(gè)參數(shù)不為空校驗(yàn)方法

    今天小編就為大家分享一篇python 多個(gè)參數(shù)不為空校驗(yàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • Python設(shè)計(jì)模式之原型模式實(shí)例詳解

    Python設(shè)計(jì)模式之原型模式實(shí)例詳解

    這篇文章主要介紹了Python設(shè)計(jì)模式之原型模式,結(jié)合實(shí)例形式較為詳細(xì)的分析了Python原型模式的概念、原理、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-01-01
  • Python線程池模塊ThreadPoolExecutor用法分析

    Python線程池模塊ThreadPoolExecutor用法分析

    這篇文章主要介紹了Python線程池模塊ThreadPoolExecutor用法,結(jié)合實(shí)例形式分析了Python線程池模塊ThreadPoolExecutor的導(dǎo)入與基本使用方法,需要的朋友可以參考下
    2018-12-12

最新評(píng)論