利用Python讀取外部數據文件

2021-02-13 Python愛好者社區

作者:劉順祥

個人微信公眾號:每天進步一點點2015

不論是數據分析,數據可視化,還是數據挖掘,一切的一切全都是以數據作為最基礎的元素。利用Python進行數據分析,同樣最重要的一步就是如何將數據導入到Python中,然後才可以實現後面的數據分析、數據可視化、數據挖掘等。

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

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

2、讀取電子表格文件,如Excel文件

3、讀取統計軟體生成的數據文件,如SAS數據集、SPSS數據集等

4、讀取資料庫數據,如MySQL數據、SQL Server數據

一、讀取文本文件的數據


大家都知道,Python中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


如果你善於總結的話,你會發現,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



三、讀取統計軟體生成的數據文件


往往在集成數據源的時候,可能會讓你遇到一種苦惱,那就是你的電腦裡存放了很多統計軟體自帶的或生成的數據集,諸如R語言數據集、SAS數據集、SPSS數據集等。那麼問題來了,如果你電腦裡都裝了這些軟體的話,這些數據集你自然可以看見,並可以方便的轉換為文本文件或電子表格文件,如果你的電腦裡沒有安裝SAS或SPSS這樣大型的統計分析軟體的話,那麼你該如何查看這些數據集呢?請放心,Python很萬能,它可以讀取很多種統計軟體的數據集,下面我們介紹幾種Python讀取統計數據集的方法:

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、實在沒辦法該怎麼辦?


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

四、讀取資料庫數據


企業中更多的數據還是存放在諸如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'

執行SQL語句

In [7]: cursor.execute(sql)

Out[7]: 4

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

In [9]: data


我們發現data中存儲的是元組格式的數據集,我們之前講到,構造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愛好者社區歷史文章大合集

Python愛好者社區歷史文章列表(每周append更新一次)

福利:文末掃碼立刻關注公眾號,「Python愛好者社區」,開始學習Python課程:

關注後在公眾號內回復課程即可獲取:

小編的Python入門視頻課程!!!

崔老師爬蟲實戰案例免費學習視頻。

丘老師數據科學入門指導免費學習視頻。

陳老師數據分析報告製作免費學習視頻。

玩轉大數據分析!Spark2.X+Python 精華實戰課程免費學習視頻。

丘老師Python網絡爬蟲實戰免費學習視頻。

相關焦點

  • 一起學Python-外部文件的讀取方法
    認識open代碼既然要操作文件,所以我們需要用open代碼去打開一個文件,比如我們想要讀取一個txt文檔可以寫入一下代碼:f = open("u_info",mode="r",encoding="UTF-8")
  • python(pandas)讀取外部數據---使用Pandas讀寫操作txt文件
    1、準備.txt的數據文件其實pandas讀寫.txt文件和讀寫csv文件是類似的,而且使用的都是pd.read_csv()  /
  • Python學習120課 pandas簡介kaggle下載數據及pandas讀取外部數據
    【每天幾分鐘,從零入門python編程的世界!】numpy的基本的東西我們學習差不多了,後面具體應用中遇到問題具體分析,然後去深入了解遇到的新的知識點就行。現在我們開始學習pandas,pandas一般用的更多,pandas是基於numpy去寫的。pandas是一個專門做數據結構和數據分析的庫。
  • Python數據分析:pandas讀取和寫入數據
    平時工作中,我們會接觸到不同的數據文件,比如很常見的excel文件(後綴名為xls和xlsx),csv、txt等文本文件,json文件以及sql文件等等。pandas讀取這些數據文件的方法如表格所示:01讀取寫入文本文件read_csv()方法用來讀取 csv格式的數據文件,read_table()方法則是讀取通用分隔符分隔的數據文件,它們的參數相同。
  • Python讀取ini配置文件
    python看過我之前文章的同學可能知道,最近一直在做百度語音合成的功能,進一步的延伸功能,此次是批量生成文章的語音文件目前是使用python來實現的,將代碼打包成了exe文件,方便客戶進行測試。下面說一下配置文件,本次直說ini格式的配置文件。創建ini文件在目錄中創建.ini文件,我們以config.ini文件名為例。進行創建。在創建好的文件內編寫配置信息。
  • [python script練習集] 如何從外部坐標文件批量建立參考點?
    #小F同學abaqus二次開發python腳本練習題記錄系列#練習題一
  • Python | 看得到,取得到,才是數據(二):幾行代碼搞定PDF文件中表格數據讀取
    幾行代碼搞定PDF文件中表格數據讀取!相關閱讀如何用Python幫你高效地翻憑證?Python整合平臺Anaconda的安裝和使用如何批量在多個word文檔中查找線索關鍵詞?看得到,取得到,才是數據:pandas 也可爬蟲?
  • 基於python的大數據分析-pandas數據讀取(代碼實戰)
    長按上方二維碼加入千人QQ群基於python的大數據分析實戰學習筆記-Anaconda基於python的大數據分析實戰學習筆記-pandas(數據分析包)基於python的大數據分析實戰學習筆記-pandas之DataFrame我們常見的數據存儲格式無非就是csv、excel、txt以及資料庫等形式
  • [乾貨分享】用Python讀取CSV文件的幾種方式
    有時候數據是以csv形式存儲的,要處理數據我們需要先進行讀取操作。這裡我總結了幾種csv的讀取方法(基於python)。1.利用numpy讀取import numpy as npdata = np.loadtxt(open("路徑.csv","rb"),delimiter=",",skiprows=n,usecols=[2,3]) delimiter是分隔符,skiprows是跳過前n行,usecols是使用的列數,例子中讀取的是
  • python學習筆記(6):csv文件讀取
    昨天發了篇文章,是講如何讀取.xls格式文件的,今天來說下CSV文件怎麼讀取。我個人用CSV還是比較多的,因為讀取起來比較方便。小試牛刀「示例文件」「來個簡單式的」讀取csv文件,用的是csv.reader()這個方法。
  • python3 讀取XML文件的入坑經歷
    需要讀取xml裡的路徑,依次處理圖片所以,開始python xml文件的操作開始時使用命令行的形式,讀取xml文件的路徑,然後判斷文件是否存在,存在,就解析。 問題分析命令行參數傳錯了,xml_file_path = sys.argv[1],才是傳入的xml文件的路徑,如果是sys.argv[0],那麼,是執行的python文件本身!!所以,文件存在,但是,文件解析失敗!!並且是第一行第一列解析失敗!!,最後我把XML文件刪的只剩一行,依舊解析失敗!!開始懷疑人品了。文件編碼,怎麼改都不行!
  • 基於Python實現對各種數據文件的操作
    常見的數據文件類型如下:txtcsvexcel(xls\xlsx)在線網頁數據pdf\word其他數據軟體格式1 txt文件更多參考:https://docs.python.org/3/tutorial/inputoutput.html
  • 利用Python對WRFout文件進行簡單繪圖
    按照anaconda官網和wrf-python官方文檔的意思,wrf-python這個包在Windows下也能裝,但是我在Windows10下裝了以後報錯,說缺少必需的_wrffortran組件,利用科學上網方法、從默認源安裝也沒辦法解決,所以只能在Linux下嘗試了。
  • 專題19 | Python文件打開與讀取
    前五個模塊我們分別學習了Python環境搭建、數據類型、流程控制、函數模塊和面向對象等基礎知識,接下來我們將接觸Python
  • 用Python讀取Excel文件指南
    原作者丨Erik Marsja本文將重點闡述用Python如何讀取Excel文件(xlsx),重點是演示使用openpyxl模塊讀取xlsx類型的文件。首先,我們要看一些簡單的示例;然後,我們將學習讀取多個Excel文件。
  • 如何在Visual Studio中創建excel並讀取數據
    和xlrd第三方庫,使用xlwt創建excel文件並寫入數據,使用xlrd讀取excel文件中的數據。下面利用實例說明:操作步驟:1、打開Visual Studio開發工具,創建python的django框架項目
  • 讀取、創建和運行多個文件的3個Python技巧
    動機將代碼投入生產時,你很可能需要處理代碼文件的組織。讀取、創建和運行許多數據文件非常耗時。循環訪問目錄中的文件如果我們要像這樣讀取和處理多個數據:├── data│ ├── data1.csv│ ├── data2.csv│ └── data3.csv└── main.py我們可以嘗試一次手動讀取一個文件import pandas as pd def process_data
  • 【python】讀取json文件
    閱讀大概需要5分鐘跟隨小博主,每天進步一丟丟最近要打個比賽,在處理數據的時候,發現數據竟然是json文件的,
  • python編程從入門到實踐:讀取整個文件和創建包含文件各行的內容
    1.python學習筆記:在文件編輯器中新建一個文件,寫幾句話來總結一下你至此學到的Python知識,其中每一行都以「In python you can」打頭。將這個文件命名為learning_python.txt,並將其存儲到為完成本章練習而編寫的程序所在的目錄中。
  • 數據科學常用文件類型、讀取、中文編碼Python代碼詳解(14k字經典收藏版,附周五新聞四則)
    隨後,我會向大家介紹如何在 Python 裡讀取這些文件格式。主要內容有:1、文件格式是什麼;2、數據科學家應當了解各種不同文件格式的原因;3、不同的文件格式以及從 Python 中讀取這些文件的方法:1. 逗號分隔值,2. XLSX,3. ZIP,4. 純文本(txt),5. JSON,6. XML,7. HTML,8. 圖像,9. 分層數據格式,10. PDF,11. DOCX,12.