日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python数据科学入门_干货!小白入门Python数据科学全教程

發(fā)布時間:2024/7/23 python 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python数据科学入门_干货!小白入门Python数据科学全教程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言本文講解了從零開始學(xué)習(xí)Python數(shù)據(jù)科學(xué)的全過程,涵蓋各種工具和方法

你將會學(xué)習(xí)到如何使用python做基本的數(shù)據(jù)分析

你還可以了解機(jī)器學(xué)習(xí)算法的原理和使用

說明

先說一段題外話。我是一名數(shù)據(jù)工程師,在用SAS做分析超過5年后,決定走出舒適區(qū),尋找其它有效的數(shù)據(jù)分析工具,很快我發(fā)現(xiàn)了Python!

我非常喜歡編程,這是我真正喜歡做的事情。事實證明,編程并沒有想象中的那么難。

我在一周之內(nèi)學(xué)習(xí)了Python的基本語法,接著我一方面繼續(xù)深入探索Python,另一方面幫助其他人學(xué)習(xí)這門語言。Python最初是一門簡單的腳本語言,但隨著Python社區(qū)的不斷發(fā)展壯大,越來越多的開發(fā)者參與到Python工具庫開發(fā)中來,所以Python擁有極其豐富的數(shù)據(jù)科學(xué)第三方庫。

內(nèi)容目錄

1、Python數(shù)據(jù)分析的基本概況為何使用Python做數(shù)據(jù)分析?

Python2.7還是Python3.7?

如何安裝Python?

使用Python運(yùn)行一段簡單的代碼

如何使用Jupyter notebook

2、Python數(shù)據(jù)結(jié)構(gòu)和庫Python數(shù)據(jù)結(jié)構(gòu)

Python循環(huán)結(jié)構(gòu)和判斷語句

Python庫

3、使用Pandas做探索性分析Series和DataFrame數(shù)據(jù)結(jié)構(gòu)介紹

具體數(shù)據(jù)集案例分析

4、Numpy基本概念Numpy常見函數(shù)使用

5、使用Pandas和numpy做數(shù)據(jù)清洗處理數(shù)據(jù)集中的空值

如何使用apply方法?

6、使用Matplotlib繪制圖表Matplotlib介紹

使用Matplotlib繪制簡單的柱狀圖

7、使用Scikit-learn建立預(yù)測模型邏輯回歸算法

決策樹算法

隨機(jī)森林算法

1、Python數(shù)據(jù)分析的基本概況

為何使用Python做數(shù)據(jù)分析?

最近幾年,Python用作數(shù)據(jù)分析語言引起了非常多的關(guān)注,一度超越R成為最受歡迎的數(shù)據(jù)科學(xué)工具。作為Python的使用者,我支持Python作為數(shù)據(jù)分析工具有以下理由:開源-免費(fèi)安裝使用

語言簡潔,是一門真正的強(qiáng)大的編程語言

非常強(qiáng)大的在線社區(qū)

學(xué)習(xí)門檻低

極其豐富的第三方數(shù)據(jù)科學(xué)庫

但它也有一些缺點:

Python是一種解釋性語言而非編譯性,速度相對比較慢。但是考慮到在學(xué)習(xí)和代碼上節(jié)省的時間,Python依然是不二的選擇。

Python 2.7還是Python 3.7?

很多初學(xué)者還在糾結(jié)選擇Python 2.7還是Python 3.7?這兩個版本有非常大的差異,簡直就是兩種語言。它們各有各的優(yōu)缺點,取決于你使用的需求。

為什么Python 2.7絕對優(yōu)勢的社區(qū)支持!Python 2.x誕生于2000年,已經(jīng)被使用快20年,許多公司依然在使用Python 2.7

豐富的第三方庫!目前絕大部分第三方庫都是建立在Python 2.x基礎(chǔ)上的,很多庫并不支持Python 3.x版本。如果你將Python用于特定的應(yīng)用程序,如高度依賴外部模塊的web開發(fā),那么建議使用Python 2.7

為什么Python 3.7語法更加簡潔和快速。Python開發(fā)人員改進(jìn)了Python 2.x的缺點,Python 3.x代表了Python未來發(fā)展的方向

Python 2.7 只維護(hù)到2020年

Python官方建議直接學(xué)習(xí)Python 3.x

如果將Python作為數(shù)據(jù)科學(xué)工具,我建議使用Python 3.x,因為基本上所有的數(shù)據(jù)科學(xué)第三方庫都已經(jīng)支持Python 3.x。當(dāng)然選擇哪一個版本不是目的,應(yīng)當(dāng)專注的是如何使用Python更好地服務(wù)于數(shù)據(jù)科學(xué)。

如何安裝Python?

這里兩種安裝方法可供參考:直接去Python官網(wǎng)下載Python3.7安裝包,再選擇安裝自己需要的第三方庫和編輯器

或者,你不想這么麻煩,你可以選擇安裝Anaconda,這是一個開源的Python發(fā)行版本,其預(yù)裝了180多個第三方庫和依賴包

第二種方法包含了數(shù)據(jù)科學(xué)用到的大部分工具包,為你省去很多安裝時間。這也是本教程建議初學(xué)者使用的安裝方法 。

選擇Python開發(fā)環(huán)境

一旦你安裝好了python,就需要選擇開發(fā)環(huán)境用于Python編程,這里有四個常用選擇:終端交互模式

IDLE(默認(rèn)環(huán)境)

其它IDE,如pycharm

Jupyter notebook(ipython)IDLE(默認(rèn)環(huán)境)

這里不對它們作具體比較,讀者可自行上網(wǎng)查詢,選擇什么樣的開發(fā)環(huán)境取決于你的需求。

我建議初學(xué)者使用Jupyter notebook(ipython)作為Python數(shù)據(jù)分析的開發(fā)環(huán)境。Jupyter Notebook 是一個交互式筆記本,本質(zhì)是一個 Web 應(yīng)用程序,便于創(chuàng)建和共享程序文檔,支持實時代碼,數(shù)學(xué)方程,可視化和markdown。 用途包括:數(shù)據(jù)清理和轉(zhuǎn)換,數(shù)值模擬,統(tǒng)計建模,機(jī)器學(xué)習(xí)等等。數(shù)據(jù)挖掘領(lǐng)域中最熱門的比賽 Kaggle 里的資料都是Jupyter 格式。

本教程也是使用Jupyter Notebook 作為代碼環(huán)境。Jupyter Notebook編程界面

使用Python運(yùn)行一段簡單的代碼

如何使用Jupyter Notebook

Anaconda預(yù)裝了Jupyter Notebook庫,所以安裝Anaconda后就可以直接使用Jupyter Notebook。

啟動Jupyter Notebook有兩種方法,你可以在命令行中鍵入jupyter notebook再按enter鍵,便可以進(jìn)入Jupyter Notebook環(huán)境,記住不要關(guān)閉命令行窗口,否則Jupyter環(huán)境會失效。命令行鍵入jupyter notebook

還可以在開始菜單Anaconda文件夾中直接雙擊Jupyter Notebook

然后進(jìn)入Jupyter Notebook主界面,點擊New新建,點擊Python 3,就可以開始愉快的編程了。Jupyter Notebook主界面notebook界面

你可以修改該notebook的名字,添加或刪除代碼編輯框,使用“Shift + Enter” 或者“Ctrl + Enter”快捷鍵運(yùn)行代碼。具體功能快捷鍵這里不做贅述,可以去Jupyter Notebook 快捷鍵 查看。

2、Python數(shù)據(jù)結(jié)構(gòu)和庫

Python數(shù)據(jù)結(jié)構(gòu)

接下來要講到Python的數(shù)據(jù)結(jié)構(gòu),你應(yīng)該盡可能熟悉它,因為在接下來的數(shù)據(jù)分析代碼中會經(jīng)常用到這些數(shù)據(jù)結(jié)構(gòu)。字符串

Python 可以操作字符串。字符串有多種形式,可以使用單引號('……'),雙引號("……")都可以獲得同樣的結(jié)果2。反斜杠\可以用來轉(zhuǎn)義:字符串示例列表

Python 中可以通過組合一些值得到多種復(fù)合數(shù)據(jù)類型。其中最常用的列表,可以通過方括號括起、逗號分隔的一組值得到。一個列表可以包含不同類型的元素,但通常使用時各個元素類型相同:列表示例元組

可以看到列表和字符串有很多共同特性,例如索引和切片操作。Python的元組與列表類似,不同之處在于元組的元素不能修改。元組使用小括號,列表使用方括號。元組創(chuàng)建很簡單,只需要在括號中添加元素,并使用逗號隔開即可。元組示例字典

另一個非常有用的 Python 內(nèi)置數(shù)據(jù)類型是字典。字典在其他語言里可能會被叫做 聯(lián)合內(nèi)存 或 聯(lián)合數(shù)組。與以連續(xù)整數(shù)為索引的序列不同,字典是以 關(guān)鍵字 為索引的,關(guān)鍵字可以是任意不可變類型,通常是字符串或數(shù)字。如果一個元組只包含字符串、數(shù)字或元組,那么這個元組也可以用作關(guān)鍵字。但如果元組直接或間接地包含了可變對象,那么它就不能用作關(guān)鍵字。列表不能用作關(guān)鍵字,因為列表可以通過索引、切片或 append() 和 extend() 之類的方法來改變。

理解字典的最好方式,就是將它看做是一個 鍵: 值 對的集合,鍵必須是唯一的(在一個字典中)。一對花括號可以創(chuàng)建一個空字典:{} 。另一種初始化字典的方式是在一對花括號里放置一些以逗號分隔的鍵值對,而這也是字典輸出的方式。

以下是使用字典的一些簡單示例:字典示例

Python循環(huán)結(jié)構(gòu)和判斷語句for循環(huán)

和大多數(shù)編程語言一樣,Python也有for循環(huán)結(jié)構(gòu),其被廣泛使用在迭代方法中。

Python 中的for語句并不總是對算術(shù)遞增的數(shù)值進(jìn)行迭代(如同 Pascal),或是給予用戶定義迭代步驟和暫停條件的能力(如同 C),而是對任意序列進(jìn)行迭代(例如列表或字符串),條目的迭代順序與它們在序列中出現(xiàn)的順序一致。

如果在循環(huán)內(nèi)需要修改序列中的值(比如重復(fù)某些選中的元素),推薦你先拷貝一份副本。對序列進(jìn)行循環(huán)不代表制作了一個副本進(jìn)行操作。切片操作使這件事非常簡單:

如果寫成for w in words:,這個示例就會創(chuàng)建無限長的列表,一次又一次重復(fù)地插入defenestrate。range函數(shù)

如果你確實需要遍歷一個數(shù)字序列,內(nèi)置函數(shù)if判斷語句

可能最為人所熟知的編程語句就是

使用形式為if ... elif ... else ...

可以有零個或多個elif' 是 'else if' 的縮寫,適合用于避免過多的縮進(jìn)。 一個if...elif...elif... 序列可以看作是其他語言中的switch或case語句的替代。

現(xiàn)在你熟悉了Python中的循環(huán)結(jié)構(gòu)和判斷語句,可以更進(jìn)一步去學(xué)習(xí)更多的語法知識。

如果每做一件事都需要從頭開始寫代碼,那么這將是一場噩夢,比如你想要對一個列表里數(shù)字進(jìn)行加法運(yùn)算,難道還要一個一個數(shù)字加起來嗎?這樣的話,你肯定不想學(xué)習(xí)python了。慶幸的是,python有很多工具庫,可以幫助我們更加直接有效地解決問題。

例如,求數(shù)學(xué)中的階乘,你可以很簡單的導(dǎo)入math模塊,使用已經(jīng)編譯好的階乘函數(shù):

當(dāng)然在使用函數(shù)之前,你必須要導(dǎo)入庫和函數(shù)。話不多說,一起來探索更多的Python庫吧!

Python庫

在學(xué)習(xí)更酷炫實用的Python庫之前,第一步要知道什么是Python庫。

Python庫是一個相關(guān)功能模塊的集合,里面包含各種函數(shù)方法,用來解決復(fù)雜的問題。

這些庫分為兩類:標(biāo)準(zhǔn)庫和第三方庫,標(biāo)準(zhǔn)庫是Python內(nèi)置庫,無需再安裝,如math、range;第三方庫需要另外安裝,如jupyter、pandas、numpy安裝第三方庫

安裝第三方庫有兩種方法,第一種是pip方法,pip是Python包管理工具,自帶無需安裝,提供了對Python 庫的查找、下載、安裝、卸載的功能。

如果想安裝pandas庫,你可以在命令行輸入:

pip install pandas

接下來等待自行下載安裝。

第二種是手動安裝,在python庫集合里下載相關(guān)庫文件并安裝。導(dǎo)入庫和庫函數(shù)

使用庫之前,需要將其導(dǎo)入Python環(huán)境。同樣有兩種方法可以做到(以math庫為例):

import math

或者

from math import *

第一種方法,導(dǎo)入整個庫,如果你需要使用庫中的某個函數(shù),比如階乘函數(shù)factorial,那么,需要用math.factorial()形式。

第二種方法直接導(dǎo)入了math庫的所有方法和函數(shù),直接factorial()就可以了。

建議使用第一種方法,用什么導(dǎo)入什么,不浪費(fèi)。最常用的數(shù)據(jù)科學(xué)庫列表

matplotlib:是一個Python 2D繪圖庫,可以生成各種硬拷貝格式和跨平臺交互式環(huán)境的出版物質(zhì)量數(shù)據(jù)。Matplotlib可用于Python腳本,Python和IPython shell,Jupyter筆記本,Web應(yīng)用程序服務(wù)器和四個圖形用戶界面工具包。只需幾行代碼即可生成繪圖,直方圖,功率譜,條形圖,誤差圖,散點圖等。

StatsModels:Statsmodels 是一個 Python 模塊,它為統(tǒng)計數(shù)據(jù)分析提供了許多機(jī)會,例如統(tǒng)計模型估計、執(zhí)行統(tǒng)計測試等。在它的幫助下,你可以實現(xiàn)許多機(jī)器學(xué)習(xí)方法并探索不同的繪圖可能性。

Seaborn:Seaborn 本質(zhì)上是一個基于 matplotlib 庫的高級 API。它包含更適合處理圖表的默認(rèn)設(shè)置。此外,還有豐富的可視化庫,包括一些復(fù)雜類型,如時間序列、聯(lián)合分布圖(jointplots)和小提琴圖(violin diagrams)。

Plotly:Plotly 是一個交互可視化庫,它可以讓你輕松構(gòu)建復(fù)雜的圖形。該軟件包適用于交互式 Web 應(yīng)用程,可實現(xiàn)輪廓圖、三元圖和三維圖等視覺效果。

Bokeh:Bokeh 庫使用 JavaScript 小部件在瀏覽器中創(chuàng)建交互式和可縮放的可視化。該庫提供了多種圖表集合,樣式可能性(styling possibilities),鏈接圖、添加小部件和定義回調(diào)等形式的交互能力,以及許多更有用的特性。

Scrapy:Scrapy 是一個用來創(chuàng)建網(wǎng)絡(luò)爬蟲,掃描網(wǎng)頁和收集結(jié)構(gòu)化數(shù)據(jù)的庫。此外,Scrapy 可以從 API 中提取數(shù)據(jù)。由于該庫的可擴(kuò)展性和可移植性,使得它用起來非常方便。

TensorFlow:TensorFlow 是一個流行的深度學(xué)習(xí)和機(jī)器學(xué)習(xí)框架,由 Google Brain 開發(fā)。它提供了使用具有多個數(shù)據(jù)集的人工神經(jīng)網(wǎng)絡(luò)的能力。在最流行的 TensorFlow應(yīng)用中有目標(biāo)識別、語音識別等。在常規(guī)的 TensorFlow 上也有不同的 leyer-helper,如 tflearn、tf-slim、skflow 等。

Keras:Keras 是一個用于處理神經(jīng)網(wǎng)絡(luò)的高級庫,運(yùn)行在 TensorFlow、Theano 之上,現(xiàn)在由于新版本的發(fā)布,還可以使用 CNTK 和 MxNet 作為后端。它簡化了許多特定的任務(wù),并且大大減少了單調(diào)代碼的數(shù)量。然而,它可能不適合某些復(fù)雜的任務(wù)。

requests:requests庫是一個常用的用于http請求的模塊,它使用python語言編寫,可以方便的對網(wǎng)頁進(jìn)行爬取,是學(xué)習(xí)python爬蟲的較好的http請求模塊。

Blaze:Blaze生態(tài)系統(tǒng)為python用戶對大數(shù)據(jù)提供了高效計算的高層接口,Blaze整合了包括Python的Pandas、NumPy及SQL、Mongo、Spark在內(nèi)的多種技術(shù),使用Blaze能夠非常容易地與一個新技術(shù)進(jìn)行交互。

現(xiàn)在你熟悉了Python了Python數(shù)據(jù)結(jié)構(gòu)和庫的使用,接下來要用這些知識去解決一些簡單的問題。比如說利用pandas去做數(shù)據(jù)探索,用matplotlib可視化圖表等等。

使用Pandas做探索性分析

為了更好地探索數(shù)據(jù)中的奧秘,接下來要介紹一位重量級嘉賓-Pandas

哈哈,開個玩笑。這里的pandas不是國寶大熊貓,而是python的一個國寶級第三方數(shù)據(jù)科學(xué)庫。就像前面介紹過的,pandas具備強(qiáng)大的數(shù)據(jù)展示功能, 納入了大量庫和一些標(biāo)準(zhǔn)的數(shù)據(jù)模型,提供了高效地操作大型數(shù)據(jù)集所需的工具。是pandas的出現(xiàn)奠定了python在數(shù)據(jù)科學(xué)領(lǐng)域霸主的地位。

接下來,我們要使用pandas讀取數(shù)據(jù)集,然后進(jìn)行數(shù)據(jù)探索性分析(EDA),就是研究數(shù)據(jù)各個變量或變量之間的統(tǒng)計學(xué)關(guān)系。

pandas的數(shù)據(jù)結(jié)構(gòu)

pandas有兩種數(shù)據(jù)結(jié)構(gòu),Series和DataFrame。

Series類似一維數(shù)組(只有一列),由數(shù)據(jù)和索引組成,可以保存任何數(shù)據(jù)類型(整數(shù),字符串,浮點數(shù),Python對象等)。

DataFrame則類似二維數(shù)組,像excel表格,有一個或多個變量(多列)。

當(dāng)我們用pandas讀取數(shù)據(jù)集的時候,數(shù)據(jù)會以DataFrame的格式保存在內(nèi)存里,你可以對數(shù)據(jù)的行和列進(jìn)行各種函數(shù)操作(如分組、聚合、拼接、運(yùn)算)。類似SQL能做的,pandas都能做,SQL不能做的,pandas也能做。

數(shù)據(jù)集

這里數(shù)據(jù)集就用經(jīng)典的titanic(泰坦尼克)數(shù)據(jù)集,在這里 下載。

該數(shù)據(jù)集規(guī)格為891*12,也就是891行,12列。這12個變量包括乘客年齡、性別、姓名、是否存活等等,了解即可。

讀取數(shù)據(jù)

來看看數(shù)據(jù)集長什么樣

import pandas as pd #導(dǎo)入pandas庫

data = pd.read_csv(r'train.csv') #讀取數(shù)據(jù)

data.head(10) #查看前10行數(shù)據(jù)數(shù)據(jù)DataFrame格式

數(shù)據(jù)統(tǒng)計學(xué)描述

數(shù)據(jù)描述有兩個函數(shù)(info和describe)來做,通常這是數(shù)據(jù)探索的開始!

data.info() #查看數(shù)據(jù)集每個變量的非空長度、類型,以及整個數(shù)據(jù)集的大小info函數(shù)對數(shù)據(jù)的描述

data.describe() #數(shù)據(jù)統(tǒng)計學(xué)描述函數(shù),查看每一個變量的統(tǒng)計學(xué)情況,包括最大值、標(biāo)準(zhǔn)差等describe函數(shù)對數(shù)據(jù)的描述

取數(shù)據(jù)列

如果我想拎出數(shù)據(jù)集的某一列或幾列怎么辦

data['Age'] # 取出age這一列數(shù)據(jù)

data[['Age','Name']] # 取出age和name兩列

繪制圖表

因為需要在notebook上繪制圖表并顯示,所以需要在代碼行添加魔法命令使得notebook上顯示圖像:

%matplotlib inline

pandas庫自帶繪圖功能,你可以繪制簡單的統(tǒng)計學(xué)圖表,比如我想繪制age的分布直方圖:

data['Age'].hist(bins=10) # hist為直方圖函數(shù),bins是參數(shù),可以調(diào)節(jié)年齡分多少段數(shù)age字段直方圖

未完待續(xù)!

參考

總結(jié)

以上是生活随笔為你收集整理的python数据科学入门_干货!小白入门Python数据科学全教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。