數據分析1

一、常用數據處理模塊Numpy

Numpy常用于高性能計算,在機器學習常常作為傳遞數據的容器。提供了兩種基本對象:ndarray、ufunc。

ndarray具有矢量算術運算和復雜廣播能力的快速且節省空間的多維數組

ufunc提供了對數組快速運算的標準數學函數。

ndarry

創建

創建一維和二維數組,顯示其屬性值

import numpy as np
# 創建一維數組和二維數組,顯示其屬性值
a1 = np.array([1,2,3,4,3,5,6,9])
print(a1)
a2 = np.array([[1,2,3], [4,5,6], [7,8,9]])
print(a2)
# 特殊的ndarray
a3 = np.arange(1,100,5)
print('a3:\n', a3)
a4 = np.linspace(1,100,5)
print('a4:\n', a4)
a5 = np.logspace(1,3, 2)
print('a5:\n', a5)
a6 = np.logspace(0, 9, 10, base=2)
print('a6:\n', a6)
a7 = np.zeros((3,4))
print('a7:\n', a7)
a8 = np.eye(5)
print('a8:\n', a8)
a9 = np.ones((2,3))
print('a9:\n', a9)
a10 = np.diag([1,2,3,5])
print('a10:\n', a10)

結果

arange等差數列(開始值,終值,步長)
linspace等差數列(開始值,終值,元素數量)
logspace(a,b,c,base=d)等比數列(10的a次方到10的b次方共c個,基d默認為10)
zeros全為0的矩陣
ones全為1的矩陣
eye單位矩陣(對角線元素為1,其余為0)
diag對角矩陣(對角線元素為特定值,其余為0)

索引與切片

import numpy as np
# 一維數組的索引和切片
a1 = np.arange(10)
print('a1:\n', a1)
print(a1[5])
print(a1[3:6])
print(a1[:-1])
print(a1[5:1:-2])# 二維數組的索引和切片
a2 = np.array([[11,12,13,14,15], [21,22,23,24,25], [31,32,33,34,35]])
print('a2:\n', a2)
print(a2[0,3:5])
print(a2[1:,2:])
print(a2[:,2:])

設置形狀

import numpy as np
# 設置數組形狀
a = np.arange(12)
print('生成一個一維數組a:\n', a)
a = a.reshape(3,4)
print(a)
a.resize(2,6)
print(a)
a.shape = (4,3)
print(a)

展平

import numpy as np
# 展平數組
a = np.arange(12).reshape(3,4)
print('生成一個3*4數組a:\n',a)
b = a.ravel()
print('按行展平a:',b)
c = a.flatten('F')
print('按行展平a:',c)

排序

import numpy as np
a = np.array([[1,12,3,9],[2,4,6,8],[10,11,7,5]])
print(a)
print('調用sort函數')
print(np.sort(a))
print('按列排序:')
print(np.sort(a,axis = 0))# 在sort函數種排序字段
dt = np.dtype([('name','S10'),('age',int)])
ar = np.array([('fang', 26),('jie', 24),('ahao', 25),('ming', 22),('ajie', 28),('quan', 19)],dtype=dt)
print('原數組:\n',ar)
print('按name排序:\n')
print(np.sort(ar, order='name'))
print('按age排序:\n')
print(np.sort(ar, order='age'))

搜索

import numpy as np
x = np.arange(9).reshape(3,3)
print(x)
print('大于3的元素的索引:')
y = np.where(x>3)
print(y)
print('使用這些索引搜索滿足要求的元素')
print(x[y])print('返回滿足要求的元素')
condition = np.mod(x,2) == 0
print(np.extract(condition,x))

ufunc

算術運算、三角運算、集合運算、比較運算、邏輯運算、統計運算。

計算矩陣面積

import numpy as np
# 計算矩陣乘積(左上為1*5+2*7=19)
a = [[1,2],[3,4]]
b = [[5,6],[7,8]]
print(np.matmul(a,b))

結果:

[[19 22]
?[43 50]]

注:矩陣面積為左邊的行乘右邊的列,詳見線性代數。結果的左上角19 = 1*5+2*7

二、常用數據處理模塊Pandas

Pandas是基于Numpy創建的,為Python提供高性能、易使用的數據結構和數據分析工具。主要有Series和DataFrame

Series:基本數據結構,一維標簽數組,能夠保存任何數據類型

DataFrame:基本數據結構,一般為二維數組

Series

創建

pandas.Series(一維數組,數據索引標簽(默認從0開始),數據類型,名稱)

import numpy as np
import pandas as pd
# 用ndarray創建Series數據對象
print(pd.Series(np.arange(5),index=['a','b','c','d','e']))
# 用dict創建Series數據對象
print(pd.Series({'y':84,'h':94, 'w':96}))
# 用list創建Series數據對象
print(pd.Series([10,20,30],index=['a','b','c']))

數據訪問

import pandas as pd
import numpy as np
data = np.arange(5)
s = pd.Series(data,index=['a','b','c','d','e'])
print(s)
print(s['b'])
s['c'] = 75
print(s)

?DataFrame

創建

import numpy as np
import pandas as pd
dict1 = {'col1':[0,1,2,3],'col2':[4,5,6,7]}
print(pd.DataFrame(dict1))
list1 = [[30,45],[65,76],[25,86]]
print(pd.DataFrame(list1, index=['a','b','c'],columns=['A','B']))

訪問

import numpy as np
import pandas as pd
dict1 = {'col1':[0,1,2,3],'col2':[4,5,6,7]}
print(pd.DataFrame(dict1))
list1 = [[30,45],[65,76],[25,86]]
print(pd.DataFrame(list1, index=['a','b','c'],columns=['A','B']))

增、刪、改

import pandas as pd
dict = {'y':[90,76,82,61,62,72],'a':[75,73,86,85,91,76],'b':[66,64,74,89,85,90]}
d = pd.DataFrame(dict)
print(d)
d['y'] = [80,82,86,92,95,77]
d['g'] = [90,96,85,84,83,93]
print(d)
d.drop(['y','g'],axis=1,inplace=True)
print(d)

三、常用數據可視化模塊Matplotlib

一個2D繪圖庫。

matplotlib是最基礎的擴展包,為pandas、seaborn提供基礎繪圖概念與語法。

它雖然不能直接提供繪制折線圖的函數,但可以借助散點函數繪制折線圖。

在我看來,它與MATLAB相比雖然需要手工導入函數,但可以與其他庫配合使用。

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用來正常顯示中文標簽
plt.rcParams['axes.unicode_minus'] = False    # 用來正常顯示負號
month = ['一月','二月','三月','四月','五月']
sales_amounts = [26, 75, 89, 56, 64]
month_index = range(len(month))
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)
ax1.bar(month_index, sales_amounts,align='center',color='darkblue')
ax1.xaxis.set_ticks_position('bottom')
ax1.yaxis.set_ticks_position('left')
plt.xticks(month_index,month,rotation=0,fontsize='small')
plt.xlabel('月份')
plt.ylabel('銷售額')
plt.title('每個月的銷售額')
plt.savefig('matplotlib336.png')

四、數據收集、整理與清洗

數據收集

方法:

1.通過現有網絡平臺進行數據抽取而獲得數據。

2.利用設備收集。利用各類傳感器從系統外部收集數據并輸入到系統內部。

3.系統日志采集方法。

4.網絡數據采集方法。

以爬蟲為例介紹如何從網絡獲取數據。

爬蟲通過模擬是計算機對服務器端發起Request請求,接受服務器端的Response回應并解析,提取得到所需信息。

通過Python程序進行網絡爬蟲獲取相關數據主要涉及3個Python庫:Requests、Lxml、BeautifulSoup。

①Requests庫的作用主要是請求網站獲取網頁數據。

import requests
res = requests.get('http://www.baidu.com')
print(res)
print(res.text)

②Lxml為XML解析庫,同時很好的支持HTML文檔的解析功能,除了能直接讀取字符串,也能從文件中提取內容。

③BeautifulSoup庫用于解析Requests庫請求的網頁,并把網頁源代碼解析為Soup文檔,以便過濾和提取數據。

例:爬取《天工開物》

from urllib.request import urlopen
url = 'https://www.gutenberg.org//files/25273/25273-0.txt'
text = urlopen(url).read()
text = text.decode('utf-8')
print(len(text))
text1 = text[596:733]
print(text1)
print()import opencc
cc = opencc.OpenCC('t2s')
print(cc.convert(text1))

?例:爬取豆瓣圖書TOP250的信息

from lxml import etree
import requests
import csv
fp = open('D:/pythoncode/aiSelf/P114book.csv','wt',newline="", encoding='utf-8')
writer = csv.writer(fp)
writer.writerow(('name','url','author','publisher','date','price','rate','comment'))
urls = ['https://book.douban.com/top250?start={}'.format(str(i)) for i in range(0,250,25)]
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36 Edg/135.0.0.0'
}
for url in urls:html = requests.get(url, headers=headers)selector = etree.HTML(html.text)infos = selector.xpath('//tr[@class="item"]')for info in infos:name = info.xpath('td/div/a/@title')[0]url = info.xpath('td/div/a/@href')[0]book_infos = info.xpath('td/p/text()')[0]author = book_infos.split('/')[0]publisher = book_infos.split('/')[-3]date = book_infos.split('/')[-2]price = book_infos.split('/')[-1]rate = info.xpath('td/div/span[2]/text()')[0]comments = info.xpath('td/p/span/text()')comment = comments[0] if len(comments)>0 else '空'writer.writerow((name,url,author,publisher,date,price,rate,comment))
fp.close()
print('ok')

其他必需知識

user-agent的獲取

進入目標網頁,按F12或右鍵檢查,進入控制臺,找到網絡(藍色框),刷新網頁后輸入user(紅色框)找到user-agent(綠色框),復制。

響應狀態碼

1xx服務器接收客戶端消息,但沒有接受完成,等待一段時間后發送的
2xx成功
3xx重定向
4xx客戶端錯誤
5xx服務器端錯誤

?Requests庫的七個主要方法

方法說明對應HTTP的
requests.request()構造一個請求,支撐以下各個方法的基礎方法
requests.get()獲取HTML網頁的主要方法GET
requests.head()獲取HTML頭信息的方法HEAD
requests.post()向HTML提交POST請求的方法POST
requests.put()向HTML提交PUT請求的方法PUT
requests.patch()向HTML提交局部修改請求PATCH
requests.delete()向HTML提交刪除請求DELETE

Response對象的屬性

屬性說明
r.status_codeHTTP請求的返回狀態,200連接成功,404連接失敗
r.textHTTP相應內容的字符串形式,即url對應的頁面內容
r.encoding從HTTP header中猜測的相應內容編碼方式
r.apparent_encoding從內容中分析出的相應內容編碼方式(備選編碼方式)
r.contentHTTP相應內容的二進制形式

Requests庫的異常

異常說明
requests.ConnectionError

網絡連接錯誤異常,

如DNS查詢失敗、拒絕連接等

requests.HTTPErrorHTTP錯誤異常
requests.URLRequiredURL缺失異常
requests.TooManyRedirects超過最大重定向次數,產生重定向異常
requests.ConnectTimeout連接遠程服務器超時異常
requests.Timeout請求URL超時,產生超時異常

Python讀寫文件模式匯總

基本打開方式
模式

描述

文件存在

文件不存在

r只讀打開文件報錯(FileNotFoundError)
w只寫清空文件創建新文件
a追加從末尾寫入創建新文件
x排他創建報錯(FileExistsError)創建新文件
組合模式
模式描述
r+讀寫(文件必須存在)
w+讀寫(清空文件或創建新文件)
a+讀寫(從末尾追加或創建新文件)
二進制模式

以上模式后加b,如rb,rb+,ab+。表示二進制模式。

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

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

相關文章

DeepSeek智能時空數據分析(六):大模型NL2SQL繪制城市之間連線

序言:時空數據分析很有用,但是GIS/時空數據庫技術門檻太高 時空數據分析在優化業務運營中至關重要,然而,三大挑戰仍制約其發展:技術門檻高,需融合GIS理論、SQL開發與時空數據庫等多領域知識;空…

2023ICPC合肥題解

文章目錄 F. Colorful Balloons(簽到)E. Matrix Distances(思維小結論)J. Takeout Delivering(最短路)G. Streak Manipulation(二分dp)C. Cyclic Substrings(回文自動機) 題目鏈接 F. Colorful Balloons(簽到) int n;cin>>n;for(int i1;i<n;i) cin>>s[i];map<…

數字技術驅動下教育生態重構:從信息化整合到數字化轉型的路徑探究

一、引言 &#xff08;一&#xff09;研究背景與問題提出 在當今時代&#xff0c;數字技術正以前所未有的速度和深度滲透到社會的各個領域&#xff0c;教育領域也不例外。從早期的教育信息化整合到如今的數字化轉型&#xff0c;教育系統正經歷著一場深刻的范式變革。 回顧教…

terraform 動態塊(Dynamic Blocks)詳解與實踐

在 Terraform 中&#xff0c;動態塊&#xff08;Dynamic Blocks&#xff09; 是一種強大的機制&#xff0c;允許你根據變量或表達式動態生成配置塊&#xff0c;避免重復編寫相似的代碼。這在處理需要重復定義的結構&#xff08;如資源參數、嵌套配置&#xff09;時特別有用。以…

Unity3D引擎框架及用戶接口調用方式相關分析及匯總

分析目的 目前外網3D手游絕大部基于Unity3D引擎進行開發,Unity3D引擎屬于商業引擎,引擎整理框架的運行機制較為神秘,本文介紹Unity引擎框架、對象組織方式、用戶接口與引擎交互方式等原理,通過本文的分析和介紹可了解Unity3D框架中大致執行原理。 實現原理 Unity引擎作為…

react-09React生命周期

1.react生命周期&#xff08;舊版&#xff09; 1.1react初始掛載時的生命周期 1:構造器-constructor // 構造器constructor(props) {console.log(1:構造器-constructor);super(props)// 初始化狀態this.state {count: 0}} 2:組件將要掛載-componentWillMount // 組件將要掛載…

【NVM】管理不同版本的node.js

目錄 一、下載nvm 二、安裝nvm 三、驗證安裝 四、配置下載鏡像 五、使用NVM 前言&#xff1a;不同的node.js版本會讓你在使用過程很費勁&#xff0c;nvm是一個node版本管理工具&#xff0c;通過它可以安裝多種node版本并且可以快速、簡單的切換node版本。 一、下載nvm htt…

八大排序——冒泡排序/歸并排序

八大排序——冒泡排序/歸并排序 一、冒泡排序 1.1 冒泡排序 1.2 冒泡排序優化 二、歸并排序 1.1 歸并排序&#xff08;遞歸&#xff09; 1.2 遞歸排序&#xff08;非遞歸&#xff09; 一、冒泡排序 1.1 冒泡排序 比較相鄰的元素。如果第一個比第二個大&#xff0c;就交換…

區塊鏈隨學隨記

前情提要&#xff1a;本人技術棧為ganachehardhatpython ganache提供的是本地的區塊鏈環境&#xff0c;相當于模擬以太坊&#xff0c;這樣可以允許多個賬戶在本機交互。hardhat和remix都是區塊鏈ide&#xff0c;用于編寫和部署合約助記詞有個數規定&#xff0c;只有滿足這些個數…

Android原生開發基礎

Android實戰 Android 原生開發基礎 知識點1 介紹了解2 系統體系架構3 四大應用組件4 移動操作系統優缺點5 開發工具6 配置工具7 下載相關資源8JDK下載安裝流程9配置好SDK和JDK環境10 第一個Hello word11 AS開發前常用設置12模擬器使用運行13 真機調試14 AndroidUI基礎布局15 加…

網頁版 deepseek 對話問答內容導出為 PDF 文件和 Word 文件的瀏覽器插件下載安裝和使用說明

文章目錄 網頁版 deepseek 瀏覽器擴展應用程序插件1. 預覽效果2. 功能介紹3. 瀏覽器擴展應用程序下載3.1. 下載方式13.2. 下載方式24. 安裝教程4.1. Chrome 瀏覽器安裝步驟4.2. Edge 瀏覽器安裝步驟5. 使用說明網頁版 deepseek 瀏覽器擴展應用程序插件 1. 預覽效果 預覽效果 導…

DBdriver使用taos數據庫

首先創建連接 連接后比如數據庫里有三個庫 選擇其中的hypon 選中localhost&#xff0c;右鍵sql編輯器&#xff0c;打開sql控制臺 就插入了一條數據

【前端】【面試】如何實現圖片漸進式加載?有幾種方法

前端圖片漸進式加載 一、技術原理解析 漸進式加載是通過分階段、按需加載圖片&#xff0c;以提升用戶體驗和頁面性能的優化技術。主要包括以下實現方式&#xff1a; 懶加載&#xff1a;基于IntersectionObserver API&#xff0c;當圖片進入瀏覽器視口時才發起加載請求&#…

Spring Boot 中的條件注解

Spring Boot條件注解的匯總&#xff1a; 注解作用判斷依據使用場景ConditionalOnBean容器中存在指定Bean時&#xff0c;被注解的配置或Bean定義生效指定Bean在容器中存在依賴其他已存在Bean時配置相關功能ConditionalOnCheckpointRestore在特定檢查點恢復相關條件滿足時生效滿…

leetcode11-盛水最多的容器

leetcode 11 思路 問題分析 拆解問題&#xff0c;面積 底 * 高 寬度&#xff1a;兩個豎直線之間的距離&#xff0c;顯然是 right - left高度&#xff1a;容器的水位受限于較短的那根豎直線的高度&#xff0c;所以高度為 min(height[left], height[right]) 本題其實很容易…

HTTP:十二.HTTPS

HTTPS 概述 超文本傳輸安全協議(英語:HyperText Transfer Protocol Secure,縮寫:HTTPS;常稱為HTTP over TLS、HTTP over SSL或HTTP Secure)是一種通過計算機網絡進行安全通信的傳輸協議。HTTPS經由HTTP進行通信,利用TLS加密數據包。 HTTPS的主要目的是提供對網站服務器…

MySQL數據庫(14)—— 使用C操作MySQL

目錄 一&#xff0c;下載庫 二&#xff0c;安裝庫 三&#xff0c;使用庫 3.1 連接數據庫 3.2 發送SQL 3.3 獲取結果 問題&#xff1a;為什么不使用C&#xff1f; 解答&#xff1a;使用C的庫已經可以完成絕大部分MySQL操作了&#xff0c;并且C的庫的使用更加復雜&#xff…

Redis故障防御體系:構建七層免疫系統的設計哲學

當Redis遭遇寫入阻塞或服務崩潰時&#xff0c;本質上是系統邊界的多重防御機制被擊穿。本文摒棄碎片化的解決方案&#xff0c;從系統工程的全局視角&#xff0c;構建七層遞進式防御體系&#xff0c;揭示高可用架構的深層設計邏輯。 第一層&#xff1a;動態資源調度 —— 內存的…

在線文本客服系統核心功能解析

在線文本客服系統核心功能解析 在互聯網大廠的Java求職者面試中&#xff0c;經常會被問到關于在線文本客服系統的實現和設計。本文通過一個故事場景來展示這些問題的實際解決方案。 第一輪提問 面試官&#xff1a;馬架構&#xff0c;歡迎來到我們公司的面試現場。請問您對在…

學成在線。。。

一:講師管理 介紹:可以實現對講師的分頁展示,多條件組合分頁查詢,對講師的添加,修改,刪除操作。 針對于添加來說,使用requestBody注解,搭配postmapping接收數據,使用service層的對象,調用mapper方法,向數據庫中保存數據。 修改: 先根據講師id,查詢出講師,再去…