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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

python

Python 数据科学入门

發(fā)布時(shí)間:2023/12/15 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python 数据科学入门 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

http://python.jobbole.com/85394/

Python 在數(shù)據(jù)科學(xué)領(lǐng)域越來(lái)越流行了。它的流行不無(wú)道理。 Python 容易學(xué),有超強(qiáng)數(shù)據(jù)科學(xué)庫(kù),并且和 Hadoop 以及 Spark 等數(shù)據(jù)庫(kù)和工具整合得非常好。Python 可以從頭至尾完成一個(gè)數(shù)據(jù)科學(xué)項(xiàng)目,無(wú)論是讀取數(shù)據(jù)、分析數(shù)據(jù)、數(shù)據(jù)可視化還是用機(jī)器學(xué)習(xí)來(lái)做預(yù)測(cè)都可以。
本文介紹如何用 Python 上手?jǐn)?shù)據(jù)科學(xué)。如果想要了解更多內(nèi)容請(qǐng)?jiān)L問(wèn) Dataquest, 那里有使用 Python 完成數(shù)據(jù)科學(xué)任務(wù)的深入講解。

本文使用的是關(guān)于 2016 美國(guó)總統(tǒng)大選政治資助的數(shù)據(jù)集(鏈接 在此)。文件是 csv 格式,每行代表對(duì)一個(gè)候選人的一次捐贈(zèng)。這個(gè)數(shù)據(jù)集有幾列比較值得一提,比如:

cand_nm – 接受捐贈(zèng)的候選人姓名
contbr_nm – 捐贈(zèng)人姓名
contbr_state – 捐贈(zèng)人所在州
contbr_employer – 捐贈(zèng)人所在公司
contbr_occupation – 捐贈(zèng)人職業(yè)
contb_receipt_amount – 捐贈(zèng)數(shù)額(美元)
contb_receipt_dt – 收到捐款的日期
安裝 Python

要分析這些數(shù)據(jù),首先要安裝 Python。利用 Anaconda 這個(gè)工具來(lái)安裝 Python 是非常簡(jiǎn)單的。Anaconda 在安裝 Python 的同時(shí)還會(huì)安裝一些流行的數(shù)據(jù)分析庫(kù)。點(diǎn)擊 這里 下載 Anaconda。建議安裝最新的 Python 3.5 版本。這個(gè)鏈接 里介紹了一些 Python 2 與 Python 3 的對(duì)比。

Anaconda 會(huì)自動(dòng)安裝一些這篇文章會(huì)用到的庫(kù),包括 Jupyter、Pandas、scikit-learn 和 matplotlib。

Jupyter 入門(mén)

都安裝好之后可以啟動(dòng) Jupyter notebook (原名 IPython notebook)。Jupyter notebook 是個(gè)強(qiáng)有力的數(shù)據(jù)分析工具。它能夠幫助快速查看數(shù)據(jù)、將結(jié)果可視化以及把結(jié)果分享給他人。谷歌、IBM、微軟的數(shù)據(jù)科學(xué)家都用它來(lái)分析數(shù)據(jù)以及組內(nèi)協(xié)作。

在命令行里輸入 ipython notebook 來(lái)運(yùn)行 Jupyter。如果遇到問(wèn)題可以去它的 官方文檔 里查找答案。

啟動(dòng)后會(huì)出現(xiàn)一個(gè)可以查看文件的瀏覽器界面,在這個(gè)頁(yè)面上可以創(chuàng)建新的 notebook。請(qǐng)創(chuàng)建一個(gè)叫 Python 3 的 notebook,一會(huì)兒的數(shù)據(jù)分析中會(huì)用到它。如果剛才的安裝還沒(méi)成功,這篇文章 也許有幫助。

Notebook 工作區(qū)塊

每個(gè) Jupyter notebook 都包含多個(gè)區(qū)塊(cell),區(qū)塊可以運(yùn)行代碼也可以只包含文檔。每個(gè) notebook 開(kāi)始時(shí)都自帶一個(gè)區(qū)塊,如有需要可以自行增加多個(gè)區(qū)塊,比如:

In [ ]:
Python
1
2
3
4

代碼區(qū)塊示例。產(chǎn)生的輸出會(huì)在下方顯示。

print(10)
b = 10
In [ ]:
Python
1
2
3
4

可以建立多個(gè)區(qū)塊,每個(gè)代碼區(qū)塊可以根據(jù)分析的需求跑任意次

Jupyter notebook 中一個(gè)很贊的功能是每個(gè)區(qū)塊跑出來(lái)的結(jié)果會(huì)被緩存起來(lái), 這樣一個(gè)區(qū)塊可以利用另一個(gè)區(qū)塊跑出來(lái)的結(jié)果。

print(b * 10)
如果想要了解更多關(guān)于 Jupyter 的知識(shí)請(qǐng)閱讀作者提供的更深入的 教程。

Pandas 入門(mén)

Pandas 是 Python 上的一個(gè)數(shù)據(jù)分析庫(kù)。它能讀取包括 csv 在內(nèi)的不同格式的數(shù)據(jù),分析數(shù)據(jù)也很有效。可以通過(guò)下面的代碼來(lái)讀取數(shù)據(jù):

In [2]:
Python
1
2
3
import pandas as pd

donations = pd.read_csv(“political_donations.csv”)
In [3]:
1
donations.shape
Out[3]:
1
(384885, 18)
In [4]:
Python
1
donations.head(2)
Out[4]:
cmte_id cand_id cand_nm contbr_nm contbr_city contbr_st contbr_zip contbr_employer contbr_occupation contb_receipt_amt contb_receipt_dt receipt_desc memo_cd memo_text form_tp file_num tran_id election_tp
C00458844 P60006723 Rubio, Marco KIBBLE, KUMAR DPO AE 092131903 U.S. DEPARTMENT OF HOMELAND SECURITY LAW ENFORCEMENT 500 27-AUG-15 NaN NaN NaN SA17A 1029457 SA17.813360 P2016 NaN
C00458844 P60006723 Rubio, Marco HEFFERNAN, MICHAEL APO AE 090960009 INFORMATION REQUESTED PER BEST EFFORTS INFORMATION REQUESTED PER BEST EFFORTS 210 27-JUN-15 NaN NaN NaN SA17A 1029436 SA17.796904 P2016 NaN
上面的區(qū)塊用 import pandas as pd 這個(gè)語(yǔ)句導(dǎo)入了 Pandas 庫(kù),然后用 read_csv() 這個(gè)函數(shù)把 political_donations.csv 這個(gè)文件讀入了變量 donations 中。變量 donations 現(xiàn)在就是一個(gè) Pandas DataFrame。Pandas DataFrame 可以被看做是加強(qiáng)版的矩陣,它自帶數(shù)據(jù)分析函數(shù),并且允許不同的列包含不同的數(shù)據(jù)類(lèi)型。

可以通過(guò)變量 donations 的 shape 屬性來(lái)打印它多少行多少列。每個(gè)區(qū)塊的最后一行語(yǔ)句或變量都會(huì)自動(dòng)顯示,這個(gè)功能超贊!下一個(gè)區(qū)塊用了 DataFrames 的 head() 函數(shù)打印出了變量 donations 的頭兩行,這樣就能看里面的數(shù)據(jù)了。

如想更深入地了解 Pandas 請(qǐng)參閱作者提供的 課程。

每個(gè)候選人收到的捐款總額

使用Pandas 中的 groupby() 函數(shù)能計(jì)算出每個(gè)候選人的整體統(tǒng)計(jì)數(shù)據(jù)。根據(jù)變量 cand_nm(候選人姓名)來(lái)把變量 donations 分成不同的子集就可以針對(duì)每個(gè)候選人分別統(tǒng)計(jì)數(shù)據(jù)。首先要算的是捐款總額。把候選人的 contb_receipt_amount 這一列加起來(lái)就可以得到收到的捐款總額了。

In [14]:
Python
1
donations.groupby(“cand_nm”).sum().sort(“contb_receipt_amt”)
Out[14]:
contb_receipt_amt file_num
cand_nm
Pataki, George E. 365090.98 234695430
Webb, James Henry Jr. 398717.25 709419893
Lessig, Lawrence 621494.50 1378488449
Santorum, Richard J. 781401.03 822086638
Trump, Donald J. 1009730.97 2357347570
Jindal, Bobby 1013918.12 584896776
Perry, James R. (Rick) 1120362.59 925732125
Huckabee, Mike 1895549.15 2700810255
O’Malley, Martin Joseph 2921991.65 2664148850
Graham, Lindsey O. 2932402.63 3131180533
Kasich, John R. 3734242.12 2669944682
Christie, Christopher J. 3976329.13 2421473376
Paul, Rand 4376828.14 16056604577
Fiorina, Carly 4505707.06 12599637777
Walker, Scott 4654810.30 5636746962
Sanders, Bernard 9018526.00 71139864714
Rubio, Marco 10746283.24 22730139555
Carson, Benjamin S. 11746359.74 75613624360
Cruz, Rafael Edward ‘Ted’ 17008622.17 69375616591
Bush, Jeb 23243472.85 14946097673
Clinton, Hillary Rodham 61726374.09 86560202290
上面的代碼首先用donations.groupby(“cand_nm”) 根據(jù)cand_nm 把donations 分成了不同的組。這個(gè)語(yǔ)句返回的是 GroupBy 對(duì)象,GroupBy 類(lèi)型自帶一些專(zhuān)門(mén)用來(lái)整合數(shù)據(jù)的函數(shù)。其中就包含sum() 函數(shù),在這個(gè)問(wèn)題中可以用來(lái)計(jì)算每組中每一列中數(shù)據(jù)的和。

Pandas 在讀取數(shù)據(jù)的時(shí)候就會(huì)自動(dòng)識(shí)別每一列的數(shù)據(jù)類(lèi)型,在進(jìn)行求和時(shí)只會(huì)針對(duì)數(shù)字類(lèi)型的列來(lái)操作。這樣就得到了一個(gè)包含每個(gè)候選人contb_receipt_amt列中所有數(shù)字之和及file_num 列中所有數(shù)字之和的 DataFrame。最后使用 DataFrames 中的 sort() 函數(shù)將contb_receipt_amt 的和從小到大排序。這樣就得到了每個(gè)候選人收到的捐款總額。

將捐款總額可視化

Python 中最主要的可視化包就是 matplotlib,可以用它來(lái)畫(huà)圖。Jupyter notebook 能夠在瀏覽器中直接渲染 matplotlib 的圖表。這個(gè)功能需要通過(guò)激活 matplotlib 的 inline 模式來(lái)開(kāi)啟。可以利用 Jupyter magics 中的命令來(lái)激活它就能直接在 notebook 中看圖表了。

Magics 就是以 % 或者 %% 開(kāi)頭的、能改變 Jupyter notebook 本身的命令。它們是為了讓能夠通過(guò)命令行改變 Jupyter 的設(shè)置,同時(shí)盡量不與 Python 代碼混淆而存在的。要想在瀏覽器里直接看 matplotlib 的圖表,需要在代碼區(qū)塊里運(yùn)行 %matplotlib inline。更多關(guān)于用 Jupyter 畫(huà)圖的內(nèi)容可以 在此 閱讀。

用下面的代碼來(lái)導(dǎo)入 matplotlib 庫(kù)并且開(kāi)啟 inline 模式:

In [15]:
Python
1
2
3
import matplotlib.pyplot as plt

%matplotlib inline
Pandas 中的 DataFrames 自帶對(duì)可視化的支持,調(diào)用 plot() 函數(shù)就可以生成 matplotlib圖表。這么用一般會(huì)比調(diào)用 matplotlib 更方便快捷。先給之前的 DataFrame 賦值給一個(gè)變量 total_donations,再利用 indexing 來(lái)選擇 DataFrame 中的一列: contb_receipt_amt。這樣就生成了一個(gè) Pandas 中的 Series 類(lèi)型的變量。

Pandas 中的 Series 和 DataFrames 包含的函數(shù)都差不多,但是 Series 只能存一維數(shù)據(jù),比如單一行或者單一列。調(diào)用 Series 的 plot() 函數(shù)就生成了一個(gè)顯示每個(gè)候選人收到的捐款總額的柱狀圖。

In [16]:
Python
1
total_donations = donations.groupby(“cand_nm”).sum().sort(“contb_receipt_amt”)
In [20]:
Python
1
total_donations[“contb_receipt_amt”].plot(kind=”bar”)
Out[20]:
1

總結(jié)

以上是生活随笔為你收集整理的Python 数据科学入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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