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

Python進(jìn)行數(shù)據(jù)科學(xué)工作的簡單入門教程

 更新時(shí)間:2015年04月01日 09:58:01   作者:Thomas Wiecki  
這篇文章主要介紹了Python進(jìn)行數(shù)據(jù)科學(xué)工作的簡單入門教程,主要針對Python發(fā)行版Anaconda進(jìn)行說明,需要的朋友可以參考下

Python擁有著極其豐富且穩(wěn)定的數(shù)據(jù)科學(xué)工具環(huán)境。遺憾的是,對不了解的人來說這個(gè)環(huán)境猶如叢林一般(cue snake joke)。在這篇文章中,我會(huì)一步一步指導(dǎo)你怎么進(jìn)入這個(gè)PyData叢林。

你可能會(huì)問,很多現(xiàn)有的PyData包推薦列表怎么樣?我覺得對新手來說提供太多的選擇可能會(huì)受不了。因此這里不會(huì)提供推薦列表,我要討論的范圍很窄,只集中于10%的工具,但它們可以完成你90%的工作。當(dāng)你掌握這些必要的工具后,你就可以瀏覽PyData工具的長列表了,選擇自己接下來要使用的。

值得一提的是,我介紹的這幾個(gè)工具可以讓你完成一個(gè)數(shù)據(jù)科學(xué)家日常的絕大部分工作了(比如數(shù)據(jù)輸入輸出、數(shù)據(jù)再加工以及數(shù)據(jù)分析)。
安裝

經(jīng)常會(huì)有人過來和我說“我聽說Python很擅長處理數(shù)據(jù)科學(xué),所以我想學(xué)一下。但是安裝Python和所有其他模塊就耗費(fèi)了兩天時(shí)間”。安裝Python是很合理的,因?yàn)槟阋盟?,但是?dāng)你不知道真正需要哪些其他工具時(shí)就手動(dòng)安裝所有的PyData工具,這確實(shí)是一項(xiàng)大工程啊。所以我強(qiáng)烈反對這樣做。

幸運(yùn)的是,Continuum的一伙人創(chuàng)建了Python發(fā)行版Anaconda,它包含了大部分PyData工具包。默認(rèn)沒有的模塊也可以輕松地通過GUI安裝。這個(gè)發(fā)行版適用于所有主流平臺(tái)。這樣無需耗費(fèi)兩天安裝了,可以直接使用它。
IPython Notebook

Python安裝后,大部分人直接啟動(dòng)并開始學(xué)習(xí)。這很合理,但遺憾的是又大錯(cuò)特錯(cuò)了。我沒見過直接在Python命令行中運(yùn)行Python科學(xué)計(jì)算環(huán)境的(因人而異)。相反,可以使用IPython,特別是IPython Notebook,它們都是特別強(qiáng)大的Python shell,被廣泛地使用在PyData領(lǐng)域中。我強(qiáng)烈建議你直接使用IPython Notebook(IPyNB)而不用為其他事所煩擾,你不會(huì)后悔的。簡而言之,IPyNB是一個(gè)通過瀏覽器訪問的Python shell。它允許你混合編輯代碼、文本和圖形(甚至是交互對象)。本文就是在IPyNB中完成的。在Python的會(huì)議中,幾乎所有的演講都使用IPython Notebook。Anaconda中預(yù)裝了IPyNB,可以直接使用。下面看下它是什么樣的:

In [1]:

print('Hello World')
Hello World

IPyNB發(fā)展很快——每次在會(huì)議中聽(IPyNB的)核心開發(fā)人員演講時(shí),我總被他們想出的新功能所震撼。要了解它的一些先進(jìn)功能,可以看看下面這個(gè)關(guān)于IPython小工具的簡短教程。這些小工具可以讓你使用滑動(dòng)條交互地控制繪圖:

In [1]:
 

from IPython.display import YouTubeVideo
YouTubeVideo('wxVx54ax47s') # 沒錯(cuò),它也可以嵌入youtube視頻

Out[1]:
6. IPython Widgets – IPython Notebook Tutorial
Pandas

通常,大家會(huì)建議你先學(xué)習(xí)NumPy(讀作num-pie,不是num-pee),一個(gè)支持多維數(shù)組的庫。幾年前肯定得這樣,但現(xiàn)在我?guī)缀醪皇褂肗umPy。因?yàn)镹umPy越來越成為一個(gè)被其他庫所使用核心庫,這些庫通常具有更優(yōu)雅的接口。因此,Pandas成為了處理數(shù)據(jù)所主要使用的庫。它可以以各種格式(包括數(shù)據(jù)庫)輸入輸出數(shù)據(jù)、執(zhí)行join以及其他SQL類似的功能來重塑數(shù)據(jù)、熟練地處理缺失值、支持時(shí)間序列、擁有基本繪圖功能和統(tǒng)計(jì)功能,等等還有很多。對它所有的特性來說,肯定有一個(gè)學(xué)習(xí)曲線,但我強(qiáng)烈去建議你先看一下大部分文檔。你所投入的時(shí)間將使你的數(shù)據(jù)再加工過程更高效,這會(huì)帶來上千倍的回報(bào)。這里有一些快速技巧會(huì)讓你胃口大開的:
In [18]:
 

import pandas as pd
 
df = pd.DataFrame({ 'A' : 1.,
          'B' : pd.Timestamp('20130102'),
          'C' : pd.Series(1, index=list(range(4)), dtype='float32'),
          'D' : pd.Series([1, 2, 1, 2], dtype='int32'),
          'E' : pd.Categorical(["test", "train", "test", "train"]),
          'F' : 'foo' })

In [19]:

Out[19]:

 A B C D E F
0 1 2013-01-02 1 1 test foo
1 1 2013-01-02 1 2 train foo
2 1 2013-01-02 1 1 test foo
3 1 2013-01-02 1 2 train foo

可以通過列名來獲取某一列:

In [17]:
 
df.B
Out[17]:
 
0  2013-01-02
1  2013-01-02
2  2013-01-02
3  2013-01-02
Name: B, dtype: datetime64[ns]
 
Compute the sum of D for each category in E:
按E分類,每類對D求和:
In [21]:
 
df.groupby('E').sum().D
Out[21]:
 
E
test   2
train  4
Name: D, dtype: int32

使用NumPy(或者笨重的Matlab)達(dá)到同樣的目的會(huì)很麻煩。

還有非常多的用法。不相信的話可以看一下這個(gè)教程“10 minutes to pandas”。上面的例子也來自這個(gè)教程。
Seaborn

Matplotlib是Python主要的繪圖庫。但是,我不建議你直接使用它,原因與開始不推薦你使用NumPy是一樣的。雖然Matplotlib很強(qiáng)大,它本身就很復(fù)雜,你的圖經(jīng)過大量的調(diào)整才能變精致。因此,作為替代,我推薦你一開始使用Seaborn。Seaborn本質(zhì)上使用Matplotlib作為核心庫(就像Pandas對NumPy一樣)。我將簡短地描述下seaborn的優(yōu)點(diǎn)。具體來說,它可以:

  1.     默認(rèn)情況下就能創(chuàng)建賞心悅目的圖表。(只有一點(diǎn),默認(rèn)不是jet colormap
  2.     創(chuàng)建具有統(tǒng)計(jì)意義的圖
  3.     能理解pandas的DataFrame類型,所以它們一起可以很好地工作。

雖然anaconda預(yù)裝了pandas,卻沒安裝seaborn。可以通過conda install seaborn輕松地安裝。
具有統(tǒng)計(jì)意義的圖
In [5]:
 

%matplotlib inline # IPython magic to create plots within cells

In [7]:
 

import seaborn as sns
 
# Load one of the data sets that come with seaborn
tips = sns.load_dataset("tips")
 
sns.jointplot("total_bill", "tip", tips, kind='reg');

20154195429304.jpg (421×423)

如你所見,僅通過一行代碼,我們就創(chuàng)建了一個(gè)漂亮復(fù)雜的統(tǒng)計(jì)圖,其中包含擁有置信區(qū)間的最擬合回歸直線、邊界圖,以及相關(guān)系數(shù)。使用matplotlib重新繪制這幅圖的話需要相當(dāng)多的(丑陋)代碼,包括調(diào)用scipy執(zhí)行線性回歸并手動(dòng)利用線性回歸方程繪制直線(我甚至想不出怎么在邊界繪圖,怎么計(jì)算置信區(qū)間)。上面和下面的例子都摘自教程“the tutorial on quantitative linear models”。
與Pandas的DataFrame很好地工作

數(shù)據(jù)有自己的結(jié)構(gòu)。通常我們感興趣的包含不同的組或類(這種情況下使用pandas中g(shù)roupby的功能會(huì)讓人感到很神奇)。比如tips(小費(fèi))的數(shù)據(jù)集是這樣的:
In [9]:
 

tips.head()
Out[9]:
 total_bill tip sex smoker day time size
0 16.99 1.01 Female No Sun Dinner 2
1 10.34 1.66 Male No Sun Dinner 3
2 21.01 3.50 Male No Sun Dinner 3
3 23.68 3.31 Male No Sun Dinner 2
4 24.59 3.61 Female No Sun Dinner 4

我們可能想知道吸煙者給的小費(fèi)是否與不吸煙的人不同。沒有seaborn的話,這需要使用pandas的groupby功能,并通過復(fù)雜的代碼繪制線性回歸直線。使用seaborn的話,我們可以給col參數(shù)提供列名,按我們的需要?jiǎng)澐謹(jǐn)?shù)據(jù):
In [11]:
 

sns.lmplot("total_bill", "tip", tips, col="smoker");

20154195344640.jpg (690×341)

很整潔吧?

隨著你研究得越深,你可能想更細(xì)粒度地控制這些圖表的細(xì)節(jié)。因?yàn)閟eaborn只是調(diào)用了matplotlib,那時(shí)你可能會(huì)想學(xué)習(xí)這個(gè)庫。然而,對絕大部分工作來說我還是喜歡使用seaborn。
總結(jié)

這篇文章的想法是通過提供部分包來最大化新手使用Python處理數(shù)據(jù)科學(xué)的效率。

相關(guān)文章

  • 淺談python數(shù)據(jù)類型及其操作

    淺談python數(shù)據(jù)類型及其操作

    今天帶大家了解python數(shù)據(jù)類型的相關(guān)知識(shí),文中介紹的非常詳細(xì),對正在學(xué)習(xí)python的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • python中面向?qū)ο蟮淖⒁恻c(diǎn)概述總結(jié)

    python中面向?qū)ο蟮淖⒁恻c(diǎn)概述總結(jié)

    大家好,本篇文章主要講的是python中面向?qū)ο蟮淖⒁恻c(diǎn)概述總結(jié),感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • Python生成器generator用法示例

    Python生成器generator用法示例

    這篇文章主要介紹了Python生成器generator用法,結(jié)合實(shí)例形式分析了Python生成器generator常見操作技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2018-08-08
  • 淺談PyQt5中異步刷新UI和Python多線程總結(jié)

    淺談PyQt5中異步刷新UI和Python多線程總結(jié)

    今天小編就為大家分享一篇淺談PyQt5中異步刷新UI和Python多線程總結(jié),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python使用while循環(huán)花式打印乘法表

    Python使用while循環(huán)花式打印乘法表

    今天小編就為大家分享一篇關(guān)于Python使用while循環(huán)花式打印乘法表,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Python數(shù)據(jù)處理-導(dǎo)入導(dǎo)出excel數(shù)據(jù)

    Python數(shù)據(jù)處理-導(dǎo)入導(dǎo)出excel數(shù)據(jù)

    這篇文章主要介紹了Python數(shù)據(jù)處理-導(dǎo)入導(dǎo)出excel數(shù)據(jù),Python的一大應(yīng)用就是數(shù)據(jù)分析了,而數(shù)據(jù)分析中,經(jīng)常碰到需要處理Excel數(shù)據(jù)的情況。這里做一個(gè)Python處理Excel數(shù)據(jù)的總結(jié),需要的小伙伴可以參考一下
    2022-01-01
  • python 實(shí)現(xiàn)批量xls文件轉(zhuǎn)csv文件的方法

    python 實(shí)現(xiàn)批量xls文件轉(zhuǎn)csv文件的方法

    今天小編就為大家分享一篇python 實(shí)現(xiàn)批量xls文件轉(zhuǎn)csv文件的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python3+Appium實(shí)現(xiàn)多臺(tái)移動(dòng)設(shè)備操作的方法

    Python3+Appium實(shí)現(xiàn)多臺(tái)移動(dòng)設(shè)備操作的方法

    這篇文章主要介紹了Python3+Appium實(shí)現(xiàn)多臺(tái)移動(dòng)設(shè)備操作的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python3 執(zhí)行Linux Bash命令的方法

    Python3 執(zhí)行Linux Bash命令的方法

    今天小編就為大家分享一篇Python3 執(zhí)行Linux Bash命令的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • 解讀Django框架中的低層次緩存API

    解讀Django框架中的低層次緩存API

    這篇文章主要介紹了解讀Django框架中的低層次緩存API,Django是最具人氣的Python web開發(fā)框架,需要的朋友可以參考下
    2015-07-07

最新評(píng)論