利用Python讀取外部數據文件

不論是數據分析舷丹,數據可視化,還是數據挖掘翘魄,一切的一切全都是以數據作為最基礎的元素鼎天。利用Python進行數據分析,同樣最重要的一步就是如何將數據導入到Python中暑竟,然后才可以實現后面的數據分析斋射、數據可視化、數據挖掘等但荤。

在本期的Python學習中罗岖,我們將針對Python如何獲取外部數據做一個詳細的介紹,從中我們將會學習以下4個方面的數據獲雀乖辍:

1桑包、讀取文本文件的數據,如txt文件和csv文件

2纺非、讀取電子表格文件哑了,如Excel文件

3、讀取統(tǒng)計軟件生成的數據文件烧颖,如SAS數據集弱左、SPSS數據集等

4、讀取數據庫數據倒信,如MySQL數據、SQL Server數據

一泳梆、讀取文本文件的數據

大家都知道鳖悠,Python中pandas模塊是專門用來數據分析的一個強大工具,在《Python數據分析之pandas學習(一)》和《Python數據分析之pandas學習(二)》中我們詳細介紹了有關pandas模塊的應用优妙,下面我們就來介紹pandas是如何讀取外部數據的乘综。

1、讀取txt數據

In [1]: import pandas as pd

In [2]: mydata_txt = pd.read_csv('C:\\test_code.txt',sep = '\t',encoding = 'utf-8')

對于中文的文本文件常容易因為編碼的問題而讀取失敗套硼,正如上圖所示卡辰。遇到這樣的編碼問題該如何處置呢?解決辦法有兩種情況:

1)當原始文件txt或csv的數據不是uft8格式時邪意,需要另存為utf8格式編碼九妈;

2)如果原始的數據文件就是uft8格式,為了正常讀入雾鬼,需要將read_csv函數的參數encoding設置為utf-8

將原始數據另存為utf8格式的數據萌朱,重新讀入txt數據

In [3]: mydata_txt = pd.read_csv('C:\\test.txt',sep = '\t',encoding = 'utf-8')

In [4]: mydata_txt

很順利,txt文本文件數據就這樣進入了Python的口袋里了策菜。

2晶疼、讀取csv數據

csv文本文件是非常常用的一種數據存儲格式酒贬,而且其存儲量要比Excel電子表格大很多,下面我們就來看看如何利用Python讀取csv格式的數據文件:

In [5]: mydata_csv = pd.read_csv('C:\\test.csv',sep = ',',encoding = 'utf-8')

In [6]: mydata_csv

如果你善于總結的話翠霍,你會發(fā)現锭吨,txt文件和csv文件均可以通過pandas模塊中的read_csv函數進行讀取。該函數有20多個參數寒匙,類似于R中的read.table函數零如,如果需要查看具體的參數詳情,可以查看幫助文檔:help(pandas.read_csv)蒋情。

二埠况、讀取電子表格文件

這里所說的電子表格就是Excel表格,可以是xls的電子表格棵癣,也可以是xlsx的電子表格辕翰。在日常工作中,很多數據都是存放在Excel電子表格中的狈谊,如果我們需要使用Python對其進行分析或處理的話喜命,第一步就是如何讀取Excel數據。下面我們來看看如果讀取Excel數據集:

In [7]: mydata_excel = pd.read_excel('C:\\test.xlsx',sep = '\t',encoding = 'utf-8')

In [8]: mydata_excel

三河劝、讀取統(tǒng)計軟件生成的數據文件

往往在集成數據源的時候壁榕,可能會讓你遇到一種苦惱,那就是你的電腦里存放了很多統(tǒng)計軟件自帶的或生成的數據集赎瞎,諸如R語言數據集牌里、SAS數據集、SPSS數據集等务甥。那么問題來了牡辽,如果你電腦里都裝了這些軟件的話,這些數據集你自然可以看見敞临,并可以方便的轉換為文本文件或電子表格文件态辛,如果你的電腦里沒有安裝SAS或SPSS這樣大型的統(tǒng)計分析軟件的話,那么你該如何查看這些數據集呢挺尿?請放心奏黑,Python很萬能,它可以讀取很多種統(tǒng)計軟件的數據集编矾,下面我們介紹幾種Python讀取統(tǒng)計數據集的方法:

1熟史、讀取SAS數據集

SAS數據集的讀取可以使用pandas模塊中的read_sas函數,我們不妨試試該函數讀取SAS數據集窄俏。下圖是使用SAS打開的數據集以故,如果你的電腦中沒有安裝SAS,那你也可以通過Python實現數據的讀取裆操。

In [1]: import pandas as pd

In [2]: mydata_sas = pd.read_sas('G:\\class.sas7bdat',encoding='utf8')

2怒详、讀取SPSS數據集

讀取SPSS數據就稍微復雜一點炉媒,自己測試了好多次,查了好多資料昆烁,功夫不負有心人啊吊骤,最終還是搞定了。關于讀取SPSS數據文件静尼,需要為您的Python安裝savReaderWriter模塊白粉,該模塊可以到如下鏈接進行下載并安裝:https://pypi.python.org/pypi/savReaderWriter/3.4.2。

安裝savReaderWriter模塊

可以通過該命令進行savReaderWriter模塊的安裝:python setup.py install

下圖是SPSS數據在SPSS中打開的樣子:

In [1]: import savReaderWriter

In [2]: mydata_spss = savReaderWriter.SavReader('employee_data.sav')

In [3]: mydata_spss

3鼠渺、實在沒辦法該怎么辦鸭巴?

如果你嘗試了好多種模塊都無法讀取某個統(tǒng)計軟件的數據,我建議你還是回到R中拦盹,R也是開源的統(tǒng)計分析工具鹃祖,體積也非常小,只有40M左右普舆,而且R自帶的foreign包可以讀取很多種統(tǒng)計軟件的數據集恬口,當讀取成功后,再利用write.csv函數將數據集寫出為csv格式的數據沼侣,這樣Python就可以輕松讀取csv數據集了祖能,萬事靈活一點就可以完成你想要的任何結果~

四、讀取數據庫數據

企業(yè)中更多的數據還是存放在諸如MySQL蛾洛、SQL Server养铸、DB2等數據庫中,為了能夠使Python連接到數據庫中轧膘,科學家專門設計了Python DB API的接口钞螟。我們仍然通過例子來說明Python是如何實現數據庫的連接與操作的。

1扶供、Python連接MySQL

MySQLdb模塊是一個連接Python與MySQL的中間橋梁筛圆,但目前只能在Python2.x中運行裂明,但不意味著Python3就無法連接MySQL數據庫椿浓。這里向大家介紹一個非常靈活而強大的模塊,那就是pymysql模塊闽晦。我比較喜歡他的原因是扳碍,該模塊可以偽裝成MySQLdb模塊,具體看下面的例子:

In [1]: import pymysql

In [2]: pymysql.install_as_MySQLdb() #偽裝為MySQLdb模塊

In [3]: import MySQLdb

使用Connection函數聯通Python與MySQL

In [4]: conn = MySQLdb.Connection(

...: host = 'localhost',

...: user = 'root',

...: password = 'snake',

...: port = 3306,

...: database = 'test',

...: charset='gbk')

使用conn的游標方法(cursor)仙蛉,目的是為接下來的數據庫操作做鋪墊笋敞。

In [5]: cursor = conn.cursor()

In [6]: sql = 'select * from memberinfo'

執(zhí)行SQL語句

In [7]: cursor.execute(sql)

Out[7]: 4

In [8]: data = cursor.fetchall()

In [9]: data

我們發(fā)現data中存儲的是元組格式的數據集磷雇,我們在《Python數據分析之pandas學習(一)》中講到莹菱,構造DataFrame數據結構只能通過數組、數據框、字典诵原、列表等方式構建,但這里是元組格式的數據雄嚣,該如何處理呢菇绵?很簡單,只需使用list函數就可以快速的將元組數據轉換為列表格式的數據后雷。

In [10]: data = list(data)

In [11]: data

下面我們就是要pandas模塊中的DataFrame函數將上面的data列表轉換為Python的數據框格式:

In [14]: import pandas as pd

In [15]: mydata = pd.DataFrame(data, columns = ['id','name','age','gender'])

In [16]: mydata

最后千萬千萬注意的是季惯,當你的數據讀取完之后一定要記得關閉游標和連接,因為不關閉會導致電腦資源的浪費臀突。

In [19]: cursor.close()

In [20]: conn.close()

2勉抓、Python連接SQL Server

使用Python連接SQL Server數據庫,我們這里推薦使用pymssql模塊候学,該模塊的語法與上面講的pymysql是一致的藕筋,這里就不一一講解每一步的含義了,直接上代碼:

In [21]: import pymssql

In [22]: connect = pymssql.connect(

...: host = '172.18.1.6\SqlR2',

...: user = 'sa',

...: password = '1q2w3e4r!!',

...: database='Heinz_Ana',

...: charset='utf8')

In [23]: cursor = connect.cursor()

In [24]: sql = 'select * from HeinzDB2_10'

In [25]: cursor.execute(sql)

In [26]: data = cursor.fetchall()

In [27]: data[0]

Out[27]: (67782, '2013-05-01', '二階段', 1.0, 279.0)

In [28]: mydata = pd.DataFrame(list(data),columns = ['ConsumerID',

...: 'Purdate',

...: 'Phase',

...: 'ChangeTinRatio',

...: 'TOTALAMT'])

In [29]: mydata.head()

本期的內容就是向大家介紹如何使用Python實現外部數據的讀取盒齿,只有完成了這個基本的第一步念逞,才會順利的進行下面的清洗、處理边翁、分析甚至挖掘部分翎承。

在生活中學會不斷挖掘自己的潛力。我們都是一個普通人符匾,可能并不清楚自己到底在哪方面占有優(yōu)勢叨咖。所以,學著在生活中找到自己的優(yōu)勢啊胶,并根據優(yōu)勢選擇一定的就業(yè)方向甸各。

不隨波逐流。不要看周圍的人做什么焰坪,自己就做什么趣倾,也許別人做的并不適合你。別人的優(yōu)勢很可能會成為你的劣勢某饰。所以儒恋,堅定自己的想法,讓自己知道那些方面適合自己黔漂,自己可以勝任诫尽。

不斷嘗試可能成為自己的優(yōu)勢。你不知道什么適合自己炬守,所以才要大膽牧嫉、勇敢地嘗試。找到一種可以屬于你的獨特的優(yōu)勢。

堅定信念酣藻。一旦你堅定了自己的信念曹洽,就不要被別人的意見或是諷刺或是嘲笑所干擾。別人不是你辽剧,不懂的你在想什么衣洁,不清楚你開始這件事的源頭。你的事情抖仅,不了解你的人坊夫,沒有資格輕易評說。

不茫然撤卢,不多想环凿。別讓太多的事干擾到你奮斗下去的信念。夢想不容許太多的雜念放吩。那些雜念只會讓你的心愈來愈脆弱智听,多為一個人考慮,到頭來渡紫,傷害的還是自己到推。

選擇自己學習方法

每個人都有適合自己的方法,有的人去選擇自學惕澎,有的人選擇看視頻學習莉测,有的人選擇報名培訓班,那在這個時候唧喉,你就要自己考慮清楚捣卤,到底那樣對的幫助是最大的,個人覺得是跟著培訓班最好的八孝,畢竟人家的實戰(zhàn)項目多董朝,我們學軟件開發(fā)的都知道實戰(zhàn)項目對于學好一門語言是 很重要的。

學習python有那些誤區(qū)

具體里面的誤區(qū)非常的多干跛,那些就不需要我去寫出來子姜,我給你說的一般都是心態(tài)的問題,首先一個覺得自己會java和c++楼入,然后我學習python就很牛哥捕,但是你要知道語言是有很多相同的地方,但是不是通用浅辙,一定要自己學習的仔細扭弧。還有一種就是覺得我不會英語阎姥,我要先去把英語學習好在來學python记舆。因為自己想還壞主意然后學習,這樣的都是容易找進誤區(qū)的呼巴。

怎么樣才能學好python學好python你需要一個良好的環(huán)境泽腮,一個優(yōu)質的開發(fā)交流群御蒲,群里都是那種相互幫助的人才是可以的,我有建立一個python學習交流群诊赊,在群里我們相互幫助厚满,相互關心,相互分享內容碧磅,這樣出問題幫助你的人就比較多碘箍,群號是301,還有056鲸郊,最后是051丰榴,這樣就可以找到大神聚合的群,如果你只愿意別人幫助你秆撮,不愿意分享或者幫助別人四濒,那就請不要加了,你把你會的告訴別人這是一種分享职辨。

盗蟆。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市舒裤,隨后出現的幾起案子喳资,更是在濱河造成了極大的恐慌,老刑警劉巖腾供,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件骨饿,死亡現場離奇詭異,居然都是意外死亡台腥,警方通過查閱死者的電腦和手機宏赘,發(fā)現死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來黎侈,“玉大人察署,你說我怎么就攤上這事【海” “怎么了贴汪?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長休吠。 經常有香客問我扳埂,道長,這世上最難降的妖魔是什么瘤礁? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任阳懂,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘岩调。我一直安慰自己巷燥,他們只是感情好,可當我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布号枕。 她就那樣靜靜地躺著缰揪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪葱淳。 梳的紋絲不亂的頭發(fā)上钝腺,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天,我揣著相機與錄音赞厕,去河邊找鬼拍屑。 笑死,一個胖子當著我的面吹牛坑傅,可吹牛的內容都是我干的僵驰。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼唁毒,長吁一口氣:“原來是場噩夢啊……” “哼蒜茴!你這毒婦竟也來了?” 一聲冷哼從身側響起浆西,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤粉私,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后近零,有當地人在樹林里發(fā)現了一具尸體诺核,經...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年久信,在試婚紗的時候發(fā)現自己被綠了窖杀。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡裙士,死狀恐怖入客,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情腿椎,我是刑警寧澤桌硫,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站啃炸,受9級特大地震影響铆隘,放射性物質發(fā)生泄漏。R本人自食惡果不足惜南用,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一膀钠、第九天 我趴在偏房一處隱蔽的房頂上張望掏湾。 院中可真熱鬧,春花似錦托修、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至十酣,卻和暖如春涩拙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背耸采。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工兴泥, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人虾宇。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓搓彻,卻偏偏與公主長得像,于是被迫代替她去往敵國和親嘱朽。 傳聞我的和親對象是個殘疾皇子旭贬,可洞房花燭夜當晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內容