不論是數據分析舷丹,數據可視化,還是數據挖掘翘魄,一切的一切全都是以數據作為最基礎的元素鼎天。利用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丰榴,這樣就可以找到大神聚合的群,如果你只愿意別人幫助你秆撮,不愿意分享或者幫助別人四濒,那就請不要加了,你把你會的告訴別人這是一種分享职辨。
盗蟆。