SOTON私人定制:利用Python進(jìn)行數(shù)據(jù)分析(前言笋庄、案例和IPython)

前言與案例

前言

使用Python的幾個(gè)原因:

  • Python目前有比較強(qiáng)大的數(shù)據(jù)分析庫(kù): pandas, scikit-learn
  • Python和C與FORTRAN的交互比較容易泞遗,可以使用C和FROTRAN的庫(kù)處理線性代數(shù)惰许,優(yōu)化問題,積分和快速傅里葉變換
  • Python既能用于探索性研究史辙,設(shè)計(jì)原型機(jī)汹买,并且也能構(gòu)建生產(chǎn)系統(tǒng)。如果使用R/SAS聊倔,后續(xù)還得用Java, C#, C++實(shí)現(xiàn)生產(chǎn)系統(tǒng)的代碼

不用Python的理由也有:

  • 運(yùn)行速度太慢晦毙。不過和人力相比起來,計(jì)算機(jī)成本不算啥
  • Python有一個(gè)被人嫌棄的全局解釋鎖(global interpreter lock, GIL)方库,不能使用多線程结序,怎么玩集群!

不過目前有PyPy等項(xiàng)目可以加速纵潦,初學(xué)者目前不需要擔(dān)心這個(gè)運(yùn)行速度問題徐鹤,更大的問題是你想不出數(shù)據(jù)分析方案。

必要的Python庫(kù):Numpy(Python數(shù)值計(jì)算的基石),pandas(將R的data.frame在Python中進(jìn)行實(shí)現(xiàn)), matplotlib(Python最棒的圖形庫(kù)), IPython和Jupyter(效率神器), SciPy(科學(xué)計(jì)算常用庫(kù)), scikit-learn(機(jī)器學(xué)習(xí)少不了它), statsmodels(Python的統(tǒng)計(jì)分析庫(kù))

Python最佳發(fā)行版: Anaconda

Python版本:Python3是未來趨勢(shì)

Python社區(qū)和會(huì)議:pydata,, pystatsmodels

約定俗成的幾行代碼:

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
import statsmodels as sm

一些術(shù)語(yǔ):

  • Mugne/munging/wrangling: 通常翻譯成數(shù)據(jù)規(guī)整化邀层,指的是非結(jié)構(gòu)化數(shù)據(jù)和混亂的數(shù)據(jù)經(jīng)過一系列的處理成為結(jié)構(gòu)和整齊的數(shù)據(jù)形式
  • pseudocode: 偽代碼返敬,就是不能直接運(yùn)行的代碼,主要表現(xiàn)思想
  • Syntactic sugar: 語(yǔ)法糖寥院, 不是新的語(yǔ)言特性劲赠,僅僅是將一些語(yǔ)法變得更加好寫,好用而已秸谢。雖然大家經(jīng)常會(huì)吐槽XXX不就是語(yǔ)法糖嘛凛澎,但是用的時(shí)候一點(diǎn)都不含糊。

案例

在正式開始使用Python進(jìn)行數(shù)據(jù)分析的時(shí)候估蹄,先了解Python能做什么能夠提高我們學(xué)習(xí)的信心塑煎。作者舉了幾個(gè)例子,用來體現(xiàn)數(shù)據(jù)分析的常規(guī)流程:讀取臭蚁、寫入數(shù)據(jù)最铁,準(zhǔn)備數(shù)據(jù)讯赏,格式變換,建模和計(jì)算冷尉,可視化展示漱挎。

所用數(shù)據(jù)可以在https://github.com/wesm/pydata-book進(jìn)行下載

git clone https://github.com/wesm/pydata-book.git

案例:usa.gov的短域名數(shù)據(jù), 展示前10個(gè)時(shí)區(qū)

%matplotlib inline
# 讀取數(shù)據(jù)
import json
records = [json.loads(line) for line in open(file="../pydata-book/datasets/bitly_usagov/example.txt")]
# 數(shù)據(jù)準(zhǔn)備雀哨,清理
from pandas import DataFrame, Series
df = DataFrame(records)
clean_tz = df['tz'].fillna('Missing')
clean_tz[clean_tz == ''] = 'Unknown'
tz_counts = clean_tz.value_counts()
# 可視化
tz_counts[:10].plot(kind='barh', rot=0)
前10時(shí)區(qū)

IPython常用操作

后續(xù)的主要數(shù)據(jù)分析都是利用Ipython磕谅,IPython是加強(qiáng)版的Python交互終端,效率神器震束。一般都是通過命令行jupyter notebook啟動(dòng)瀏覽器版怜庸。在Jupyter下,混寫markdown語(yǔ)法和Python代碼保存為pynb格式垢村,方便讓別人理解你的分析過程割疾。

IPython用起來和普通的Python shell差不多,但是記住如下特性能夠大大提高效率

IPtyhon常用操作

在正式學(xué)習(xí)數(shù)據(jù)分析之前嘉栓,我們需要先找一個(gè)合適的工具宏榕。IPython雖然只提供了更強(qiáng)大的交互式shell界面,但是由于它的"執(zhí)行-探索"的設(shè)計(jì)理念非常符合數(shù)據(jù)分析侵佃,所以我們先來熟悉一下IPython麻昼,為之后的學(xué)習(xí)打下基礎(chǔ)。

  • 安裝
pip install ipython
  • 啟動(dòng)

在cmd直接敲下ipython就會(huì)出現(xiàn)交互式的界面

IPython

常用功能

  • 1.Tab補(bǔ)全

是不是覺得每次都把命令打全特別累呀馋辈,是不是會(huì)突然忘記某個(gè)命令怎么拼寫了呢抚芦?只要輸入命令的前幾個(gè),按下Tab迈螟,Ipython就會(huì)為你自動(dòng)補(bǔ)全叉抡,或者提供候補(bǔ)選項(xiàng),甚至它會(huì)為你補(bǔ)全文件路徑答毫。

TAB補(bǔ)全
  • 2.屬性查看褥民?

你剛剛定義了一個(gè)變量,但是你Python剛?cè)腴T洗搂,不清楚這個(gè)變量到底屬于list還是dic消返,這時(shí)候你只要在這個(gè)變量后加一個(gè)?就能查看詳細(xì)信息了(其實(shí)放在前面也行)

?的作用

ps:如果你定義的是一個(gè)函數(shù)耘拇,使用??還可以查看源代碼

  • 3.內(nèi)部執(zhí)行python腳本

在普通python命令下撵颊,我們想執(zhí)行一個(gè)腳本只能先退出然后運(yùn)行這個(gè)腳本,但是在ipython下你可以直接在內(nèi)部執(zhí)行一個(gè)剛定義的腳本惫叛,這個(gè)神奇的方法就叫做%run

新建一個(gè)hello.py
%run
  • 4.神奇的復(fù)制

假設(shè)你有一段代碼如下:

    x5
        print('hello world')

    hello()

你不想一行一行的重新敲秦驯,希望直接復(fù)制運(yùn)行,怎么做呢挣棕?一種方法直接復(fù)制粘貼译隘,這種方法遇到tab縮進(jìn)的代碼容易出錯(cuò)。另一個(gè)方法復(fù)制之后用%pastecpaste洛心,高端又安全固耘。

  • 5.快捷鍵

假設(shè)你運(yùn)行hello函數(shù)時(shí),不小心敲成了ehllo词身。你想修改這個(gè)錯(cuò)誤厅目,于是你用方向鍵一個(gè)一個(gè)往前移動(dòng),這太不效率了用Ctrl+A吧法严。還有沒有其他快捷鍵呢损敷?當(dāng)然有了,下面就是Ipython提供的快捷鍵深啤,記住他們可以讓你的效率提高好多倍呢拗馒!

  • Ctrl-P 或上箭頭鍵 后向搜索命令歷史中以當(dāng)前輸入的文本開頭的命令
  • Ctrl-N 或下箭頭鍵 前向搜索命令歷史中以當(dāng)前輸入的文本開頭的命令
  • Ctrl-R 按行讀取的反向歷史搜索(部分匹配)
  • Ctrl-Shift-v 從剪貼板粘貼文本
  • Ctrl-C 中止當(dāng)前正在執(zhí)行的代碼
  • Ctrl-A 將光標(biāo)移動(dòng)到行首
  • Ctrl-E 將光標(biāo)移動(dòng)到行尾
  • Ctrl-K 刪除從光標(biāo)開始至行尾的文本
  • Ctrl-U 清除當(dāng)前行的所有文本譯注12
  • Ctrl-F 將光標(biāo)向前移動(dòng)一個(gè)字符
  • Ctrl-b 將光標(biāo)向后移動(dòng)一個(gè)字符
  • Ctrl-L 清屏
  • 6.與操作系統(tǒng)互動(dòng)

在普通的python環(huán)境中,與操作系統(tǒng)互動(dòng)是一件比較麻煩的事情溯街,你看需要import os然后執(zhí)行某些指令诱桂。但是IPython為你解決了這些問題。

呈昔!cmd 執(zhí)行系統(tǒng)shell的cmd
output = !cmd args 運(yùn)行cmd并儲(chǔ)存標(biāo)準(zhǔn)輸出
%cd 文件目錄 切換文件目錄
%pwd  查看當(dāng)前工作目錄
%dirs 查看當(dāng)前目錄的所有文件
%env 打印環(huán)境變量

事實(shí)上你可以用挥等!+args執(zhí)行所有的環(huán)境變量。

  • 7.魔法命令(magic commands)

除了之前%run之外堤尾,IPtyhon還提供了許多以%開頭的魔法指令肝劲,下面只是幾個(gè)比較實(shí)用。

  1. %matplotlib
    可以將matplotlib的圖表直接嵌入到Notebook之中郭宝,或者使用指定的界面庫(kù)顯示圖表辞槐,它有一個(gè)參數(shù)指定matplotlib圖表的顯示方式。
  2. 性能分析
    %timeit調(diào)用timeit模塊對(duì)單行語(yǔ)句重復(fù)執(zhí)行多次剩蟀,計(jì)算出其執(zhí)行時(shí)間催蝗。%%timeit則用于測(cè)試整個(gè)單元中代碼的執(zhí)行時(shí)間
  3. %hist
    查看命令行歷史
  4. %reset
    重置IPython內(nèi)的所有變量

你可以執(zhí)行%magic查看關(guān)于各個(gè)命令的說明,而在命令之后添加?可以查看該命令的詳細(xì)說明育特。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末丙号,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子缰冤,更是在濱河造成了極大的恐慌犬缨,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棉浸,死亡現(xiàn)場(chǎng)離奇詭異怀薛,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)迷郑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門枝恋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來创倔,“玉大人,你說我怎么就攤上這事焚碌∑枞粒” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵十电,是天一觀的道長(zhǎng)知押。 經(jīng)常有香客問我,道長(zhǎng)鹃骂,這世上最難降的妖魔是什么台盯? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮畏线,結(jié)果婚禮上静盅,老公的妹妹穿的比我還像新娘。我一直安慰自己象踊,他們只是感情好温亲,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著杯矩,像睡著了一般栈虚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上史隆,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天魂务,我揣著相機(jī)與錄音,去河邊找鬼泌射。 笑死粘姜,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的熔酷。 我是一名探鬼主播孤紧,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼拒秘!你這毒婦竟也來了号显?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤躺酒,失蹤者是張志新(化名)和其女友劉穎押蚤,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體羹应,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡揽碘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雳刺。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡劫灶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出掖桦,到底是詐尸還是另有隱情浑此,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布滞详,位于F島的核電站,受9級(jí)特大地震影響紊馏,放射性物質(zhì)發(fā)生泄漏料饥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一朱监、第九天 我趴在偏房一處隱蔽的房頂上張望岸啡。 院中可真熱鬧,春花似錦赫编、人聲如沸巡蘸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)悦荒。三九已至,卻和暖如春嘹吨,著一層夾襖步出監(jiān)牢的瞬間搬味,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工蟀拷, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留碰纬,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓问芬,卻偏偏與公主長(zhǎng)得像悦析,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子此衅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容