Python - 數據分析三劍客之NumPy

在Python中,NumPyPandasMatplotlib是進行數據分析和數據可視化的三個核心庫。它們各自有不同的功能,但經常一起使用來處理和分析數據。

1、NumPy

NumPy(Numerical Python)是一個用于科學計算的庫,提供了高性能的多維數組對象以及這些數組的操作工具。它是Pandas和Matplotlib的基礎。

核心功能:提供高性能的多維數組對象和數學運算工具

主要功能

  • 創建和操作多維數組

  • 數學函數(如線性代數、傅里葉變換等)

關鍵特性:

  • 廣播機制:不同形狀數組間的運算

  • 向量化操作:避免顯式循環

  • 線性代數:矩陣運算、特征值分解等

import numpy as np# 創建一個數組
arr = np.array([1, 2, 3, 4, 5])
print(arr)# 創建二維數組
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])
print(arr_2d)

2、Pandas

核心功能:提供高效的數據結構和數據分析工具

Pandas?是一個強大的數據分析工具庫,提供了快速、靈活和表達式豐富的數據結構,旨在使“關系”或“標簽”數據的處理既簡單又直觀。

主要功能

  • 數據清洗和準備

  • 數據分析和操作

  • 數據聚合和分組

  • 時間序列功能

關鍵特性

  • DataFrame:二維表格型數據結構

  • 時間序列:強大的時間處理功能

  • 數據清洗:處理缺失值、重復值等

  • 數據I/O:支持多種文件格式讀寫

import pandas as pd
import numpy as np# 創建一個DataFrame
data = {'Name': ['Tom', 'Nick', 'Krish', 'Jack'],
'Age': [20, 21, 19, 18]}
df = pd.DataFrame(data)
print(df)# 讀取CSV文件
df = pd.read_csv('data.csv')
print(df.head()) # 顯示前幾行數據

3、Matplotlib

核心功能:Python 的基礎繪圖庫

Matplotlib?是一個繪圖庫,用于創建靜態、動態和交互式的可視化。它是Python中最常用的繪圖庫之一。

主要功能

  • 創建各種靜態、動態和交互式圖表和圖形

  • 支持多種圖表類型,如線圖、散點圖、條形圖等

  • 高度可定制的外觀和布局選項

關鍵特性

  • 多種圖表類型:線圖、柱狀圖、散點圖、餅圖等

  • 高度可定制:幾乎可以調整所有視覺元素

  • 面向對象和MATLAB風格兩種API

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd# 使用Pandas創建數據
data = {'Name': ['Tom', 'Nick', 'Krish', 'Jack'], 'Age': [20, 21, 19, 18]}
df = pd.DataFrame(data)# 使用Matplotlib繪制條形圖
plt.bar(df['Name'], df['Age'])
plt.xlabel('Name')
plt.ylabel('Age')
plt.title('Age Distribution')
plt.show()

結合使用這三個庫可以高效地進行數據處理、分析和可視化。可以使用Pandas來加載和處理數據,使用NumPy進行數據處理(例如數組操作),然后使用Matplotlib來創建圖表以展示分析結果

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt# 1. 使用NumPy進行數值計算
data = np.random.randn(100, 4)# 2. 使用Pandas進行數據整理和分析
df = pd.DataFrame(data, columns=['A', 'B', 'C', 'D'])
summary = df.describe()# 3. 使用Matplotlib可視化結果
df.plot(kind='box')
plt.title('數據分布')
plt.show()
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt# 使用Pandas讀取數據并處理數據
df = pd.read_csv('data.csv') # 假設有一個CSV文件data.csv包含一些數據
df['NewColumn'] = df['Column1'] + df['Column2'] # 添加新列作為示例操作
df = df[df['NewColumn'] > 100] # 數據過濾示例# 使用Matplotlib進行可視化
plt.figure(figsize=(10, 6)) # 設置圖表大小
plt.plot(df['Date'], df['NewColumn'], marker='o') # 繪制時間序列數據,例如日期與某值的趨勢圖
plt.xlabel('Date') # X軸標簽
plt.ylabel('Value') # Y軸標簽
plt.title('Value Trend Over Time') # 圖表標題
plt.grid(True) # 顯示網格線,提高可讀性
plt.show() # 顯示圖表

一、安裝NumPy環境

1、使用venv虛擬環境

在Python中使用venv虛擬環境有幾個關鍵的好處,這使得它成為管理項目依賴和環境的首選方法。

1、隔離性

使用venv可以創建一個獨立的Python環境,這意味著你可以為不同的項目安裝不同版本的庫,而不會相互干擾。這對于避免依賴沖突非常有用。

2、版本控制

你可以為每個項目指定特定版本的Python解釋器和庫。這樣,你可以確保項目的穩定性和可重復性,無論在哪個環境中運行代碼。

3、簡化依賴管理

使用venv,你可以很容易地安裝、更新或刪除項目所需的庫,而不會影響到系統級的Python環境。這大大簡化了依賴管理。

4、易于分享:

當你需要將項目分享給其他人或在不同的機器上工作時,venv可以確保所有必要的依賴都被包含在虛擬環境中,使得項目的設置和運行變得簡單。

創建虛擬環境
  1. 打開終端或命令提示符。

  2. 導航到你的項目目錄。

  3. 運行以下命令來創建一個虛擬環境(例如,名為venv):

# 使用 virtualenv 創建虛擬環
virtualenv .venv# 使用 Python 自帶的 venv 模
python -m venv .venv
激活虛擬環境
# 在Windows上:
venv\Scripts\activate# 在macOS和Linux上:
source venv/bin/activate
2、安裝 NumPy;Pandas;Matplotlib

首先,確保你的系統上已經安裝了Python。你可以通過在終端或命令提示符中輸入python --versionpython3 --version來檢查Python的版本

使用Python虛擬環境:為了避免系統級的包沖突,建議使用虛擬環境。你可以使用venv(Python 3.3及以上版本內置)或conda(Anaconda/Miniconda)來創建和管理虛擬環境。例如,使用venv

cd .venv
# 切換到虛擬環境下
cd Scripts  
# 激活虛擬環境  
activate  # 安裝numpy,pandas,matplotlib;使用其他鏡像源,如阿里云、清華源、豆瓣
# 使用阿里云鏡像源
pip install numpy pandas matplotlib -i https://mirrors.aliyun.com/pypi/simple/
# 使用清華源
pip install numpy pandas matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
# 使用豆瓣鏡像源
pip install numpy pandas matplotlib -i https://pypi.douban.com/simple  # 不使用鏡像源(默認官方源),如果你的網絡環境可以訪問官方pypi源,可以直接使用默認源安裝:
pip install numpy pandas matplotlib

3、安裝 ipyhton(更好的交互式Python編程環境)
# 使用阿里云鏡像源
pip install ipython -i https://mirrors.aliyun.com/pypi/simple/

4、安裝 Jupyter Notebook
# 使用阿里云鏡像源
pip install jupyter -i https://mirrors.aliyun.com/pypi/simple/

安裝之后,輸入jupyter notebook(切換到項目目錄下,再執行jupyter notebook命令)

jupyter啟動默認瀏覽器

在當前項目目錄下右擊,選擇【New Notebook】

然后寫入Python代碼,如輸入print('hello'),運行(Ctrl + Enter)

Jupyter Notebook有兩種鍵盤輸入模式

命令模式:鍵盤輸入運行程序命令;這時單元格框線為藍色
編輯模式:允許你往單元格中鍵入代碼或文本;這時單元格框線是綠色

Jupyter Notebook常用快捷鍵

【1】編輯模式(Enter 鍵啟動)

Tab:代碼補全或縮進

Shift + Tab:提示

Shift + Enter:允許本單元,選中下一單元

Ctrl + Enter:運行本單元

Alt + Enter:運行本單元,在下面插入一單元

【2】命令模式(按鍵 Esc 啟動)

Shift + Enter:運行本單元,選中下個單元

Ctrl + Enter:運行本單元

Alt + Enter:運行本單元,在其下插入新單元

Y: 單元轉入代碼狀態

M: 單元轉入 markdown 狀態

A: 在上方插入新單元

B: 在下方插入新單元

DD: 刪除選中的單元

二、NumPy使用

在Python中,ndarray(ndarray的全名是NumPy的“N-dimensional array”;N維數組)是NumPy庫中一個非常重要的數據結構,用于存儲多維數組。它提供了大量的數學和邏輯函數操作,使得數組的創建、修改、索引和計算變得更加方便和高效。

1、創建ndarray

【1】使用np.array()由python list創建

注:

  • numpy默認ndarray的所有元素的類型是相同的
  • 如果傳進來的列表中包含不同的類型,則統一為同一類型,優先級:str>float>int
  • ndarray的常見數據類型:
    • int: int8、uint8、int16、int32、int64
    • float: float16、float32、float64
    • str: 字符串

【2】使用np.routines函數創建

1、np.ones(shape, dtype=None, order='C')

2、np.zeros(shape, dtype=float, order='C')

3、np.full(shape, fill_value, dtype=None, order='C')

4、np.eye(N, M=None, k=0, dtype=float)

5、np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

6、np.arange([start, ]stop, [step, ]dtype=None)

7、np.random.randint(low, high=None, size=None, dtype='l')

8、np,random.randn(d0, d1, ..., dn)

9、np.random.normal(loc=0.0, scale=1.0, size=None)

10、np.random.random(size=None)

11、np.random.random(d0, d1, ..., dn)

2、ndarray屬性

1、ndim:維度

2、shape:形狀

3、size:總長度

4、dtype:元素類型

3、ndarray基本操作

1、索引

根據索引修改數據

2、切片

反轉;兩個::進行切片

左右反轉

上下反轉

顏色反轉

3、變形

4、級聯

級聯基本要求:垂直級聯,列數一定要相同;水平級聯,行數一定要相同

垂直級聯:要求列數一致

水平級聯:要求行數一致

np.hstack和np.vstack

5、切分

6、副本

運行效率

4、ndarray聚合操作

1、求和np.sum

2、最大/最小值:np.max/np.min

3、其它聚合操作

  • np.min 最小值
  • np.max 最大值
  • np.mean 平均值
  • np.average 平均值
  • np.median 中位數
  • np.percentile 百分位數
  • np.argmin 最小值對應的下標
  • np.argmax 最大值對應的下標
  • np.std 標準差
  • np.var 方差
  • np.power 次方,求冪
  • np.argwhere 按條件查找

4、操作文件

使用panda打開height.csv文件獲取其中數據

5、ndarray矩陣操作

1、基本矩陣操作

【1】算術運算符:加減乘除

【2】矩陣積np.dot()

2、廣播機制

6、ndarray排序

1、快速排序

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/912607.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/912607.shtml
英文地址,請注明出處:http://en.pswp.cn/news/912607.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

百度文庫智能PPT月訪問量超3400萬,用戶規模翻倍增長

6月27日,極光旗下月狐數據發布《2025年智能PPT行業市場研究報告》。報告顯示,智能PPT市場整體增速年同比超50%,市場玩家成倍激增。其中,百度文庫智能PPT月訪問量超3400萬、位列全球第一,市場份額在中國位于斷崖式領先。…

遠眺科技工業園區數字孿生方案,如何實現智能管理升級?

面對工業園區日益復雜的能耗管控、環境監測、安全運維需求,傳統管理模式已經難以為繼。而數字孿生技術,正好成為解決上述問題的關鍵“解藥”。本文將以遠眺工業園區數字孿生項目為例,為您剖析數字孿生技術如何解決數據孤島、響應滯后等痛點。…

成都芯谷金融中心文化科技園:打造區域科技活力

在成渝地區雙城經濟圈建設加速推進的背景下,成都芯谷金融中心文化科技園正以"科技文化金融"的融合創新模式,重塑區域產業生態,成為驅動城市高質量發展的活力源泉。這座總建筑面積達45萬平方米的產城綜合體,不僅承載著雙…

Claude Code 全面指南:從安裝到高效開發的實用教程

在 AI 助手逐漸成為開發者標配的今天,Claude Code 作為 Anthropic 推出的一款智能編程工具,憑借其強大的自然語言交互和自動化能力,正迅速改變著軟件開發的方式。本文將詳細介紹 Claude Code 的功能、安裝配置、使用方法及安全與成本管理&…

在Flutter中生成App Bundle并上架Google Play

Ran tool 要在Flutter中生成App Bundle并上架Google Play,請按照以下步驟操作: 1. 準備簽名密鑰 首先需要創建一個密鑰庫用于簽名: keytool -genkey -v -keystore upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias …

kubernetes pod調度基礎

目錄 Replication Controller 和 ReplicaSet 標簽與標簽選擇器 無狀態應用管理Deployment 有狀態應用管理StatefulSet 守護進程集DaemonSet Replication Controller 和 ReplicaSet RC用來確保Pod副本數達到期望值,這樣可以確保一個或多七個同類Pod總是可用的 如果存在的P…

Vue 3 響應式核心源碼詳解(基于 @vue/reactivity)

🧬 Vue 3 響應式核心源碼詳解(基于 vue/reactivity) ?? 整理不易,記得點贊、收藏、關注,揭開 Vue 響應式的神秘面紗! 🧭 一、源碼結構總覽(relevant files) Vue 的響應…

編寫shell腳本掃描工具,掃描服務器開放了哪些端口(再嘗試用python編寫一個)

先將需要掃描的服務器的端口顯示出來,然后再顯示哪些ip地址對應的服務器的哪些端口已開放或未開放 下面這個shell腳本可以同時掃描多個ip對應的多個服務器的多個端口是否開放: 以下是運行結果: nc 和 nmap 掃描別人的機器開放了哪些端口 ne…

java JNDI高版本繞過 工具介紹 自動化bypass

JNDI高版本rce失效問題 原因: 主要還是協議控制高版本的一般都會關閉如rmi,ldap等協議遠程加載的類 RMI限制: com.sun.jndi.rmi.object.trustURLCodebase、com.sun.jndi.cosnaming.object.trustURLCodebase的默認值變為false,即…

JavaWeb筆記02

三、數據庫設計 1_簡介 1.數據庫設計設計什么? 有哪些表 表里有哪些字段 表和表之間是什么關系 2.表關系有哪幾種? 一對一 一對多(多對一) 多對多 2_多表關系實現 表關系之一對多 一對多 (多對一): 如:部門表和員…

Junit_注解_枚舉

文章目錄 一:Junit單元測試測試分類:Junit的使用Before_After 二:注解什么是注解文檔相關的注解IDEA中的javadoc使用:JDK內置的3個注解自定義注解 元注解RetentionTargetRepeatableDocumented(用的很少)Inh…

將N8N配置為服務【ubuntu】

docker模式不在此討論。這里討論的是node安裝為n8n后,如何安裝為服務: 安裝NODE(略) 安裝N8N 一個命令解決: npm install n8n -g 安裝服務 vi /etc/systemd/system/n8n.service內容如下 [Unit] Descriptionn8…

Java后端調用外部接口標準流程詳解

在Java后端開發中,調用外部HTTP接口(如第三方平臺API、云服務、微服務等)是非常常見的需求。實現這個功能通常遵循一套標準的流程: 1. 準備DTO類(數據傳輸對象) 作用: DTO(Data Tra…

星火燎原 數智新生 —— 《GB/T 45341—2025》 × AI大模型 × 全域PaaS創新,領碼SPARK打造行業數字化轉型新范式

【摘要】 數字中國新征程,標準引航數智化。面對企業數字蝶變的關鍵關口,《GB/T 45341—2025 數字化轉型管理 參考架構》引領行業規范發展。愛分析最新數據顯示,中國iPaaS市場規模持續高增長,印證PaaS已成為企業數字化基石。 AI大…

25-7-1 論文學習(1)- Fractal Generative Models 何愷明大佬的論文

分形生成模型 Tianhong Li1 Qinyi Sun1 Lijie Fan2 Kaiming He1 摘要 模塊化是計算機科學的基石,它將復雜函數抽象為原子構建塊。在本文中,我們通過將生成模型抽象為原子生成模塊,引入了新的模塊化層次。類似于數學中的分形,我…

如何讀取運行jar中引用jar中的文件

1.問題發現 項目中有個common包資源文件,然后springboot項目引用了common,那么我們要怎么讀取這個資源了。這里需要考慮三個場景,idea運行時、common jar獨立運行時、springboot引用common后運行時。 2.問題解決 2.1.idea運行時 Protection…

【學習方法】框架質疑學習法:破解專業學習的“知識厚度”困境

今天博主給大家分享一個,我自己發明了一個比較高效的學習方法,名叫“框架質疑學習法” 本文提出的框架質疑學習法(Framework Questioning Learning Method)為本文作者,也就是我,董翔首次提出。 在軟件專業的學習中&a…

spring-ai 1.0.0 學習(十七)——MCP Client

之前學過了工具調用(spring-ai 1.0.0 學習(十二)——工具調用_springai 1.0 如何判斷調用哪一個tool工具-CSDN博客),今天來看一下MCP MCP是什么 MCP全稱是模型上下文協議,有點繞,通俗點理解&a…

Git 運行.sh文件

1.在項目文件中右擊 Open Git Bash here 顯示(base)環境 2.激活conda環境 3.復制.sh文件的相對路徑 4.將路徑復制到git終端 先輸入sh和空格,然后右擊后選paste,不要直接ctrl v 5.開始運行

MySQL InnoDB 引擎中的聚簇索引和非聚簇索引有什么區別?

MySQL InnoDB 引擎中的聚簇索引和非聚簇索引有什么區別? 主要解答詳細解答1. **聚簇索引(Clustered Index)**2. **非聚簇索引(Non-Clustered Index / Secondary Index)**3. **對比總結**4. **流程圖(查詢過…