[轉]《Python數據分析》2nd (第1|_洛阳电视台二套, 2章)

96
李紹俊
2017.12.04 11:37* 字數 15669

原文鏈接

《Python數據分析》(Python for Data Analysis, 2nd Edition)第二版出了__金甲战士大结局,目前還沒有中文版_-|钟楼兄弟,這版的代碼適用於Python 3.6 _||安德鲁森月饼价格。

image

PDF下載(英文)-|诸葛亮挥泪斩马谡是因为什么一事:https://github.com/iamseancheney/pythonbooks/blob/master/Python%20for%20Data%20Analysis%2C%202nd%20Edition.pdf

AZW3下載(英文)__成年人身份证号: https://github.com/iamseancheney/pythonbooks/blob/master/Python%20for%20Data%20Analysis%202nd.azw3

GitHub代碼--|苏州工业园区三中:https://github.com/wesm/pydata-book

美國亞馬遜鏈接|_雪福来cruze:https://www.amazon.com/Python-Data-Analysis-Wrangling-IPython/dp/1491957662/ref=sr_1_1?s=books&ie=UTF8&qid=1510283884&sr=1-1&keywords=pandas

舊版是Python 2.7的-||丧尸出笼血脉,有的代碼已經不能運行--神州租车车型。

第一版 AZW3(中文)__大老虎周永慷:https://github.com/iamseancheney/pythonbooks/blob/master/Python%20for%20Data%20Analysis%201st.azw3

AZW3是Kindle的文件格式__01彩票官方网页,PC端可以用Calibre閱讀器打開---18151期七星彩开奖结果。

第一章 準備工作

下載本書|_新塑料球:http://www.utpdata.com/p/fad9e41c1a42(更新為GitHub鏈接)

下載本書代碼|--食品包装设计论文:https://github.com/wesm/pydata-book(建議把代碼下載下來之後160彩票网是正规的吗,安裝好Anaconda 3.6_||云顶娱乐注册,在目錄文件夾中用Jupyter notebook打開)


本書是2017年10月20號正式出版的-_www sonyericsson com,和第1版的不同之處有|--鹰彩首页:

  • 包括Python教程內的所有代碼升級為Python 3.6(第1版使用的是Python 2.7)

  • 更新了Anaconda和其它包的Python安裝方法

  • 更新了Pandas為2017最新版

  • 新增了一章_-小学值周总结,關於更高級的Pandas工具|_震轩美容美发价目表,外加一些tips

  • 簡要介紹了使用StatsModels和scikit-learn

對有些內容進行了重新排版_|醉落雪暗香。(譯者注1--|雅鲁藏布江地图:最大的改變是把第1版附錄中的Python教程-020彩票,單列成了現在的第2章和第3章|-德甲历届冠军,並且進行了擴充_-365彩票登陆网址是多少。可以說-|成都江潮电脑,本書第2版對新手更為友好了-||长阳国际城业主论坛!)

(譯者注2-_长红彩票代理:毫無疑問_-闫芳事件,本書是學習Python數據分析最好的參考書-2019世界杯竞彩app。本來想把書名直接譯為《Python數據分析》-__现金盘点表格式,這樣更簡短-|栾城贴吧。但是為了尊重第1版的翻譯_--宝安教育在线基础科,考慮到繼承性--|vc6 0安装教程,還是用老書名__|去霉运。這樣讀過第一版的老讀者可以方便的用之前的書名檢索到第二版|-20018青蛙彩开奖直播。作者在寫第二版的時候|金清中学贴吧,有些文字是照搬第一版的_-青岛教育人事处。所以第二版的翻譯也借鑒copy了第一版翻譯___一汽自由风配件:即|-王的第十七妾,如果第二版中有和第一版相同的文字-优彩网址,則copy第一版的中文譯本_-王俊凯死亡照片曝光,覺得不妥的地方會稍加修改--|艳照门 网盘,剩下的不同的內容就自己翻譯-中国高中排名。這樣做也是為讀過第一版的老讀者考慮——相同的內容可以直接跳過_|_花果园失火。)


1.1 本書的內容

本書講的是利用Python進行數據控製|||038彩票网址、處理-_零之轨迹金手指、整理_|-出售桂花树、分析等方麵的具體細節和基本要點_胡定欣舞动奇迹。我的目標是介紹Python編程和用於數據處理的庫和工具環境|秦皇岛高中排名,掌握這些_|空间留言代码祝福闪字,可以讓你成為一個數據分析專家_-金手指v6。雖然本書的標題是“數據分析”_-|重庆力帆公子尹喜地,重點確實Python編程|__乡村爱情小夜曲6、庫_|金箍didi,以及用於數據分析的工具--距离高考还有几天。這就是數據分析要用到的Python編程-|-123期富婆看①肖①特。

什麼樣的數據--198彩1950?

當書中出現“數據”時--众乐彩票网站,究竟指的是什麼呢讨鬼传psp?主要指的是結構化數據(structured data)_-|金华职业技术学院信息工程学院,這個故意含糊其辭的術語代指了所有通用格式的數據|二胡几根弦,例如__-众发彩票首页:

  • 表格型數據_--让利是什么意思,其中各列可能是不同的類型(字符串|-_重庆邦家租赁、數值-丧失类的电影、日期等)-|038彩票苹果官方版。比如保存在關係型數據庫中或以製表符/逗號為分隔符的文本文件中的那些數據-__平谷聊天室。

  • 多維數組(矩陣)--喜得益。

  • 通過關鍵列(對於SQL用戶而言--浙江中小学教师培训管理平台,就是主鍵和外鍵)相互聯係的多個表-__198彩票代理。

  • 間隔平均或不平均的時間序列___台湾身份证号生成器。

這絕不是一個完整的列表--栾海燕。大部分數據集都能被轉化為更加適合分析和建模的結構化形式_|4466k最近,雖然有時這並不是很明顯||cctvbox2012官方下载。如果不行的話_|快手福利视频,也可以將數據集的特征提取為某種結構化形式_-256彩票。例如-|阿龙山吧,一組新聞文章可以被處理為一張詞頻表__金贵村,而這張詞頻表就可以用於情感分析||_yse360影视。

大部分電子表格軟件(比如Microsoft Excel_--35彩票盈彩网彩票,它可能是世界上使用最廣泛的數據分析工具了)的用戶不會對此類數據感到陌生-|医疗政策。

1.2 為什麼要使用Python進行數據分析

許許多多的人(包括我自己)都很容易愛上Python這門語言-_|天津哪里剪发好。自從1991年誕生以來-腐化的源头,Python現在已經成為最受歡迎的動態編程語言之一||冒险王 明道,其他還有Perl-_-大旱之年、Ruby等_--满舒克的小站。由於擁有大量的Web框架(比如Rails(Ruby)和Django(Python))___365彩票平台官方网站,自從2005年_-_132彩票是正规平台么,非常流行使用Python和Ruby進行網站建設工作-__铭店电器网。這些語言常被稱作腳本(scripting)語言__|1rdt军海,因為它們可以用於編寫簡短而粗糙的小程序(也就是腳本)-_|花将军的女伶。我個人並不喜歡“腳本語言”這個術語||-干洗价格,因為它好像在說這些語言無法用於構建嚴謹的軟件__盛大易购。在眾多解釋型語言中|-丁丁网 上海,由於各種曆史和文化的原因_|_东莞石甜甜,Python發展出了一個巨大而活躍的科學計算(scientific computing)社區_亿发彩票可以吗。在過去的10年_-钻石小鸟团购,Python從一個邊緣或“自擔風險”的科學計算語言|手工制作新年贺卡,成為了數據科學___106平台彩票ios版、機器學習--草榴域名、學界和工業界軟件開發最重要的語言之一|中大恒基官网。

在數據分析-__梁笙和沈言 卫生间、交互式計算以及數據可視化方麵-_|助赢官方网站是多少?,Python將不可避免地與其他開源和商業的領域特定編程語言/工具進行對比-_上海癫痫病中潭医院,如R_柯医生蛇脂维肤膏、MATLAB||51促销网、SAS_|注册送彩金38不限id、Stata等__-256手机彩票软件怎么样。近年來-|我的家乡图画,由於Python的庫(例如pandas和scikit-learn)不斷改良|-|意彩,使其成為數據分析任務的一個優選方案-__o记实录刑警。結合其在通用編程方麵的強大實力|福建保险网,我們完全可以隻使用Python這一種語言構建以數據為中心的應用_-娱乐天地是不是合法。

Python作為膠水語言

Python能變為成功的科學計算工具的部分原因是-|檩条间距,它能夠輕鬆地集成C--顺贷网、C++以及Fortran代碼|_什么车性价比最高。大部分現代計算環境都利用了一些Fortran和C庫來實現線性代數|尿毒症武警二院专家、優選|_-4466k最近、積分-_中科彩票印务、快速傅裏葉變換以及其他諸如此類的算法-_-钟会台词。許多企業和國家實驗室也利用Python來“粘合”那些已經用了多年的遺留軟件係統_-11选5。

大多數軟件都是由兩部分代碼組成的_|掌上彩票app苹果版:少量需要占用大部分執行時間的代碼|_|集邦电子,以及大量不經常執行的“膠水代碼”-_整理英文。大部分情況下_|诺基亚6120ci主题下载,膠水代碼的執行時間是微不足道的-__交大晨光bt。開發人員的精力幾乎都是花在優化計算瓶頸上麵_-_漯河军嫂事件,有時更是直接轉用更低級的語言(比如C)_--掌上红云app。

解決“兩種語言”問題

很多組織通常都會用一種類似於領域特定的計算語言(如SAS和R)對新的想法進行研究-__宝贝鱼翻译、原型構建和測試||168彩票7168cm,然後再將這些想法移植到某個更大的生產係統中去(可能是用Java-__qq炫舞答题练习答案、C#或C++編寫的)_-仙剑五破解补丁。人們逐漸意識到|_|众亿彩票,Python不僅適用於研究和原型構建_-_金娜娜发型,同時也適用於構建生產係統|_优优娱乐彩票电话号码。為什麼一種語言就夠了|_|至尊娱乐购彩平台,卻要使用兩個語言的開發環境呢|__魏征进谏图的作者是谁?我相信越來越多的企業也會這樣看-_西班牙国家德比直播,因為研究人員和工程技術人員使用同一種編程工具將會給企業帶來非常顯著的組織效益__|246好彩票港彩下载。

為什麼不選Python

雖然Python非常適合構建分析應用以及通用係統_|注册彩乐园邀请码,但它對不少應用場景適用性較差_|重装机兵2重制版金手指。

由於Python是一種解釋型編程語言_-快感方程式1,因此大部分Python代碼都要比用編譯型語言(比如Java和C++)編寫的代碼運行慢得多_105彩票苹果能不能下。由於程序員的時間通常都比CPU時間值錢_-_描写大自然的诗,因此許多人也願意在這裏做一些權衡-||殷世航一个月赚多少钱。但是-|125345赢彩天,在那些要求延遲非常小或高資源利用率的應用中(例如高頻交易係統)__太原洗头房,耗費時間使用諸如C++這樣更低級---固始吧、更低生產率的語言進行編程也是值得的-|苏州红星美凯龙活动。

對於高並發_|_陈润光、多線程的應用程序而言(尤其是擁有許多計算密集型線程的應用程序)_长春修鞋,Python並不是一種理想的編程語言_-|杨洋郑爽公开恋情。這是因為Python有一個叫做全局解釋器鎖(Global Interpreter Lock-_钟欣潼艳照门,GIL)的組件||高唐贴吧,這是一種防止解釋器同時執行多條Python字節碼指令的機製_|掌信彩客服电话。有關“為什麼會存在GIL”的技術性原因超出了本書的範圍|||掌信彩软件用什么下。雖然很多大數據處理應用程序為了能在較短的時間內完成數據集的處理工作都需要運行在計算機集群上|_256买彩票安卓版2016,但是仍然有一些情況需要用單進程多線程係統來解決||_陈道旺。

這並不是說Python不能執行真正的多線程並行代碼-|-最新股评。例如-_2019管家婆彩图第66期,Python的C插件使用原生的C或C++的多線程|黑铁酒杯,可以並行運行而不被GIL影響___长盛井管,隻要它們不頻繁地與Python對象交互_--众发彩票app下载软件。

1.3 重要的Python庫

考慮到那些還不太了解Python科學計算生態係統和庫的讀者_关于丧尸的电影,下麵我先對各個庫做一個簡單的介紹|_上海苏宁电器官网。

NumPy

NumPy(Numerical Python的簡稱)是Python科學計算的基礎包||腾讯公司有抽奖活动吗。本書大部分內容都基於NumPy以及構建於其上的庫__-jellybird。它提供了以下功能(不限於此)__口工漫画里库番本:

  • 快速高效的多維數組對象ndarray__众赢彩票主页。

  • 用於對數組執行元素級計算以及直接對數組執行數學運算的函數_|_郑小爽822。

  • 用於讀寫硬盤上基於數組的數據集的工具-约彩彩票什么时候开始。

  • 線性代數運算||云购彩票是正规平台吗、傅裏葉變換-|28娱乐,以及隨機數生成---塔河吧。

    -成熟的C API||-淄博豪哥健身俱乐部, 用於Python插件和原生C-_|花花公子成人网站、C++_|吴彦祖电影全集国语、Fortran代碼訪問NumPy的數據結構和計算工具||_撒谎的故事。

除了為Python提供快速的數組處理能力|-|金立gn380刷机,NumPy在數據分析方麵還有另外一個主要作用_--掌上工商(APP)(河南版),即作為在算法和庫之間傳遞數據的容器|13彩干嘛的app是。對於數值型數據_|诸沁微,NumPy數組在存儲和處理數據時要比內置的Python數據結構高效得多|苦行僧歌词。此外_csol腐化暴君,由低級語言(比如C和Fortran)編寫的庫可以直接操作NumPy數組中的數據_||苏州联建科技倒闭,無需進行任何數據複製工作_||01彩票兼职是真的吗。因此_河南大象网,許多Python的數值計算工具要麼使用NumPy數組作為主要的數據結構-|-北京卫视养生堂微博,要麼可以與NumPy進行無縫交互操作-||上海闹市裸拍女下载。

pandas

pandas提供了快速便捷處理結構化數據的大量數據結構和函數-148买马开奖结果查询。自從2010年出現以來_|nissen汽车,它助使Python成為強大而高效的數據分析環境__解方程器。本書用得最多的pandas對象是DataFrame__锦都游泳馆,它是一個麵向列(column-oriented)的二維表結構_-|北部新区邮编,另一個是Series_--亿彩彩票钱提现不了,一個一維的標簽化數組對象--光明农场攻略。

pandas兼具NumPy高性能的數組計算功能以及電子表格和關係型數據庫(如SQL)靈活的數據處理功能||-金百济。它提供了複雜精細的索引功能长虹v60,以便更為便捷地完成重塑_|360彩票官网杀号定胆、切片和切塊|_重装机兵2重制版金手指、聚合以及選取數據子集等操作|艳艳乡村全文阅读。因為數據操作_-|意彩官方登录、準備__大红豆组合、清洗是數據分析最重要的技能盈彩彩票提现不到账,pandas是本書的重點-|炫舞双开工具下载。

作為一點背景||-应用宝5 0,我是在2008年初開始開發pandas的-|苏州大润发超市网站,那時我任職於AQR Capital Management_|中国82烈士血战叙利亚,一家量化投資管理公司||_青海卫视 湖南卫视,我有許多工作需求都不能用任何單一的工具解決__|玫琳凯订单网:

  • 有標簽軸的數據結構-_3M彩票平台,支持自動或清晰的數據對齊-_|书书网。這可以防止由於數據不對齊_|栾海燕,和處理來源不同的索引不同的數據|-|勇者斗恶龙怪兽篇金手指,造成的錯誤|--优博的奶粉好不好。

  • 集成時間序列功能-|长春花卉批发。

  • 相同的數據結構用於處理時間序列數據和非時間序列數據||中央1台在线直播观看。

  • 保存元數據的算術運算和壓縮|帕斯卡显卡。

  • 靈活處理缺失數據-订造。

  • 合並和其它流行數據庫(例如基於SQL的數據庫)的關係操作|__南京长江骨科医院。

我想隻用一種工具就實現所有功能__金盟减肥药,並使用通用軟件開發語言-_陈润光。Python是一個不錯的候選語言__-深圳东门步行街攻略,但是此時沒有集成的數據結構和工具來實現--东珈精鹰成员。我一開始就是想把pandas設計為一款適用於金融和商業分析的工具|||欧吉妮公主,pandas專注於深度時間序列功能和工具-256买彩票平台安卓,適用於時間索引化的數據|-终难忘 秋夜雨寒。

對於使用R語言進行統計計算的用戶强度电影,肯定不會對DataFrame這個名字感到陌生-金饶,因為它源自於R的data.frame對象-|2020彩票。但與Python不同_-计提职工福利费分录,data frames是構建於R和它的標準庫|_数米基金网。因此||吴双战简历,pandas的許多功能不屬於R或它的擴展包_|_花花公子成人网。

pandas這個名字源於panel data(麵板數據_骨碎补总黄酮,這是多維結構化數據集在計量經濟學中的術語)以及Python data analysis(Python數據分析)-||众盈彩票是不是真的。

matplotlib

matplotlib是最流行的用於繪製圖表和其它二維數據可視化的Python庫|召唤帝国时代四之农民。它最初由John D.Hunter(JDH)創建_|掌上彩票客服电话,目前由一個龐大的開發人員團隊維護-_|重庆ume电影院。它非常適合創建出版物上用的圖表-||美海军连发5视频。雖然還有其它的Python可視化庫|_大运河开凿于,matplotlib卻是使用最廣泛的_--锰钢属于,並且它和其它生態工具配合也非常完美-怎样在淘宝开店。我認為--亿彩彩票安卓版,可以使用它作為默認的可視化工具-|_淘宝怎么卖东西。

IPython和Jupyter

IPython項目起初是Fernando Pérez在2001年的一個用以加強和Python交互的子項目_|106官网彩。在隨後的16年中|保定二手摩托车58,它成為了Python數據棧最重要的工具之一_|_蒙牛纯牛奶图片。雖然IPython本身沒有提供計算和數據分析的工具--_3g加油站,它卻可以大大提高交互式計算和軟件開發的生產率|金兰妃。IPython鼓勵“執行-探索”的工作流--裤子尺码换算,區別於其它編程軟件的“編輯-編譯-運行”的工作流|广东打黑。它還可以方便地訪問係統的shell和文件係統__哈尔滨群力新区规划。因為大部分的數據分析代碼包括探索|__银触点标准、試錯和重複|-122网页版,IPython可以使工作更快__ios12beta1描述文件。

2014年||铁打一只船,Fernando和IPython團隊宣布了Jupyter項目-|_计提职工福利费分录,一個更寬泛的多語言交互計算工具的計劃_-何小萌萌萌微博。IPython web notebook變成了Jupyter notebook-|-深圳公牛通讯,現在支持40種編程語言|_非洲色图。IPython現在可以作為Jupyter使用Python的內核(一種編程語言模式)||花溪花溪。

IPython變成了Jupyter龐大開源項目(一個交互和探索式計算的高效環境)中的一個組件--热血无赖4个独特数字。它最老也是最簡單的模式_-嘉洲服务器,現在是一個用於編寫||-谷子林、測試-|陈丽华简历、調試Python代碼的強化shell_2018街拍偷拍下体走光。你還可以使用通過Jupyter Notebook-钟小江微博,一個支持多種語言的交互式網絡代碼“筆記本”_108娱乐彩票可以报警吗,來使用IPython_|箱梁图片。IPython shell 和Jupyter notebooks特別適合進行數據探索和可視化||敕令大将军到此。

Jupyter notebooks還可以編寫Markdown和HTML內容___清华保安,提供了一種創建代碼和文本的富文本方法_刷qb软件免费版2013。其它編程語言也在Jupyter中植入了內核__|找一段塑料包装带,好讓在Jupyter中可以使用Python另外的語言|李意珍。

對我個人而言|-汇家卡盟,我的大部分Python都要用到IPython|-黄河视觉,包括運行-|头层牛皮是什么意思、調試和測試代碼_-|英烈寄语。

在本書的GitHub頁麵_|360彩票导航走势图大全,你可以找到包含各章節所有代碼實例的Jupyter notebooks-_-东国大学庆州校区。

SciPy

SciPy是一組專門解決科學計算中各種標準問題域的包的集合__|2011qq免费下载,主要包括下麵這些包|-至尊争霸彩票邀请码:

  • scipy.integrate-||电视剧迅雷下载:數值積分例程和微分方程求解器|_|女人公敌一共多少集。

  • scipy.linalg-_易旺彩票网犯不犯法:擴展了由numpy.linalg提供的線性代數例程和矩陣分解功能__全国计算机一级考试试题及答案。

  • scipy.optimize|038彩票平台客服:函數優化器(最小化器)以及根查找算法_||长江全长约多少千米。

  • scipy.signal__|欢乐谷死人:信號處理工具__|长春万达影城官网。

  • scipy.sparse_-苯胺基丙酸:稀疏矩陣和稀疏線性係統求解器|_亿彩彩票平台是真的吗。

  • scipy.special-|庆阳七中吧:SPECFUN(這是一個實現了許多常用數學函數(如伽瑪函數)的Fortran庫)的包裝器||众彩彩票注册。

  • scipy.stats_-|计一彪女儿:標準連續和離散概率分布(如密度函數-_苯乙烯用途、采樣器-_畅购一卡通、連續分布函數等)-_-优彩官网下载、各種統計檢驗方法||_038彩票网信得过吗,以及更好的描述統計法||某小型火力发电厂。

NumPy和SciPy結合使用_-|长武网,便形成了一個相當完備和成熟的計算平台|至尊彩可靠吗,可以處理多種傳統的科學計算問題|__248彩票平台提不出钱。

scikit-learn

2010年誕生以來_-永盛国际重庆时时,scikit-learn成為了Python的通用機器學習工具包-|_众发彩票走势预测。僅僅七年||135彩票平台官网,就彙聚了全世界超過1500名貢獻者--爱上公主小妹。它的子模塊包括-_|易购爱购是热门APP吗:

  • 分類__1234成人:SVM-良田摄像头、近鄰-|亿贝在线平台登录、隨機森林-|168开奖网下载安装、邏輯回歸等等|_|浪漫刺客片尾曲。

  • 回歸|_覃辉的老婆林菁:Lasso_--布拉格果盘、嶺回歸等等_-_众彩网合法吗。

  • 聚類_-贵州福泉爆炸:k-均值|完美国际汐族任务、譜聚類等等--_365天天彩票是真是假。

  • 降維---优彩网怎么登陆:PCA-|-s4手势感应怎么用、特征選擇_|周凯盈、矩陣分解等等|_java手机qq软件下载。

  • 選型-__步步高i508手机游戏下载:網格搜索-_亿彩彩票公平吗、交叉驗證-|金清二中、度量_||许尚龙。

  • 預處理||_自我介绍包括什么:特征提取__运盛彩票官网、標準化_-易富彩票平台。

與pandas|京东商城首页淘宝、statsmodels和IPython一起-||辽台春晚,scikit-learn對於Python成為高效數據科學編程語言起到了關鍵作用_|2019王中王资料肖中。雖然本書不會詳細講解scikit-learn___长虹手机解锁,我會簡要介紹它的一些模型--198彩票扣牌怎么样,以及用其它工具如何使用這些模型_-诗恩芙。

statsmodels

statsmodels是一個統計分析包___优点彩票APP,起源於斯坦福大學統計學教授Jonathan Taylor__云顶怎么赚钱,他設計了多種流行於R語言的回歸分析模型|_西玛屋。Skipper Seabold和Josef Perktold在2010年正式創建了statsmodels項目_恩贝斯,隨後彙聚了大量的使用者和貢獻者|__360彩票走势图。受到R的公式係統的啟發-_|众发彩票官网,Nathaniel Smith發展出了Patsy項目__-变形记美丽加减法全集,它提供了statsmodels的公式或模型的規範框架__女人公敌一共多少集。

與scikit-learn比較_-|金甲虫鼠标,statsmodels包含經典統計學和經濟計量學的算法||英式衬衫。包括如下子模塊__|jellybird:

  • 回歸模型|||得胜236:線性回歸__自由们7 42官方下载,廣義線性模型-|2019万彩吧下载安装,健壯線性模型_七k七k小游戏,線性混合效應模型等等-_众赢国际app官网下载。

  • 方差分析(ANOVA)-|长沙口碑网。

  • 時間序列分析|__赵奕欢献唱公益:AR--|动作猜谜游戏,ARMA___阿诺德蓄电池,ARIMA__长春亚泰小学,VAR和其它模型_|-2016女排大奖赛赛程表。

  • 非參數方法|-_深圳东门美食: 核密度估計|_黎巴嫩邮编,核回歸|_-三八色。

  • 統計模型結果可視化||春日樱。

statsmodels更關注與統計推斷_主持人大鹏,提供不確定估計和參數p-值_-说说电视记者这行吧。相反的-_双升单机版下载,scikit-learn注重預測--_青岛台东洗头房。

同scikit-learn一樣|注册的779彩票app怎么注销,我也隻是簡要介紹statsmodels-_动感地带随心聊,以及如何用NumPy和pandas使用它_||360彩票双色球走势图表。

1.4 安裝和設置

由於人們用Python所做的事情不同_雅鲁藏布江地图,所以沒有一個普適的Python及其插件包的安裝方案_|辛德维拉。由於許多讀者的Python科學計算環境都不能完全滿足本書的需要|__航班查询 携程,所以接下來我將詳細介紹各個操作係統上的安裝方法|__336时时彩网站。我推薦免費的Anaconda安裝包|-_爱财部落网。寫作本書時--_盈彩娱乐可靠吗,Anaconda提供Python 2.7和3.6兩個版本|_游彩网平台,以後可能發生變化-_moko美空模特路遥。本書使用的是Python 3.6-_-105彩票苹果2018版,因此推薦選擇Python 3.6或更高版本-|甜妞追逃夫。

Windows

要在Windows上運行_爱国者同盟网,先下載Anaconda安裝包_|_01彩票APp是不是正规的。推薦跟隨Anaconda下載頁麵的Windows安裝指導__|三毛妮,安裝指導在寫作本書和讀者看到此文的的這段時間內可能發生變化|--永盛国际APP。

現在|_至尊心水老版,來確認設置是否正確_-_长春新东方外语学校。打開命令行窗口(cmd.exe)|_亿博彩观音图,輸入python以打開Python解釋器_||ilux me。可以看到類似下麵的Anaconda版本的輸出-_灵异森林:

C:\Users\wesm>python
Python 3.5.2 |Anaconda 4.1.1 (64-bit)| (default, Jul  5 2016, 11:41:13)
[MSC v.1900 64 bit (AMD64)] on win32
>>>

要退出shell|_丧尸李志讲的是什么,按Ctrl-D(Linux或macOS上)--铍矿,Ctrl-Z(Windows上)|-|306官方彩票内地版,或輸入命令exit()_|_东北人解说麦迪时刻,再按Enter-青岛九中贴吧。

Apple (OS X, macOS)

下載OS X Anaconda安裝包|_浓密100,它的名字類似Anaconda3-4.1.0-MacOSX-x86_64.pkg|-苏岑博客。雙擊.pkg文件--优彩忘记密码怎么办,運行安裝包|_一级b成绩查询。安裝包運行時-||120dj,會自動將Anaconda執行路徑添加到.bash_profile文件|_13彩票平台,它位於/Users/$USER/.bash_profile|_高林生的歌。

為了確認成功-__郑州基础教育教研网,在係統shell打開IPython-_北京466耳鼻喉专家:

$ ipython

要退出shell__现任北京市委书记,按Ctrl-D_|-比亚斯,或輸入命令exit()|_2w彩票2m永久兔费资料,再按Enter--金琅。

GNU/Linux

Linux版本很多-|众发娱乐安卓,這裏給出Debian__汤镇宗老婆张丽霞、Ubantu_瘦儿鞋、CentOS和Fedora的安裝方法-塔河吧。安裝包是一個腳本文件|_-仲博最新版官方下载,必須在shell中運行--乐山嘉州房产网。取決於係統是32位還是64位_-_35彩票苹果版,要麼選擇x86 (32位)或x86_64 (64位)安裝包--_陕西地震信息网。隨後你會得到一個文件_上海体育馆招聘会,名字類似於Anaconda3-4.1.0-Linux-x86_64.sh-|初一下册数学期末试卷。用bash進行安裝__阿朵减肥:

$ bash Anaconda3-4.1.0-Linux-x86_64.sh

筆記||-009彩票网:某些Linux版本在包管理器中有滿足需求的Python包--|觅食的意思,隻需用類似apt的工具安裝就行|-金童玉子。這裏講的用Anaconda安裝--半年工作总结结尾,適用於不同的Linux安裝包|俗人岛华人,也很容易將包升級到最新版本--|流动人口信息。

接受許可之後_-|运盛彩票的网址,會向你詢問在哪裏放置Anaconda的文件-2013年四川地震。我推薦將文件安裝到默認的home目錄||am3cpu,例如/home/$USER/anaconda-至尊彩大发快3网址。

Anaconda安裝包可能會詢問你是否將bin/目錄添加到$PATH變量|__果酱汉堡店变态版。如果在安裝之後有任何問題_|-闪卡识字,你可以修改文件.bashrc(或.zshrc___异蛇宝,如果使用的是zsh shell)為類似以下的內容_-|注册赠送彩金的彩票网站:

export PATH=/home/$USER/anaconda/bin:$PATH

做完之後-_-锦皓,你可以開啟一個新窗口||金融心理学,或再次用~/.bashrc執行.bashrc--众彩平台骗局。

安裝或升級Python包

在你閱讀本書的時候-|_12月9号彩票3位数开?,你可能想安裝另外的不在Anaconda中的Python包-_|2019年香港走势图。通常-赣南日报招聘,可以用以下命令安裝|赢发彩票首页:

conda install package_name

如果這個命令不行-_-361dy,也可以用pip包管理工具_-_33选7大星彩票走势图:

pip install package_name

你可以用conda update命令升級包-众赢彩票论坛:

conda update package_name

pip可以用--upgrade升級_花色处女地:

pip install --upgrade package_name

本書中_|105彩票苹果怎么下,你有許多機會嚐試這些命令|眠宝。

注意_穿越神墓之何为逆天:當你使用conda和pip二者安裝包時_108网投彩票网怎么样,千萬不要用pip升級conda的包---10元可提现的彩票网站,這樣會導致環境發生問題|好看的丧尸片。當使用Anaconda或Miniconda時|--陆贞传奇陆贞身世,最好首先使用conda進行升級_168开奖结果现l场下载。

Python 2 和 Python 3

第一版的Python 3.x出現於2008年|_-苑阳。它有一係列的變化|芷江租房,與之前的Python 2.x代碼有不兼容的地方||-全鱼道怎么样。因為從1991年Python出現算起_--阿诺德蓄电池,已經過了17年||卡丝琳,Python 3 的出現被視為吸取一些列教訓的更優結果_-陈国栋简历。

2012年--qq游戏马,因為許多包還沒有完全支持Python 3_马杰克,許多科學和數據分析社區還是在使用Python 2.x_-身份证实名认证。因此-_-陈龙 羽毛球,本書第一版使用的是Python 2.7--亿贝平台横屏登录地址。現在|现代科技成就的例子,用戶可以在Python 2.x和Python 3.x間自由選擇|_2011qq免费下载,二者都有良好的支持168娱乐2平台是骗局吗。

但是--一见钟情简谱,Python 2.x在2020年就會到期(包括重要的安全補丁)||超级红人节视频,因此再用Python 2.7就不是好的選擇了|观赏鱼之家zadull水族。因此_288彩票安卓,本書使用了Python 3.6--应用宝5 0,這一廣泛使用|-|149期开什么生肖、支持良好的穩定版本||钟楼兄弟。我們已經稱Python 2.x為“遺留版本”_||天天网化妆品,簡稱Python 3.x為“Python”___南宁君怡酒店。我建議你也是如此__牦牛产地。

本書基於Python 3.6_|许雯may。你的Python版本也許高於3.6_|云发购彩票,但是示例代碼應該是向前兼容的---2125火影世界。一些示例代碼可能在Python 2.7上有所不同|-|234彩票计划软件,或完全不兼容-__乌拉草鞋垫。

集成開發環境(IDEs)和文本編輯器

當被問到我的標準開發環境-_钢之魔法师2,我幾乎總是回答“IPython加文本編輯器”-|-性价比最高笔记本。我通常在編程時_-_云顶账号注册,反複在IPython或Jupyter notebooks中測試和調試每條代碼_|-注册送体验金的彩票。也可以交互式操作數據_--钢构的故乡,和可視化驗證數據操作中某一特殊集合-|-306官方彩票合法吗。在shell中使用pandas和NumPy也很容易-|途观报价及图片。

但是|-|覃晶,當創建軟件時---掌字开头的体彩软件,一些用戶可能更想使用特點更為豐富的IDE-_-反间谍工作的主管单位是,而不僅僅是原始的蕾西Emacs或Vim的文本編輯器--茅台一品天下。以下是一些IDE_|038彩票app下载苹果:

  • PyDev(免費)_|2015年世界gdp排名,基於Eclipse平台的IDE||0165彩票正版;

  • JetBrains的PyCharm(商業用戶需要訂閱|-花样少女是多大,開源開發者免費)_||百里挑一王可达;

  • Visual Studio(Windows用戶)的Python Tools|-_副镇长辞职;

  • Spyder(免費)_-_永康农庄,Anaconda附帶的IDE|__坛缘坊;

  • Komodo IDE(商業)|-戴拿奥特曼国语版。

因為Python的流行_众赢彩票首页,大多數文本編輯器--金山游侠2002体验版,比如Atom和Sublime Text 3_|_优彩彩票是诈骗平台吗,對Python的支持也非常好-|娱乐天地彩票首页。

1.5 社區和會議

除了在網上搜索_-|黄河电视台节目表,各式各樣的科學和數據相關的Python郵件列表是非常有幫助的||25彩票,很容易獲得回答106cc彩票客服。包括_-cf易美:

  • pydata|01彩票是不是正规的:一個Google群組列表--1q币购物券,用以回答Python數據分析和pandas的問題||_345彩票这几天提现不了;

  • pystatsmodels|_真空过滤装置: statsmodels或pandas相關的問題|_-云天国际;

  • scikit-learn和Python機器學習郵件列表_|藤原岛子,scikit-learn@python.org-_120dj;

  • numpy-discussion|||093彩票网怎么样:和NumPy相關的問題|鱼团网 衢州;

  • scipy-user|-2011qq下载:SciPy和科學計算的問題_仲博最新版下载;

因為這些郵件列表的URLs可以很容易搜索到__038彩票是国家的吗,但因為可能發生變化|--天龙八部39,所以沒有給出|132彩票com苹果版。

每年__优乐博彩怎么样,世界各地會舉辦許多Python開發者大會-_106cc彩票客服。如果你想結識其他有相同興趣的人-__花都区教育局电话,如果可能的話||朝鲜近况,我建議你去參加一個__|众购彩票网平台。許多會議會對無力支付入場費和差旅費的人提供財力幫助|_易福彩票网手机版。下麵是一些會議__公办专科学校:

  • PyCon和EuroPython-_|射阳县高级中学:北美和歐洲的兩大Python會議---谈爱 李白;

  • SciPy和EuroSciPy|--2分钟快3是什么彩票:北美和歐洲兩大麵向科學計算的會議-描写大自然的句子;

  • PyData|1990娱乐注册:世界範圍內|--黔中经济区发展规划,一些列的地區性會議|-子宫日记中文版全集,專注數據科學和數據分析__-234彩票提款;

  • 國際和地區的PyCon會議(http://pycon.org有完整列表) |--玉女品箫。

1.6 本書導航

如果之前從未使用過Python|_|陕西省职业技能鉴定指导中心,那你可能需要先看看本書的第2章和第3章|-武汉市新洲区黑社会,我簡要介紹了Python的特點--_2019年第123期开奖结果,IPython和Jupyter notebooks-|-校园合唱歌曲。這些知識是為本書後麵的內容做鋪墊_李涵辰网站。如果你已經掌握Python-|365天天彩票是正规的吗,可以選擇跳過|--优彩彩票什么时候开始。

接下來|--花样滑冰鞋,簡單地介紹了NumPy的關鍵特性__众发娱乐app下载,附錄A中是更高級的NumPy功能||魔力旺旺。然後-_|易富娱乐彩票App,我介紹了pandas-__国世平本人新浪博客,本書剩餘的內容全部是使用pandas--拿铁咖啡、NumPy和matplotlib處理數據分析的問題|_云顶娱乐软件是真的吗。我已經盡量讓全書的結構循序漸進|-|nokia5320软件下载,但偶爾會有章節之間的交叉_血呷,有時用到的概念還沒有介紹過_-邪恶少年eb的小站。

盡管讀者各自的工作任務不同-诗普达,大體可以分為幾類_|保定二手摩托车58:

  • 與外部世界交互

    閱讀編寫多種文件格式和數據商店--易盈彩票网上登录;

  • 數據準備

    清洗|14场足球彩票开奖结果、修改||诺基亚7070拆机、結合-|_捷安特770、標準化_-北京466鼻腔科医院、重塑--淘宝网上开店的步骤、切片|_-2019最新送300彩金平台、切割_||中央电视台新闻频道在线直播、轉換數據_糗友窝,以進行分析|-法网决赛时间;

  • 轉換數據

    對酒的數據集進行數學和統計操作||-谁能百里挑一于淼,生成新的數據集(例如--_注册送300的彩票,通過各組變量聚類成大的表)|-360彩票导航走势图大全;

  • 建模和計算

    將數據綁定統計模型_||苏霞老师、機器學習算法|-qq2009官方下载正式版、或其他計算工具|-|152彩票真的假的;

  • 展示

    創建交互式和靜態的圖表可視化和文本總結_-云顶至尊理财软件。

代碼示例

本書大部分代碼示例的輸入形式和輸出結果都會按照其在IPython shell或Jupyter notebooks中執行時的樣子進行排版_-|三星s3mini:

In [5]: CODE EXAMPLE
Out[5]: OUTPUT

但你看到類似的示例代碼|腾讯周年庆典活动是真的吗,就是讓你在in的部分輸入代碼||男士眼霜推荐,按Enter鍵執行(Jupyter中是按Shift-Enter)--|漫画大全之恋母性活。然後就可以在out看到輸出-_德育论文题目。

示例數據

各章的示例數據都存放在GitHub上||_汉川新闻网:http://github.com/pydata/pydata-book--_女士毛衣编织款式。下載這些數據的方法有二|--老股民博客:使用git版本控製命令行程序优点彩票能赚钱吗;直接從網站上下載該GitHub庫的zip文件||丁丁网 上海。如果遇到了問題||拳皇97大蛇版,可以到我的個人主頁|-小腻腻的博客,http://wesmckinney.com/-_夸家乡的日记,獲取最新的指導-_银彩G88。

為了讓所有示例都能重現_|虚空龙声望开启,我已經盡我所能使其包含所有必需的東西|_注册彩票网站怎么注册,但仍然可能會有一些錯誤或遺漏---永盛国际骗局。如果出現這種情況的話_金曼龙,請給我發郵件__欧宝蕾:wesmckinn@gmail.com__盈盈彩源代码。報告本書錯誤的最好方法是O’Reilly的errata頁麵|_亿彩彩票是骗局揭秘,http://www.bit.ly/pyDataAnalysis_errata|_-哈斯维修。

引入慣例

Python社區已經廣泛采取了一些常用模塊的命名慣例_|亿发彩票邀请码:

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

也就是說--永盛彩票导航,當你看到np.arange時-|-王卫生骨质增生外敷灵,就應該想到它引用的是NumPy中的arange函數__-易富彩平台注册。這樣做的原因是|-_007a私募内线:在Python軟件開發過程中|35彩票app,不建議直接引入類似NumPy這種大型庫的全部內容(from numpy import *)|_苏州网上车管所。

行話

由於你可能不太熟悉書中使用的一些有關編程和數據科學方麵的常用術語-打吊针原曲,所以我在這裏先給出其簡單定義注册送彩票:

數據規整(Munge/Munging/Wrangling)

指的是將非結構化和(或)散亂數據處理為結構化或整潔形式的整個過程|里番a c g。這幾個詞已經悄悄成為當今數據黑客們的行話了__舞团之心。Munge這個詞跟Lunge押韻_-|长沙市消防支队。

偽碼(Pseudocode)

算法或過程的“代碼式”描述_-_博客大巴登录,而這些代碼本身並不是實際有效的源代碼|__花萝卜论坛。

語法糖(Syntactic sugar)

這是一種編程語法-_-解放军466医院耳鼻喉,它並不會帶來新的特性__我要看一级片,但卻能使代碼更易讀|盛大易购、更易寫__钢坯成本。

第2章 Python語法基礎--南海事件,IPython和Jupyter Notebooks

當我在2011年和2012年寫作本書的第一版時_|阿迪奥驰,可用的學習Python數據分析的資源很少__易记彩票。這部分上是一個雞和蛋的問題-|-拱辰丹:我們現在使用的庫---兰州摸吧,比如pandas||易彩堂赢了钱敢要吗?、scikit-learn和statsmodels||安全部邱进,那時相對來說並不成熟---恋恋不忘演员表。2017年_-雅居公寓式酒店,數據科學-__ems一般几天能到、數據分析和機器學習的資源已經很多_amy rachle,原來通用的科學計算拓展到了計算機科學家|_人受杂交、物理學家和其它研究領域的工作人員|透视裙。學習Python和成為軟件工程師的優秀書籍也有
因為這本書是專注於Python數據處理的_|众购彩票网注册,對於一些Python的數據結構和庫的特性難免不足-_|11先5走势图。因此__金城江租房,本章和第3章的內容隻夠你能學習本書後麵的內容|2006七乐彩走势图表。

在我來看_赛尔号鱼龙王刷什么,沒有必要為了數據分析而去精通Python-注册下载aqq送彩金。我鼓勵你使用IPython shell和Jupyter試驗示例代碼|仔仔网电视剧,並學習不同類型-仙剑奇侠传五破解、函數和方法的文檔_诛仙代练。雖然我已盡力讓本書內容循序漸進|-|河北省学位网,但讀者偶爾仍會碰到沒有之前介紹過的內容|_情况说明模板。

本書大部分內容關注的是基於表格的分析和處理大規模數據集的數據準備工具|-赢彩彩票多少才能提现。為了使用這些工具___2m永久免费开奖,必須首先將混亂的數據規整為整潔的表格(或結構化)形式|_|心跳宝贝之青涩回忆。幸好_-请输入关键字,Python是一個理想的語言--亿发彩票注册,可以快速整理數據_-喜多郎宋家王朝。使用Python越熟練-_|众彩网江苏快三,越容易準備新的數據集以進行分析_|盈彩彩票安卓。

本書中使用的工具最好在IPython和Jupyter中親自嚐試_东汉书院校歌。當你學會了如何啟用Ipython和Jupyter|||dave annable,我建議你跟隨示例代碼進行練習|-第六感 电影。與任何鍵盤驅動的操作環境一樣|-_都市110在线收听,記住常見的命令也是學習曲線的一部分-__永胜国际APP。

筆記|||山西黄河电视台直播:本章沒有介紹Python的某些概念-汉草荟灵芝养生壶,如類和麵向對象編程_--苏州车管所网上选号,你可能會發現它們在Python數據分析中很有用--姜宁转会费。

為了加強Python知識|_女人公敌一共多少集,我建議你學習官方Python教程--尊龙网上娱乐,https://docs.python.org/3/_|-臧天朔演唱会,或是通用的Python教程書籍_-亿贝平台横屏登录地址,比如-|-淘宝试用中心是真的吗:

  • Python Cookbook-_-一道本,第3版-诺基亚n97功能,David Beazley和Brian K. Jones著(O’Reilly)

  • 流暢的Python__烈女蒋究,Luciano Ramalho著 (O’Reilly)

  • 高效的Python_||财富人生马云,Brett Slatkin著 (Pearson)

2.1 Python解釋器

Python是解釋性語言-|_093彩票邀请码。Python解釋器同一時間隻能運行一個程序的一條語句_|_鲁阁初恋。標準的交互Python解釋器可以在命令行中通過鍵入python命令打開|_|筱月桂:

$ python
Python 3.6.0 | packaged by conda-forge | (default, Jan 13 2017, 23:17:12)
[GCC 4.8.2 20140120 (Red Hat 4.8.2-15)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 5
>>> print(a)
5

>>>提示輸入代碼-_江苏盐城技师学院。要退出Python解釋器返回終端-|-金寨房屋出租,可以輸入exit()或按Ctrl-D|-11选五5开奖结果。

運行Python程序隻需調用Python的同時|-网曝 查开房 网址,使用一個.py文件作為它的第一個參數_镇江京江晚报。假設創建了一個hello_world.py文件-|盈盈彩源代码,它的內容是|-铜电阻率:

print('Hello world')

你可以用下麵的命令運行它(hello_world.py文件必須位於終端的工作目錄)|__诺基亚5600:

$ python hello_world.py
Hello world

一些Python程序員總是這樣執行Python代碼的-_佐研,從事數據分析和科學計算的人卻會使用IPython___国世平本人博客,一個強化的Python解釋器-华东葡萄酒庄园,或Jupyter notebooks_|36选7复式9个号多少钱,一個網頁代碼筆記本-_盈彩彩票aqq靠谱吗,它原先是IPython的一個子項目__|维生素k3别名。在本章中_-_黔中郡遗址,我介紹了如何使用IPython和Jupyter-||掌上彩票app苹果版,在附錄A中有更深入的介紹--注册老虎机存1送。當你使用%run命令-|_尊彩网app,IPython會同樣執行指定文件中的代碼__保定航空证券,結束之後|__优发国际娱乐官网登录,還可以與結果交互|-古董估价:

$ ipython
Python 3.6.0 | packaged by conda-forge | (default, Jan 13 2017, 23:17:12)
Type "copyright", "credits" or "license" for more information.

IPython 5.1.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: %run hello_world.py
Hello world

In [2]:

IPython默認采用序號的格式In [2]:___金瑞希,與標準的>>>提示符不同_|_永盛国际投资靠谱吗?。

2.2 IPython基礎

在本節中|-视频编辑专家6 3,我們會教你打開運行IPython shell和jupyter notebook-|_现任北京市委书记,並介紹一些基本概念|--168彩票7168cm。

運行IPython Shell

你可以用ipython在命令行打開IPython Shell-_|刘求池,就像打開普通的Python解釋器|_|2d3d游戏:

$ ipython
Python 3.6.0 | packaged by conda-forge | (default, Jan 13 2017, 23:17:12)
Type "copyright", "credits" or "license" for more information.

IPython 5.1.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: a = 5
In [2]: a
Out[2]: 5

你可以通過輸入代碼並按Return(或Enter)--永城彩票软件苹果下载,運行任意Python語句_|安泽征婚。當你隻輸入一個變量|青岛火车站电话,它會顯示代表的對象--易彩彩民福地登录app:

In [5]: import numpy as np

In [6]: data = {i : np.random.randn() for i in range(7)}

In [7]: data
Out[7]: 
{0: -0.20470765948471295,
 1: 0.47894333805754824,
 2: -0.5194387150567381,
 3: -0.55573030434749,
 4: 1.9657805725027142,
 5: 1.3934058329729904,
6: 0.09290787674371767}

前兩行是Python代碼語句||-王梁微博;第二條語句創建一個名為data的變量_||4串1什么意思,它引用一個新創建的Python字典|lame exe下载。最後一行打印data的值_|金雌源。

許多Python對象被格式化為更易讀的形式__-靓车屋,或稱作pretty-printed-|丧失类的电影,它與普通的print不同_--01彩票。如果在標準Python解釋器中打印上述data變量_--yanhee减肥药的成分,則可讀性要降低_-_众乐彩票提现:

>>> from numpy.random import randn
>>> data = {i : randn() for i in range(7)}
>>> print(data)
{0: -1.5948255432744511, 1: 0.10569006472787983, 2: 1.972367135977295,
3: 0.15455217573074576, 4: -0.24058577449429575, 5: -1.2904897053651216,
6: 0.3308507317325902}

IPython還支持執行任意代碼塊(通過一個華麗的複製-粘貼方法)和整段Python腳本的功能-_|1分快3是不是正规的。你也可以使用Jupyter notebook運行大代碼塊_|_霍州征婚网,接下來就會看到-青海明胶股吧。

運行Jupyter Notebook

Jupyter項目的重要組件之久就是notebook-||双线盗毒蛾,它是一個代碼|||娱乐天地点检官网注册、文本(有標記或無標記)|_里番a c g、數據可視化或其它輸出的交互式文檔_|黄油嘴尺寸。Jupyter Notebook需要與內核互動|_|小狼狗心水论坛,內核是Jupyter與其它編程語言的交互編程協議-_|锦江区公众信息网。Python的Jupyter內核是使用IPython_雪域藏王散。要啟動Jupyter_-卢小娟,在命令行中輸入jupyter notebook:

$ jupyter notebook
[I 15:20:52.739 NotebookApp] Serving notebooks from local directory:
/home/wesm/code/pydata-book
[I 15:20:52.739 NotebookApp] 0 active kernels
[I 15:20:52.739 NotebookApp] The Jupyter Notebook is running at:
http://localhost:8888/
[I 15:20:52.740 NotebookApp] Use Control-C to stop this server and shut down
all kernels (twice to skip confirmation).
Created new window in existing browser session.

在多數平台上_-亿彩票安全吗,Jupyter會自動打開默認的瀏覽器(除非指定了--no-browser)_||夜游黄浦江。或者_-_邮政托运价格表,可以在啟動notebook之後-|汉姆斯,手動打開網頁http://localhost:8888/|-装甲车电影。圖2-1展示了Google Chrome中的notebook_深喉是什么意思。

筆記|_苏州故事广播:許多人使用Jupyter作為本地的計算環境-_-尊龙娱乐用现金下,但它也可以部署到服務器上遠程訪問||兰州商学院长青学院教务管理系统。這裏不做介紹_|-凹凸绕梁三日,如果需要的話|-赢彩彩票靠谱吗,鼓勵讀者自行到網上學習-_众亿彩票网官方。

image

要新建一個notebook--下一站幸福剧照,點擊按鈕New--长江流域地图,選擇“Python3”或“conda[默認項]”-_长明灯打一字。如果是第一次-__132彩票网址是不是骗局,點擊空格-大美目深邃,輸入一行Python代碼|-刑天铠甲后传全集。然後按Shift-Enter執行___苏州工业园区三中。

image

當保存
notebook時(File目錄下的Save and Checkpoint)__世纪星影院,會創建一個後綴名為.ipynb的文件_-金鼎大豆油。這是一個自包含文件格式|_乒乓球胶皮价格 优个网,包含當前筆記本中的所有內容(包括所有已評估的代碼輸出)|--3g计划网时时彩。可以被其它Jupyter用戶加載和編輯|_|家长会主持人开场白。要加載存在的notebook-sky浪翻云博客,把它放到啟動notebook進程的相同目錄內_|二重重装。你可以用本書的示例代碼練習-132彩票软件app,見圖2-3-_一汽自由风配件。

雖然Jupyter notebook和IPython shell使用起來不同|--中国82烈士血战叙利亚,本章中幾乎所有的命令和工具都可以通用蘑菇街2013新款冬装。

image

Tab補全

從外觀上_-言兑网,IPython shell和標準的Python解釋器隻是看起來不同--陆地蟹。IPython shell的進步之一是其它IDE和交互計算分析環境都有的tab補全功能-1号彩票网APP。在shell中輸入表達式赢彩计划,按下Tab--优彩彩票是正规的吗,會搜索已輸入變量(對象|-钢水脱氧、函數等等)的命名空間|__雅虎宝贝鱼:

In [1]: an_apple = 27

In [2]: an_example = 42

In [3]: an<Tab>
an_apple    and         an_example  any

在這個例子中|-_桃园骠骑加点,IPython呈現除了之前兩個定義的變量和Python的關鍵字和內建的函數any|_-镇江技师学院。當然_|意彩账号注册,你也可以補全任何對象的方法和屬性|_停车位规范:

In [3]: b = [1, 2, 3]

In [4]: b.<Tab>
b.append  b.count   b.insert  b.reverse
b.clear   b.extend  b.pop     b.sort
b.copy    b.index   b.remove

同樣也適用於模塊|-|众发弥勒团队:

In [1]: import datetime

In [2]: datetime.<Tab>
datetime.date          datetime.MAXYEAR       datetime.timedelta
datetime.datetime      datetime.MINYEAR       datetime.timezone
datetime.datetime_CAPI datetime.time          datetime.tzinfo

在Jupyter notebook和新版的IPython(5.0及以上)-|铁道部撤销,自動補全功能是下拉框的形式|__yy44800。

筆記--|云购彩票网站是骗局吗:注意_晨星基金业绩排行榜,默認情況下-|苏州相城红星美凯龙,IPython會隱藏下劃線開頭的方法和屬性-093a彩票,比如魔術方法和內部的“私有”方法和屬性_||蝗虫多少钱一斤,以避免混亂的顯示(和讓新手迷惑_黄山天狗望月!)這些也可以tab補全_-_东方花园爱唯侦察,但是你必須首先鍵入一個下劃線才能看到它們--诺基亚3208c。如果你喜歡總是在tab補全中看到這樣的方法|公务员阳光工资标准,你可以IPython配置中進行設置-_|米站。可以在IPython文檔中查找方法---凤舞摩天麦词。

除了補全命名___云谷彩票代理开户、對象和模塊屬性|_synergykm,Tab還可以補全其它的-_-重庆历任公安局长。當輸入看似文件路徑時(即使是Python字符串)_雷伊在哪,按下Tab也可以補全電腦上對應的文件信息|--快乐女声报名:

In [7]: datasets/movielens/<Tab>
datasets/movielens/movies.dat    datasets/movielens/README
datasets/movielens/ratings.dat   datasets/movielens/users.dat

In [7]: path = 'datasets/movielens/<Tab>
datasets/movielens/movies.dat    datasets/movielens/README
datasets/movielens/ratings.dat   datasets/movielens/users.dat

結合%run_-众赢彩票是不是真的,tab補全可以節省許多鍵盤操作||温州大学城市学院。

另外_-|耐美金,tab補全可以補全函數的關鍵詞參數(包括等於號=)---106在线彩票安卓。見圖2-4-_家乡美的画。

圖2-4 Jupyter notebook中自動補全函數關鍵詞

我們來仔細看看函數-||技术服务费费率。

自省

在變量前後使用問號||-wow瑟银矿?___暴龙摩托车价格,可以顯示對象的信息-_百度币:

In [8]: b = [1, 2, 3]

In [9]: b?
Type:       list
String Form:[1, 2, 3]
Length:     3
Docstring:
list() -> new empty list
list(iterable) -> new list initialized from iterable's items

In [10]: print?
Docstring:
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file:  a file-like object (stream); defaults to the current sys.stdout.
sep:   string inserted between values, default a space.
end:   string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
Type:      builtin_function_or_method

這可以作為對象的自省__|功夫小帅。如果對象是一個函數或實例方法|丽谯楼,定義過的文檔字符串__|易彩登录,也會顯示出信息||-主要业绩。假設我們寫了一個如下的函數__-东莞桑拿服务流程:

def add_numbers(a, b):
    """
    Add two numbers together

    Returns
    -------
    the_sum : type of arguments
    """
    return a + b

然後使用?符號-|朝鲜近况,就可以顯示如下的文檔字符串|_-小爸爸优酷电视剧全集:

In [11]: add_numbers?
Signature: add_numbers(a, b)
Docstring:
Add two numbers together

Returns
-------
the_sum : type of arguments
File:      <ipython-input-9-6a548a216e27>
Type:      function

使用??會顯示函數的源碼--食品生产经营人员多久必须进行健康检查:

In [12]: add_numbers??
Signature: add_numbers(a, b)
Source:
def add_numbers(a, b):
    """
    Add two numbers together

    Returns
    -------
    the_sum : type of arguments
    """
    return a + b
File:      <ipython-input-9-6a548a216e27>
Type:      function

?還有一個用途||-选票样式,就是像Unix或Windows命令行一樣搜索IPython的命名空間_|vov绿茶眼线笔。字符與通配符結合可以匹配所有的名字-||锦屏记19楼。例如_--碧月帆雪,我們可以獲得所有包含load的頂級NumPy命名空間-_|爱唯侦察地址:

In [13]: np.*load*?
np.__loader__
np.load
np.loads
np.loadtxt
np.pkgload

%run命令

你可以用%run命令運行所有的Python程序_-银彩会登录。假設有一個文件ipython_script_test.py_-_188彩票在线网址:

def f(x, y, z):
    return (x + y) / z

a = 5
b = 6
c = 7.5

result = f(a, b, c)

可以如下運行|--11选5投注官网:

In [14]: %run ipython_script_test.py

這段腳本運行在空的命名空間(沒有import和其它定義的變量)|-误认翻译,因此結果和普通的運行方式python script.py相同--088彩票是正规平台吗。文件中所有定義的變量(import_-36选7的好彩3、函數和全局變量---湘南学院怎么样,除非拋出異常)-|168彩票官网登录苹果,都可以在IPython shell中隨後訪問||陈元安:

In [15]: c
Out [15]: 7.5

In [16]: result
Out[16]: 1.4666666666666666

如果一個Python腳本需要命令行參數(在sys.argv中查找)__-贝莱斯顿,可以在文件路徑之後傳遞__长沙市公安局网站,就像在命令行上運行一樣-_钱永真。

筆記|_|11选5任7万能34组:如果想讓一個腳本訪問IPython已經定義過的變量||-13334彩票网,可以使用%run -i_-360彩票今日开奖公告。

在Jupyter notebook中_--暗灵猎手胡大刀,你也可以使用%load--|聂曦,它將腳本導入到一個代碼格中-|_凤舞摩天麦词:

>>> %load ipython_script_test.py

    def f(x, y, z):
        return (x + y) / z
    a = 5
    b = 6
    c = 7.5

    result = f(a, b, c)

中斷運行的代碼

代碼運行時按Ctrl-C__炫舞团名,無論是%run或長時間運行命令-陈文恩,都會導致KeyboardInterrupt_--优博彩票网站。這會導致幾乎左右Python程序立即停止-||苏州作品版权登记,除非一些特殊情況-_-聚美优品上不去。

警告_-_移动3g套餐资费:當Python代碼調用了一些編譯的擴展模塊--尹国驹 何鸿燊,按Ctrl-C不一定將執行的程序立即停止_|-038彩票平台怎么样。在這種情況下__-英华学校吧,你必須等待-_-云顶娱乐棋牌ios下载,直到控製返回Python解釋器||锦州人流,或者在更糟糕的情況下強製終止Python進程|_-长沙职工大学。

從剪貼板執行程序

如果使用Jupyter notebook--至尊联盟彩种平台,你可以將代碼複製粘貼到任意代碼格執行-|_怎样克隆qq空间。在IPython shell中也可以從剪貼板執行__-106官网彩票提现不了。假設在其它應用中複製了如下代碼_|重庆电视台少儿频道:

x = 5
y = 7
if x > 5:
    x += 1

    y = 8

最簡單的方法是使用%paste%cpaste函數__中博彩票平台可靠吗?。%paste可以直接運行剪貼板中的代碼||_可可西男装:

In [17]: %paste
x = 5
y = 7
if x > 5:
    x += 1

    y = 8
## -- End pasted text --

%cpaste功能類似_红光二手房出售,但會給出一條提示|奥特曼剧场版有哪些:

In [18]: %cpaste
Pasting code; enter '--' alone on the line to stop or use Ctrl-D.
:x = 5
:y = 7
:if x > 5:
:    x += 1
:
:    y = 8
:--

使用%cpaste|_nba2k online花式运球,你可以粘貼任意多的代碼再運行冰雪皇后优惠券。你可能想在運行前|_亿彩彩票官网苹果,先看看代碼|2009手机qq官方下载。如果粘貼了錯誤的代碼-淘玩偶,可以用Ctrl-C中斷|_-hp3808。

鍵盤快捷鍵

IPython有許多鍵盤快捷鍵進行導航提示(類似Emacs文本編輯器或UNIX bash Shell)和交互shell的曆史命令金玉满堂袖唐。表2-1總結了常見的快捷鍵|--nba热火vs雷霆总决赛。圖2-5展示了一部分_注册送38彩金,如移動光標-|熊继柏。

圖2-5 IPython shell中一些快捷鍵的說明
表2-1 IPython的標準快捷鍵

Jupyter notebooks有另外一套龐大的快捷鍵_-苏州园区临时工招聘。因為它的快捷鍵比IPython的變化快__|阳江红毯影院,建議你參閱Jupyter notebook的幫助文檔娱乐彩票app。

魔術命令

IPython中特殊的命令(Python中沒有)被稱作“魔術”命令-|中央六台电影网。這些命令可以使普通任務更便捷__考察干部谈话,更容易控製IPython係統|_中国现役上将。魔術命令是在指令前添加百分號%前綴_一见钟情简谱。例如-__爱意文学,可以用%timeit(這個命令後麵會詳談)測量任何Python語句-|江腾蛟回忆录,例如矩陣乘法__-盈盈彩平台登录,的執行時間_|代练宝:

In [20]: a = np.random.randn(100, 100)

In [20]: %timeit np.dot(a, a)
10000 loops, best of 3: 20.9 µs per loop

魔術命令可以被看做IPython中運行的命令行-|综合素质作文。許多魔術命令有“命令行”選項|焦煤上市公司,可以通過||_新普桑2013款图片?查看|-11选5彩票走势怎么分析:

In [21]: %debug?
Docstring:
::

  %debug [--breakpoint FILE:LINE] [statement [statement ...]]

Activate the interactive debugger.

This magic command support two ways of activating debugger.
One is to activate debugger before executing code.  This way, you
can set a break point, to step through the code from the point.
You can use this mode by giving statements to execute and optionally
a breakpoint.

The other one is to activate debugger in post-mortem mode.  You can
activate this mode simply running %debug without any argument.
If an exception has just occurred, this lets you inspect its stack
frames interactively.  Note that this will always work only on the last
traceback that occurred, so you must call this quickly after an
exception that you wish to inspect has fired, because if another one
occurs, it clobbers the previous one.

If you want IPython to automatically do this on every exception, see
the %pdb magic for more details.

positional arguments:
  statement             Code to run in debugger. You can omit this in cell
                        magic mode.

optional arguments:
  --breakpoint <FILE:LINE>, -b <FILE:LINE>
                        Set break point at LINE in FILE.

魔術函數默認可以不用百分號-__静海县人才信息网,隻要沒有變量和函數名相同--_陶江湖。這個特點被稱為“自動魔術”-阿坝州人事网,可以用%automagic打開或關閉-|斗战神宇文公在哪里。

一些魔術函數與Python函數很像--|铁打一只船,它的結果可以賦值給一個變量_149特马结果:

In [22]: %pwd
Out[22]: '/home/wesm/code/pydata-book

In [23]: foo = %pwd

In [24]: foo
Out[24]: '/home/wesm/code/pydata-book'

IPython的文檔可以在shell中打開_-_盈彩彩票能提现吗,我建議你用%quickref%magic學習下所有特殊命令|青年中国说余佳文。表2-2列出了一些可以提高生產率的交互計算和Python開發的IPython指令|_-18092期大乐透中奖号码。

表2-2 一些常用的iPython魔術命令

集成Matplotlib

IPython在分析計算領域能夠流行的原因之一是它非常好的集成了數據可視化和其它用戶界麵庫|_番禺新闻,比如matplotlib_|苏泊尔电压力锅使用方法。不用擔心以前沒用過matplotlib-李白的谈爱,本書後麵會詳細介紹246免费彩票资料。%matplotlib魔術函數配置了IPython shell和Jupyter notebook中的matplotlib_易乐彩。這點很重要_|_云购彩票YG888COM,其它創建的圖不會出現(notebook)或獲取session的控製|-上海奋荣投资公司董事长,直到結束(shell)_|虹口区小学排名。

在IPython shell中--杨镇一中网,運行%matplotlib可以進行設置|_嘉州房产网,可以創建多個繪圖窗口|__赢彩网是正规平台吗?,而不會幹擾控製台session_|智彩快乐十分app走势图:

In [26]: %matplotlib
Using matplotlib backend: Qt4Agg

在JUpyter中|_掌上彩票吧,命令有所不同(圖2-6)_-我是歌手第10期排名:

In [26]: %matplotlib inline

圖2-6 Jupyter行內Matplotlib作圖

2.3 Python語法基礎

在本節中_法学基础知识,我將概述基本的Python概念和語言機製|桑拿爽记。在下一章_试算平衡表,我將詳細介紹Python的數據結構---11086移动彩票客户端、函數和其它內建工具__计算机一级试题。

語言的語義

Python的語言設計強調的是可讀性__爱佳绿可木、簡潔和清晰_-|众赢彩APP。有些人稱Python為“可執行的偽代碼”_-匪我思存 花颜。

使用縮進-|优选彩票网址,而不是括號

Python使用空白字符(tab和空格)來組織代碼-_盈彩网彩票,而不是像其它語言--_以下哪种行为很有可能构成图片侵权,比如R|-_qq2011下载、C++||09被骗20w、JAVA和Perl那樣使用括號|--莱州中考成绩查询。看一個排序算法的for循環__苏州联建倒闭:

for x in array:
    if x < pivot:
        less.append(x)
    else:
        greater.append(x)

冒號標誌著縮進代碼塊的開始|||代练宝,冒號之後的所有代碼的縮進量必須相同_-fency豹纹烟,直到代碼塊結束|-陈qq。不管是否喜歡這種形式_-|洪洞贴吧,使用空白符是Python程序員開發的一部分|-|巨冠蝾螈,在我看來--说服的艺术,這可以讓python的代碼可讀性大大優於其它語言__杨幂遭非礼图片。雖然期初看起來很奇怪|__请定位lame exe,經過一段時間-_与狼共舞oa,你就能適應了||盈盈彩骗。

筆記|-中视购物网:我強烈建議你使用四個空格作為默認的縮進_索爱w610,可以使用tab代替四個空格_-105官网彩票平台。許多文本編輯器的設置是使用製表位替代空格-|金昌论坛。某些人使用tabs或不同數目的空格數_|10秒猜大小的彩票,常見的是使用兩個空格-|李公堤水霸王。大多數情況下-||农业银行黄金价格,四個空格是大多數人采用的方法__118彩票是不是正规的,因此建議你也這樣做||_捧腹网搞笑动态图片。

你應該已經看到-智行彩票,Python的語句不需要用分號結尾-|亿赢彩票1000反300。但是-众发娱乐赌博,分號卻可以用來給同在一行的語句切分_|_跑马场演员表:

a = 5; b = 6; c = 7

Python不建議將多條語句放到一行||_永胜国际彩票正规吗,這會降低代碼的可讀性-|-2019年福彩3d北斗预测。

外物皆對象

Python語言的一個重要特性就是它的對象模型的一致性|__呷浦呷浦官网。每個數字-_电视棒密码、字符串-||正三棱锥的性质、數據結構|_-106cc彩票、函數-节能超市、類|-_氨糖为何橄固力牌最好、模塊等等--奶妈吧邀请码,都是在Python解釋器的自有“盒子”內|-|陈村天星影院,它被認為是Python對象-_运盛彩票怎么样。每個對象都有類型(例如___赢彩彩票因为有你,字符串或函數)和內部數據-|_长沙市消防支队。在實際中__诺基亚5233评测,這可以讓語言非常靈活|-重生洪荒之逍遥至尊,因為函數也可以被當做對象使用__|韩仙子。

注釋

任何前麵帶有井號#的文本都會被Python解釋器忽略-|_22福利彩票官方ios软件。這通常被用來添加注釋-|怎么用手机开通黄钻。有時___canster,你會想排除一段代碼___1分快3app,但並不刪除234国民彩票。簡便的方法就是將其注釋掉-_-广州公交月票:

results = []
for line in file_handle:
    # keep the empty lines for now
    # if len(line) == 0:
    #   continue
    results.append(line.replace('foo', 'bar'))

也可以在執行過的代碼後麵添加注釋_|29彩票注册。一些人習慣在代碼之前添加注釋_众赢彩票导航网,前者這種方法有時也是有用的|_年年顺调和油:

print("Reached this line")  # Simple status report

函數和對象方法調用

你可以用圓括號調用函數|_|11选5高频彩票app,傳遞零個或幾個參數|虞城县教育网,或者將返回值給一個變量|__11086移动彩票怎么样:

result = f(x, y, z)
g()

幾乎Python中的每個對象都有附加的函數_塔河吧,稱作方法_-御龙在天野蘑菇,可以用來訪問對象的內容_|海马骑士7。可以用下麵的語句調用|_张柏芝约谈谢霆锋:

obj.some_method(x, y, z)

函數可以使用位置和關鍵詞參數-小提琴座套:

result = f(a, b, c, d=5, e='foo')

後麵會有更多介紹__第六感 电影。

變量和參數傳遞

當在Python中創建變量(或名字)-_|北京466医院耳科,你就在等號右邊創建了一個對這個變量的引用-_风流少年唐伯虎2。考慮一個整數列表_|李天一受害老师照片:

In [8]: a = [1, 2, 3]

假設將a賦值給一個新變量b-_-王卫生骨质增生外敷灵:

In [9]: b = a

在有些方法中-||三星b7732微信,這個賦值會將數據[1, 2, 3]也複製-|诛仙烈山。在Python中-_节能超市,a和b實際上是同一個對象|-金池 后知后觉,即原有列表[1, 2, 3](見圖2-7)__大学生创业策划书。你可以在a中添加一個元素-亿发彩票安不安全,然後檢查b|-注册送28元体验金彩票:

In [10]: a.append(4)

In [11]: b
Out[11]: [1, 2, 3, 4]

圖2-7 對同一對象的雙重引用

理解Python的引用的含義--|七咲枫花,數據是何時||掌上彩票pro官网登录、如何_|_祥康王晗、為何複製的-|-荆门运动人,是非常重要的---在淘宝上怎么开店。尤其是當你用Python處理大的數據集時-_-雾里看花终隔一层。

筆記_|钢铁新娘结局:賦值也被稱作綁定||粤语输入法,我們是把一個名字綁定給一個對象|-金陵御沁园。變量名有時可能被稱為綁定變量|金湖茶餐厅。

當你將對象作為參數傳遞給函數時_|嘉祥石雕艺术节,新的局域變量創建了對原始對象的引用|-_掌上税务平台下载,而不是複製|_防爆机器人布里茨。如果在函數裏綁定一個新對象到一個變量|-_都匀蓝宇装饰,這個變動不會反映到上一層|金佛山滑雪场电话。因此可以改變可變參數的內容_-注册彩票送18元彩金app。假設有以下函數_--雷明老师:

def append_element(some_list, element):
    some_list.append(element)

然後有--31选7开奖号码走势图:

In [27]: data = [1, 2, 3]

In [28]: append_element(data, 4)

In [29]: data
Out[29]: [1, 2, 3, 4]

動態引用__|红米手机的缺点,強類型

與許多編譯語言(如JAVA和C++)對比--快乐大本营之棒棒堂,Python中的對象引用不包含附屬的類型_-淘宝助理不能用。下麵的代碼是沒有問題的|易旺彩票网可靠吗:

In [12]: a = 5

In [13]: type(a)
Out[13]: int

In [14]: a = 'foo'

In [15]: type(a)
Out[15]: str

變量是在特殊命名空間中的對象的名字-||100%竞彩篮球分析预测,類型信息保存在對象自身中_|银行存款日记账怎么记。一些人可能會說Python不是“類型化語言”||-说说歌词。這是不正確的-_上海居住证管理办法,看下麵的例子||美甲点笔:

In [16]: '5' + 5
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-16-f9dbf5f0b234> in <module>()
----> 1 '5' + 5
TypeError: must be str, not int

在某些語言中_-陇南市人民政府网站,例如Visual Basic||_168彩票网站正规吗,字符串‘5’可能被默許轉換(或投射)為整數-布鲁金斯基征,因此會產生10_|11068移动彩票。但在其它語言中_||帅康热水器说明书,例如JavaScript|_-烈女蒋究,整數5個能被投射成字符串||_曾海潮李悦陈霁江陵肃,結果是聯結字符串‘55’|-许美静 倾城。在這個方麵|_邵长老,Python被認為是強類型化語言|云联惠2018年最新消息,意味著每個對象都有明確的類型(或類)-_-赢钱彩登录网站,默許轉換隻會發生在特定的情況下||-王宝强性格大变,例如_-香港大学集体欺凌:

In [17]: a = 4.5

In [18]: b = 2

# String formatting, to be visited later
In [19]: print('a is {0}, b is {1}'.format(type(a), type(b)))
a is <class 'float'>, b is <class 'int'>

In [20]: a / b
Out[20]: 2.25

知道對象的類型很重要--_168彩票pk10提现没到账,最好能讓函數可以處理多種類型的輸入--易富娱乐彩票app。你可以用isinstance函數檢查對象是某個類型的實例__-35彩票网站是正规的吗:

In [21]: a = 5

In [22]: isinstance(a, int)
Out[22]: True

isinstance可以用類型元組_-_儿童风景图画,檢查對象的類型是否在元組中|-|美国高菲特:

In [23]: a = 5; b = 4.5

In [24]: isinstance(a, (int, float))
Out[24]: True

In [25]: isinstance(b, (int, float))
Out[25]: True

屬性和方法

Python的對象通常都有屬性(其它存儲在對象內部的Python對象)和方法(對象的附屬函數可以訪問對象的內部數據)|_-北京男性科建国医院。可以用obj.attribute_name訪問屬性和方法|-|保定二手摩托车58:

In [1]: a = 'foo'

In [2]: a.<Press Tab>
a.capitalize  a.format      a.isupper     a.rindex      a.strip
a.center      a.index       a.join        a.rjust       a.swapcase
a.count       a.isalnum     a.ljust       a.rpartition  a.title
a.decode      a.isalpha     a.lower       a.rsplit      a.translate
a.encode      a.isdigit     a.lstrip      a.rstrip      a.upper
a.endswith    a.islower     a.partition   a.split       a.zfill
a.expandtabs  a.isspace     a.replace     a.splitlines
a.find        a.istitle     a.rfind       a.startswith

也可以用getattr函數_蘑菇街2013新款冬装,通過名字訪問屬性和方法_-7k7k7k7k7k小游戏:

In [27]: getattr(a, 'split')
Out[27]: <function str.split>

在其它語言中|_阜宁二手房,訪問對象的名字通常稱作“反射”|_东京热美女。本書不會大量使用getattr函數和相關的hasattrsetattr函數--河南省实验中学,使用這些函數可以高效編寫原生的|--我们的歌声里歌词、可重複使用的代碼|-|蕙兰凝胶。

鴨子類型

經常地--浠水姜林,你可能不關心對象的類型_-角竹光寿打成语,隻關心對象是否有某些方法或用途-_说话犀利是什么意思。這通常被稱為“鴨子類型”|_-天天酷跑大猫头,來自“走起來像鴨子|-运盛彩票官网、叫起來像鴨子--_宝利格改装卡宴,那麼它就是鴨子”的說法-__苦玄参。例如-金黛尔,你可以通過驗證一個對象是否遵循迭代協議|_2019年315曝光的净水器,判斷它是可迭代的-_运盛彩票真的假的。對於許多對象||极地海洋世界门票,這意味著它有一個__iter__魔術方法温州新城站订票电话,其它更好的判斷方法是使用iter函數_|项城征婚:

def isiterable(obj):
    try:
        iter(obj)
        return True
    except TypeError: # not iterable
        return False

這個函數會返回字符串以及大多數Python集合類型為True|--百度词典发音:

In [29]: isiterable('a string')
Out[29]: True

In [30]: isiterable([1, 2, 3])
Out[30]: True

In [31]: isiterable(5)
Out[31]: False

我總是用這個功能編寫可以接受多種輸入類型的函數--清风小雨文学网。常見的例子是編寫一個函數可以接受任意類型的序列(list___意意彩app、tuple_阿玛拉王国锻造材料、ndarray)或是迭代器||保定天鹅小区。你可先檢驗對象是否是列表(或是NUmPy數組)_尊龙网上娱乐,如果不是的話||1q币购物券,將其轉變成列表||异界之骨灰级玩家:

if not isinstance(x, list) and isiterable(x):
    x = list(x)

引入

在Python中-|云顶娱乐害惨了我,模塊就是一個有.py擴展名|-芙蓉树下的博客、包含Python代碼的文件___08vip。假設有以下模塊--云顶娱乐李逵打鱼分数:

# some_module.py
PI = 3.14159

def f(x):
    return x + 2

def g(a, b):
    return a + b

如果想從同目錄下的另一個文件訪問some_module.py中定義的變量和函數___11086移动彩票怎么样,可以_||陈文恩:

import some_module
result = some_module.f(5)
pi = some_module.PI

或者-_2019欢乐彩网合法吗:

from some_module import f, g, PI
result = g(5, PI)

使用as關鍵詞_青莲大桥,你可以給引入起不同的變量名|__苗老表:

import some_module as sm
from some_module import PI as pi, g as gf

r1 = sm.f(pi)
r2 = gf(6, pi)

二元運算符和比較運算符

大多數二元數學運算和比較都不難想到|--注册盈彩安全吗:

In [32]: 5 - 7
Out[32]: -2

In [33]: 12 + 21.5
Out[33]: 33.5

In [34]: 5 <= 2
Out[34]: False

表2-3列出了所有的二元運算符_-|祖峥。

要判斷兩個引用是否指向同一個對象||莱州中考成绩,可以使用is方法_-滦县二中吧。is not可以判斷兩個對象是不同的|-亿博国际娱乐:

In [35]: a = [1, 2, 3]

In [36]: b = a

In [37]: c = list(a)

In [38]: a is b
Out[38]: True

In [39]: a is not c
Out[39]: True

因為list總是創建一個新的Python列表(即複製)_-台湾身份证号码,我們可以斷定c是不同於a的__众乐彩票手机客户端。使用is比較與==運算符不同|-江苏盐城技师学院,如下||陆贞的身世:

In [40]: a == c
Out[40]: True

isis not常用來判斷一個變量是否為None||注册送彩金的彩票平台,因為隻有一個None的實例|-大丰长途汽车站:

In [41]: a = None

In [42]: a is None
Out[42]: True

表2-3 二元運算符

可變與不可變對象

Python中的大多數對象|雪乃纱恵,比如列表_|-比亚迪f5多少钱、字典-|_永胜国际正规吗、NumPy數組|369彩站联盟下载,和用戶定義的類型(類)-|赢彩票官网,都是可變的__优发国际官网网站。意味著這些對象或包含的值可以被修改去霉运:

In [43]: a_list = ['foo', 2, [4, 5]]

In [44]: a_list[2] = (3, 4)

In [45]: a_list
Out[45]: ['foo', 2, (3, 4)]

其它的_|-花语梦,例如字符串和元組_陈秋艳,是不可變的|_陈丽华简历:

In [46]: a_tuple = (3, 5, (4, 5))

In [47]: a_tuple[1] = 'four'
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-47-b7966a9ae0f1> in <module>()
----> 1 a_tuple[1] = 'four'
TypeError: 'tuple' object does not support item assignment

記住_-实况足球2014psp,可以修改一個對象並不意味就要修改它|_149期开奖结果是。這被稱為副作用_1399pk皇家彩世界。例如-锦州人流,當寫一個函數--南通电影,任何副作用都要在文檔或注釋中寫明379虎嗅网。如果可能的話|||234彩票信誉怎么样,我推薦避免副作用_|信息价值网,采用不可變的方式-快乐大本营张惠妹,即使要用到可變對象-|2000彩官网。

標量類型

Python的標準庫中有一些內建的類型-_038彩票靠谱吗,用以處理數值數據-|_骂小佛、字符串-|静音飞翼龙、布爾值__-qq2011官方下载正式版免费下载,和日期時間-许昌胖子店。這些單值類型被稱為標量類型-_舒淇facebook,本書中稱其為標量-234彩票。表2-4列出了主要的標量__|战地3沙漠巡逻车。日期和時間處理會另外討論_我爱你金亨俊,因為它們是標準庫的datetime模塊提供的_|美丽霸道的授课老师。

表2-4 Python的標量

數值類型

Python的主要數值類型是intfloat|-|魏征进谏图的作者。int可以存儲任意大的數||永胜国际是投彩么:

In [48]: ival = 17239871

In [49]: ival ** 6
Out[49]: 26254519291092456596965462913230729701102721

浮點數使用Python的float類型-_-青青岛社区胶南论坛。每個數都是雙精度(64位)的值_-_解方程计算器。也可以用科學計數法表示345彩票网登录:

In [50]: fval = 7.243

In [51]: fval2 = 6.78e-5

不能得到整數的除法會得到浮點數__致哀 志哀:

In [52]: 3 / 2
Out[52]: 1.5

要獲得C-風格的整除(去掉小數部分)||_钟莉颖全套下载,可以使用底除運算符//_|众彩彩票网络赌钱平台:

In [53]: 3 // 2
Out[53]: 1

字符串

許多人是因為Python強大而靈活的字符串處理而使用Python的-_|远途国际彩票软件。你可以用單引號或雙引號來寫字符串_--新型电子产品:

a = 'one way of writing a string'
b = "another way"

對於有換行符的字符串__青年中国说余佳文,可以使用三引號|小林子游戏网,'''或"""都行||_mellow高敏爱:

c = """
This is a longer string that
spans multiple lines
"""

字符串c實際包含四行文本-|铁路公安改革,"""後麵和lines後麵的換行符|01彩票forios。可以用count方法計算c中的新的行||上海静安火灾:

In [55]: c.count('\n')
Out[55]: 3

Python的字符串是不可變的|-|特种兵之火凤凰快播,不能修改字符串|--清新壁纸:

In [56]: a = 'this is a string'

In [57]: a[10] = 'f'
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-57-5ca625d1e504> in <module>()
----> 1 a[10] = 'f'
TypeError: 'str' object does not support item assignment

In [58]: b = a.replace('string', 'longer string')

In [59]: b
Out[59]: 'this is a longer string'

經過以上的操作--四川工人日报电子版,變量a並沒有被修改|_10500彩票怎么玩:

In [60]: a
Out[60]: 'this is a string'

許多Python對象使用str函數可以被轉化為字符串-|前田敦子毕业:

In [61]: a = 5.6

In [62]: s = str(a)

In [63]: print(s)
5.6

字符串是一個序列的Unicode字符-王的第十七妾,因此可以像其它序列||美丽飞蓬,比如列表和元組(下一章會詳細介紹兩者)一樣處理|__新品发布会主持词:

In [64]: s = 'python'

In [65]: list(s)
Out[65]: ['p', 'y', 't', 'h', 'o', 'n']

In [66]: s[:3]
Out[66]: 'pyt'

語法s[:3]被稱作切片-|_卧底军婚,適用於許多Python序列|_注册自动送18。後麵會更詳細的介紹__-苏西 埃米斯,本書中用到很多切片__11选5在哪儿玩。

反斜杠是轉義字符|_-快手福利视频,意思是它備用來表示特殊字符_-|黑帮图片,比如換行符\n或Unicode字符-|日升丰。要寫一個包含反斜杠的字符串|_|qq空间克隆代码,需要進行轉義|注册就送38可微信提现:

In [67]: s = '12\\34'

In [68]: print(s)
12\34

如果字符串中包含許多反斜杠|--众盈娱乐违法,但沒有特殊字符|_5个人出名了,這樣做就很麻煩-1号彩票信得过吗?。幸好|-众赢彩票APP,可以在字符串前麵加一個r-_|诺基亚3110c游戏,表明字符就是它自身-|陈照升:

In [69]: s = r'this\has\no\special\characters'

In [70]: s
Out[70]: 'this\\has\\no\\special\\characters'

r表示raw||360彩票安全购首页。

將兩個字符串合並_093彩票合法吗,會產生一個新的字符串-|永胜国际投注是真的吗:

In [71]: a = 'this is the first half '

In [72]: b = 'and this is the second half'

In [73]: a + b
Out[73]: 'this is the first half and this is the second half'

字符串的模板化或格式化-卫视电影台直播,是另一個重要的主題|陈嘉栋。Python 3拓展了此類的方法-优博彩票网站,這裏隻介紹一些__重金属梁铮。字符串對象有format方法-世纪星光电影城,可以替換格式化的參數為字符串_-娱乐天地可以充钱吗,產生一個新的字符串_-|wifi密码破解工具:

In [74]: template = '{0:.2f} {1:s} are worth US${2:d}'

在這個字符串中||造梦西游3号源怎么用,

  • {0:.2f}表示格式化第一個參數為帶有兩位小數的浮點數|-|苏州大润发官方网站。

  • {1:s}表示格式化第二個參數為字符串|k7k7k。

  • {2:d}表示格式化第三個參數為一個整數_|诺基亚5320xm刷机。

要替換參數為這些格式化的參數_|-阿诺德蓄电池,我們傳遞format方法一個序列|_|速归速归 如果不归:

In [75]: template.format(4.5560, 'Argentine Pesos', 1)
Out[75]: '4.56 Argentine Pesos are worth US$1'

字符串格式化是一個很深的主題__抓住偷水贼,有多種方法和大量的選項---csolcn,可以控製字符串中的值是如何格式化的-_-欧洲古典四大名著。推薦參閱Python官方文檔-|收破烂歌词。

這裏概括介紹字符串處理--|106极速分分计划,第8章的數據分析會詳細介紹-||创业我们的故事。

字節和Unicode

在Python 3及以上版本中_最新股评,Unicode是一級的字符串類型_|苍井空无码 亚洲 在线,這樣可以更一致的處理ASCII和Non-ASCII文本-|2m永久免费开奖。在老的Python版本中__|花小幽,字符串都是字節-易点彩票3D试机号,不使用Unicode編碼-|数控g96。假如知道字符編碼---亿人娱乐彩票,可以將其轉化為Unicode___湖南卫视直播在线观看古剑奇谭。看一個例子-众彩彩票网络赌钱平台:

In [76]: val = "español"

In [77]: val
Out[77]: 'español'

可以用encode將這個Unicode字符串編碼為UTF-8-|博客门:

In [78]: val_utf8 = val.encode('utf-8')

In [79]: val_utf8
Out[79]: b'espa\xc3\xb1ol'

In [80]: type(val_utf8)
Out[80]: bytes

如果你知道一個字節對象的Unicode編碼___英文版权声明,用decode方法可以解碼__雷沃斯:

In [81]: val_utf8.decode('utf-8')
Out[81]: 'español'

雖然UTF-8編碼已經變成主流_诺基亚5320xm软件下载,_|金丝雀定位,但因為曆史的原因|_-至尊宝v530,你仍然可能碰到其它編碼的數據|-_雷波溪洛渡:

In [82]: val.encode('latin1')
Out[82]: b'espa\xf1ol'

In [83]: val.encode('utf-16')
Out[83]: b'\xff\xfee\x00s\x00p\x00a\x00\xf1\x00o\x00l\x00'

In [84]: val.encode('utf-16le')
Out[84]: b'e\x00s\x00p\x00a\x00\xf1\x00o\x00l\x00'

工作中碰到的文件很多都是字節對象_||叶彤倩,盲目地將所有數據編碼為Unicode是不可取的__天府新区总体规划。

雖然用的不多||歌手高林生,你可以在字節文本的前麵加上一個b-|camera是什么意思:

In [85]: bytes_val = b'this is bytes'

In [86]: bytes_val
Out[86]: b'this is bytes'

In [87]: decoded = bytes_val.decode('utf8')

In [88]: decoded  # this is str (Unicode) now
Out[88]: 'this is bytes'

布爾值

Python中的布爾值有兩個|_诺亚舟np980,True和False||让我再抱你一回。比較和其它條件表達式可以用True和False判斷-|众博彩票网址导航。布爾值可以與and和or結合使用|-重庆419:

In [89]: True and True
Out[89]: True

In [90]: False or True
Out[90]: True

類型轉換

str盈彩彩票登录网址、bool-|-盈彩在线平台是什么、int和float也是函數--_qq炫舞紫钻官网,可以用來轉換類型||哑巴新娘小说:

In [91]: s = '3.14159'

In [92]: fval = float(s)

In [93]: type(fval)
Out[93]: float

In [94]: int(fval)
Out[94]: 3

In [95]: bool(fval)
Out[95]: True

In [96]: bool(0)
Out[96]: False

None

None是Python的空值類型|_易彩官方网下载。如果一個函數沒有明確的返回值--河南马桶解说,就會默認返回None__|2019时时彩精准计划:

In [97]: a = None

In [98]: a is None
Out[98]: True

In [99]: b = 5

In [100]: b is not None
Out[100]: True

None也常常作為函數的默認參數--|106官网彩色版:

def add_and_maybe_multiply(a, b, c=None):
    result = a + b

    if c is not None:
        result = result * c

    return result

另外__-中兴彩票ApP,None不僅是一個保留字_jthysh,還是唯一的NoneType的實例-094彩票:

In [101]: type(None)
Out[101]: NoneType

日期和時間

Python內建的datetime模塊提供了datetime__|09版qq下载、datetime類型___2m彩票永久免费资料。datetime類型結合了datetime|鲤鱼山火山爆发时间,是最常使用的-_118彩票app安卓版107:

In [102]: from datetime import datetime, date, time

In [103]: dt = datetime(2011, 10, 29, 20, 30, 21)

In [104]: dt.day
Out[104]: 29

In [105]: dt.minute
Out[105]: 30

根據datetime實例|_|雍正王朝历史,你可以用datetime提取出各自的對象-_-英皇会所:

In [106]: dt.date()
Out[106]: datetime.date(2011, 10, 29)

In [107]: dt.time()
Out[107]: datetime.time(20, 30, 21)

strftime方法可以將datetime格式化為字符串坛缘坊:

In [108]: dt.strftime('%m/%d/%Y %H:%M')
Out[108]: '10/29/2011 20:30'

strptime可以將字符串轉換成datetime對象_|_168彩票pk10提现没到账:

In [109]: datetime.strptime('20091031', '%Y%m%d')
Out[109]: datetime.datetime(2009, 10, 31, 0, 0)

表2-5列出了所有的格式化命令-_苦笑mv。

表2-5 格式化命令

當你聚類或對時間序列進行分組|_左邦路,替換datetimes的time字段有時會很有用--苏宁电器五一活动。例如_陈超贤,用0替換分和秒|-|董小姐歌词:

In [110]: dt.replace(minute=0, second=0)
Out[110]: datetime.datetime(2011, 10, 29, 20, 0)

因為datetime.datetime是不可變類型_|96135商旅网,上麵的方法會產生新的對象|清东陵地宫。

兩個datetime對象的差會產生一個datetime.timedelta類型--168极速开奖结果:

In [111]: dt2 = datetime(2011, 11, 15, 22, 30)

In [112]: delta = dt2 - dt

In [113]: delta
Out[113]: datetime.timedelta(17, 7179)

In [114]: type(delta)
Out[114]: datetime.timedelta

結果timedelta(17, 7179)指明了timedelta將17天_-北京466耳鼻喉专家、7179秒的編碼方式-2013江苏高考数学试卷。

timedelta添加到datetime蛮荒之友,會產生一個新的偏移datetime_|陈文祥:

In [115]: dt
Out[115]: datetime.datetime(2011, 10, 29, 20, 30, 21)

In [116]: dt + delta
Out[116]: datetime.datetime(2011, 11, 15, 22, 30)

控製流

Python有若幹內建的關鍵字進行條件邏輯|-_黄山天狗望月、循環和其它控製流操作_|风险看吧。

if|--北京某高官儿子车祸、elif和else

if是最廣為人知的控製流語句-__花都区教育网。它檢查一個條件__-虞城县教育局,如果為True-|小腻腻博客,就執行後麵的語句--胸围90是多大:

if x < 0:
    print('It's negative')

if後麵可以跟一個或多個elif|_|qq2009下载,所有條件都是False時_038彩票是合法的吗?,還可以添加一個else__搜搜返利网:

if x < 0:
    print('It's negative')
elif x == 0:
    print('Equal to zero')
elif 0 < x < 5:
    print('Positive but smaller than 5')
else:
    print('Positive and larger than or equal to 5')

如果某個條件為True_|易彩集团,後麵的elif就不會被執行||谢园的学生。當使用and和or時|||雅迪女鞋官网,複合條件語句是從左到右執行_众盈彩票能赚钱吗:

In [117]: a = 5; b = 7

In [118]: c = 8; d = 4

In [119]: if a < b or c > d:
   .....:     print('Made it')
Made it

在這個例子中|-|重庆富士康工资待遇,c > d不會被執行-|亿彩彩票客服,因為第一個比較是True|桃花潭水深千尺 不及汪伦送我情的我是谁:

也可以把比較式串在一起|2013免费刷q币软件:

In [120]: 4 > 3 > 2 > 1
Out[120]: True

for循環

for循環是在一個集合(列表或元組)中進行迭代__4399积分商城,或者就是一個迭代器--半年工作总结结尾。for循環的標準語法是|pdf7 0专业版:

for value in collection:
    # do something with value

你可以用continue使for循環提前_-易点彩票网手机版,跳過剩下的部分||罗格电器。看下麵這個例子-_-7k77k小游戏,將一個列表中的整數相加__保定热线测速,跳過None_-花颜匪我思存:

sequence = [1, 2, None, 4, None, 5]
total = 0
for value in sequence:
    if value is None:
        continue
    total += value

可以用break跳出for循環--亿彩是正规的吗。下麵的代碼將各元素相加---黄金减毒烟嘴,直到遇到5_-_234天天彩票官网:

sequence = [1, 2, 0, 4, 6, 5, 2, 1]
total_until_5 = 0
for value in sequence:
    if value == 5:
        break
    total_until_5 += value

break隻中斷for循環的最內層---掌上彩票官网,其餘的for循環仍會運行_赢咖登录:

In [121]: for i in range(4):
   .....:     for j in range(4):
   .....:         if j > i:
   .....:             break
   .....:         print((i, j))
   .....:
(0, 0)
(1, 0)
(1, 1)
(2, 0)
(2, 1)
(2, 2)
(3, 0)
(3, 1)
(3, 2)
(3, 3)

如果集合或迭代器中的元素序列(元組或列表)|_|谈爱李白原文,可以用for循環將其方便地拆分成變量-|_山东淄博陶瓷展:

for a, b, c in iterator:
    # do something

While循環

while循環指定了條件和代碼-discoverybuy,當條件為False或用break退出循環-mucuntang,代碼才會退出-__汉沽地图:

x = 256
total = 0
while x > 0:
    if total > 500:
        break
    total += x
    x = x // 2

pass

pass是Python中的非操作語句_众博彩票app下载。代碼塊不需要任何動作時可以使用(作為未執行代碼的占位符)||10年的信誉彩票平台;因為Python需要使用空白字符劃定代碼塊-__木樨园服装市场,所以需要pass||_q空间克隆:

if x < 0:
    print('negative!')
elif x == 0:
    # TODO: put something smart here
    pass
else:
    print('positive!')

range

range函數返回一個迭代器||艾尔之光宠物食物,它產生一個均勻分布的整數序列--|锦都游泳馆:

In [122]: range(10)
Out[122]: range(0, 10)

In [123]: list(range(10))
Out[123]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

range的三個參數是(起點--我的家乡画,終點-无线专享是什么意思,步進)-_钢制压力容器用封头:

In [124]: list(range(0, 20, 2))
Out[124]: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

In [125]: list(range(5, 0, -1))
Out[125]: [5, 4, 3, 2, 1]

可以看到||-宋祖德近况,range產生的整數不包括終點-__永盛娱乐客服微信。range的常見用法是用序號迭代序列-|-消防概念股:

seq = [1, 2, 3, 4]
for i in range(len(seq)):
    val = seq[i]

可以使用list來存儲range在其他數據結構中生成的所有整數_-艾未未是谁,默認的迭代器形式通常是你想要的||静安区大火。下麵的代碼對0到99999中3或5的倍數求和||-韩版恶作剧之吻收视率:

sum = 0
for i in range(100000):
    # % is the modulo operator
    if i % 3 == 0 or i % 5 == 0:
        sum += i

雖然range可以產生任意大的數_|幼儿教师工作总结,但任意時刻耗用的內存卻很小_--上海一号店客服电话。

三元表達式

Python中的三元表達式可以將if-else語句放到一行裏-_|中国卫生人才网成绩查询2015。語法如下|||新聊斋志异之婴宁:

value = true-expr if condition else false-expr

true-exprfalse-expr可以是任何Python代碼|-|sss355。它和下麵的代碼效果相同_|江苏盐城技师学院:

if condition:
    value = true-expr
else:
    value = false-expr

下麵是一個更具體的例子|-新农村房屋模型:

In [126]: x = 5

In [127]: 'Non-negative' if x >= 0 else 'Negative'
Out[127]: 'Non-negative'

和if-else一樣-||青春雷锋 零票房,隻有一個表達式會被執行__不属于国家领土。因此|_|国企改革方向,三元表達式中的if和else可以包含大量的計算-|娱乐天地彩票信息,但隻有True的分支會被執行|_|万能上分器。

雖然使用三元表達式可以壓縮代碼__帅同文学转载,但會降低代碼可讀性-||多普达t8388刷机。

日記本
Web note ad 1