Python數據分析:pandas讀取和寫入數據

2020-12-14 你要飛得更高

導語:

大家好,我是fountain!我的公眾號是關於自己在數據分析/挖掘學習過程中的一些技術和總結分享,文章會持續更新......

繼續深入學習pandas相關操作,數據讀取寫入、分組、合併,轉換等等。前面一篇文章裡已經寫了關於描述性統計以及常用的基本操作。接下來的一段時間裡,我將陸續地去掌握並輸出。這篇文章是關於數據讀取與寫入的知識點。

平時工作中,我們會接觸到不同的數據文件,比如很常見的excel文件(後綴名為xls和xlsx),csv、txt等文本文件,json文件以及sql文件等等。pandas讀取這些數據文件的方法如表格所示:

01

讀取寫入文本文件

read_csv()方法用來讀取 csv格式的數據文件,read_table()方法則是讀取通用分隔符分隔的數據文件,它們的參數相同。語法

pandas.read_csv(filepath_or_buffer, sep=』,』, delimiter=None, header=』infer』, names=None, index_col=None, usecols=None,skiprows=None)

參數說明

filepath_or_buffer: str,表示文件所在位置的字符串,URL等。sep: str, 表示分隔符,分隔符號可以有多個,比如分隔符為"+,+"三個符號,則sep = '\+\,\+',即正則表達式 。read_csv默認分隔符為",",read_table默認為制表符"\t"。delimiter:str,默認為None。sep的別名。header:int,list of int,表示列名的行號。如果沒有傳遞列名,則header = 0,列名為文件的第一行。如果顯式傳遞了列名,則header = None。names:array,指定列名index_col:int,sequence或False。表示索引列的位置,取值為sequence則代表多重索引usecols:array,指定讀取的列skiprows:從文件開頭算起,需要跳過的行數先在當前工作目錄下創建csv文件,如下圖可以看到這個csv文件包含三列數據,列名為studentNo,name,age。使用read_csv將這三列數據讀入到DataFrame。使用cat命令顯示文件內容:

import pandas as pddf = pd.read_csv('01.csv')df

當使用read_table()時,運行代碼後出現一個Warning使用的是最新的版本python3.7。根據提示,修改如截圖:

FutureWarning: read_table is deprecated, use read_csv instead, passing sep='\t'

df = pd.read_table('doupo.txt')df

使用to_csv()方法,可以將數據導出為逗號分隔的數據文件。詳述省略。

02

讀取寫入Excel文件

python處理excel文件用到的模塊包含openpyxl、xlsxwriter、xlutils、xlrd、xlwt。想要了解更多關於這幾個處理excel文件的python包的詳情,可以訪問python-excel官網。因為我使用的是Anaconda,Anaconda已經默認安裝了xlrd和xlwt等模塊,故無需再使用pip去安裝啦。

而Python的數據分析庫pandas提供了read_excel函數來讀取.xls和.xlsx兩種excel文件。其中.xls是office excel 2007之前的版本默認保存的文件擴展名。而.xlsx是2007版本之後的。 有時一個excel文件會包含多個工作表,比如下面這個表格文有book和movie兩個工作表。

使用xlrd讀取excel文件

# xlrd為讀取excel的庫import xlrd workbook = xlrd.open_workbook('douban.xlsx')sheetnames = workbook.sheet_names()sheet1 = workbook.sheet_by_name(sheetnames[1]) #通過sheet名稱獲取到第2張工作表book#或 sheet1 = workbook.sheets()[1] #或 sheet1 = workbook.sheet_by_index(1)print('sheet名稱列表:' + sheetnames) print('第1張工作表名稱:' + sheet1.name)print('列數:' + str(sheet1.ncols))print('行數:' + str(sheet1.nrows))print('第2行所有數據:' + str(sheet1.row_values(2))) # 包括列名這一行,從0算起,print('第2列所有數據:' + str(sheet1.col_values(1)))print('第1行第1列對應的單元格的值: ' + sheet1.cell(0,0).value)

通過pandas.read_excel方法讀取excel文件,read_excel( )默認讀取第一個工作表的,如果我想要讀取movie這個工作表的話,就需要傳參啦。

df = pd.read_excel('douban.xlsx', sheet_name = 'movie')df

這時存儲在表中的數據通過pandas.read_excel方法讀取到DataFrame中啦,結果顯示如下:

使用to_excel()方法,可以將數據存儲到excel文件裡。寫入方法不詳說了。

03

資料庫的讀取與寫入

Python處理資料庫時同樣有第三方庫,比如PyMySQL,SQLAlchemy等等,利用這些ORM庫(ORM,全稱object-relational mapping,即對象關係映射)可以實現對資料庫的增刪改查。而pandas實現資料庫讀取有3個方法,分別為read_sql,read_sql_table,read_sql_query。

read_sql_table只能讀取資料庫的某一個表格,不能實現查詢的操作,而read_sql_query只能實現查詢操作,不能直接讀取資料庫中的某個表,read_sql是兩者的結合。語法

pandas.read_sql_table(table_name,con,schema=None,index_col=None,coerce_float=True,columns=None)pandas.read_sql_query(sql,con,index_col=None,coerce_float=True)pandas.read_sql(sql,con,index_col=None,coerce_float=True,columns=None)

參數說明

sql、table_name:string類型,分別表示SQL語句和資料庫表名con:表示資料庫連接信息index_col:int、sequence或者False,表示設定的列作為行名coerce_float:boolean,將資料庫中的decimal類型的數據轉換為pandas中的float64類型的數據,默認Truecolumns:list類型,表示讀取數據的列名,默認None這裡使用的是SQLAlchemy庫來建立資料庫連接,需要資料庫驅動使用的Python內置的SQLlite。對SQLite的簡介如下:

SQLite是一個進程內的庫,實現了自給自足的、無伺服器的、零配置的、事務性的 SQL 資料庫引擎。它是一個零配置的資料庫,這意味著與其他資料庫一樣,您不需要在系統中配置。

from sqlalchemy import create_engine# create_engine()用來初始化資料庫連接engine = create_engine('sqlite://', echo = False)df = pd.DataFrame({'name': ['tom', 'David', 'mary'], 'age': [18,19,17], 'score': [89,90,59]})df

將df寫入資料庫中取名為「student」的表,需要查看下是否有成功寫入資料庫,執行sql請求,獲取所有數據。實現代碼如下:

df.to_sql('student', con=engine)engine.execute("SELECT * FROM student").fetchall()

使用pandas的讀取資料庫方法來讀取:

# read_sql_query df = pd.read_sql_query('SELECT * FROM student', con = engine)# read_sql_tabledf = pd.read_sql_table('student', con = engine)# read_sqldf = pd.read_sql('SELECT * FROM student', con = engine)df = pd.read_sql('student', con = engine)df

以上就是使用數據分析庫pandas來讀取寫入不同數據文件的內容啦。在看的小夥伴們如果覺得對你有用的話點個在看,發現有不對的地方歡迎留言指正,謝謝~~

我就知道你「在看」

相關焦點

  • 《pandas數據讀取》
    今天呢就給大家分享一個數據分析裡面的基礎內容之pandas數據讀取 數據讀取是進行數據預處理,建模與分析的前提,不同的數據源
  • 基於python的大數據分析-pandas數據讀取(代碼實戰)
    書籍推薦《大話軟體測試》出版啦,內容包括但不限於性能、自動化、接口、安全、移動APP非功能測試、抓包、loadrunner、jmeter、soapui、Appium、python
  • pandas讀取數據(1)
    訪問數據是進行各類操作的第一步,本節主要關於pandas進行數據輸入與輸出,同樣的也有其他的庫可以實現讀取和寫入數據。
  • Python數據分析之pandas數據讀寫
    引言我們現在已經基本熟悉了pandas庫以及它所提供的用於數據分析的基礎功能,也知道了DataFrame和Series是這個庫的核心,數據處理、計算和分析都是圍繞他們展開的。本節將學習pandas從多種存儲媒介(比如文件和資料庫)讀取數據的工具,還將學到直接將不同的數據結構寫入不同格式文件的方法,而無需過多考慮所使用的技術。本節的主要內容為pandas的多種I/O API函數,它們為大多數常用格式的數據作為DataFrame對象進行讀寫提供了很大便利。
  • 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讀寫csv數據
    /pandas-docs/stable/user_guide/io.html一、使用pandas讀取和寫入csv文件pd.read_csv("filepath",[encoding='編碼'])pd.read_csv("filepath",usecols=[0,1,2,...]
  • 數據科學 | pandas數據導入與導出
    當我們開始著手做一個數據分析項目時,選擇和導入數據集是第一個步驟,而導出數據雖然非必需,但有時候我們也需要保存處理或者分析後的結果,方便下次使用。在pandas中,它已經為我們提供了很多不同格式數據的導入和導出方法,下面這篇文章將具體介紹一些較為常用的方法,包括excel、csv文件以及資料庫的導入導出等。數據導入和導出是pandas中很基礎且重要的一個部分。
  • Pandas進階Excel(一)——讀取
    今天開始介紹python可以操作Excel的另一個強大的庫——pandas庫。個人認為,pandas庫對於操作Excel有著極好的支撐。在數據導入、數據清洗、數據計算、數據導出都有著完整性的支撐,是一個提供高性能易用數據類型和分析工具,並且用一段時間你就會發現如果拿pandas只操作表格數據,是真的大材小用。 它不僅可以處理數據,更可以可視化數據。譬如可以做出這樣的圖表。
  • 利用Python讀取外部數據文件
    作者:劉順祥個人微信公眾號:每天進步一點點2015不論是數據分析,數據可視化,還是數據挖掘,一切的一切全都是以數據作為最基礎的元素
  • python數據分析常用庫之pandas入門(2)
    索引、選擇和賦值昨天介紹了pandas的模塊引入、創建和讀取數據,今天主要看看怎麼從數據結構中獲得想要的值,也就是數據的索引查找、
  • python數據分析萬字乾貨!一個數據集全方位解讀pandas
    說到python與數據分析,那肯定少不了pandas的身影,本文希望通過分析經典的NBA數據集來系統的全方位講解pandas包,建議搭配IDE一遍敲一邊讀哦。話不多說,開始吧!$ pip install pandas既然是數據分析就肯定選擇jupyter notebook$ pip install jupyter接下來就可以進入python使用pandas對數據進行一些探索性的分析,將數據保存在工作目錄,然後使用pd.read_csv()函數讀取。
  • 如何使用Python 和 Pandas讀寫JSON文件
    在第一部分中,我們將使用Python包json來創建一個JSON文件並寫入一個JSON文件。在下一部分中,我們將使用Pandas的 json方法將JSON文件加載到Pandas 數據幀中。在這裡,我們將學習如何從本地和一個URL讀取JSON文件,以及如何使用Pandas讀取一個嵌套的JSON文件。
  • Python數據核對系列之2—power query VS pandas
    上一篇文章我們整體梳理了我核對兩個表數據,從excel query模式一版版過渡到python多線程多進程讀取資料庫數據後完成核對並輸出結果到資料庫表中的整個版本迭代過程
  • pandas讀取表格後的常用數據處理操作
    pandas讀取表格後的一些常用數據處理操作。這篇文章其實來源於自己的數據挖掘課程作業,通過完成老師布置的作業,感覺對於使用python中的pandas模塊讀取表格數據進行操作有了更深層的認識,這裡做一個整理總結。
  • n種方式教你用python讀寫excel等數據文件
    點擊上方「濤哥聊Python」,選擇「星標」公眾號重磅乾貨,第一時間送達來源:Python大數據分析python處理數據文件的途徑有很多種,可以操作的文件類型主要包括文本文件(csv、txt、json等)、excel
  • Python數據分析實戰之數據獲取三大招
    確實,巧婦難為無米之炊,數據是數據分析、數據挖掘乃至數據可視化最最基礎的元素。利用Python進行數據分析最重要到一步,就是利用合適的方法將數據導入到Python。然而,當你面對一堆數據,你真的會快速、正確的讀取嗎?
  • Python數據處理庫pandas入門教程
    pandas提供了快速,靈活和富有表現力的數據結構,目的是使「關係」或「標記」數據的工作既簡單又直觀。它旨在成為在Python中進行實際數據分析的高級構建塊。入門介紹pandas適合於許多不同類型的數據,包括:由於這是一個Python語言的軟體包,因此需要你的機器上首先需要具備Python語言的環境。
  • python數據分析專題 (7):python數據分析模塊
    也就是這些python的擴展包讓python可以做數據分析,主要包括numpy,scipy,pandas,matplotlib,scikit-learn等等諸多強大的模塊,在結合上ipython交互工具 ,以及python強大的爬蟲數據獲取能力,字符串處理能力,讓python成為完整的數據分析工具。
  • 基於Python實現對各種數據文件的操作
    /pandas-docs/stable/reference/api/pandas.read_csv.html#pandas.read_csvcsv文件的讀入和寫出相對簡單,直接調用pandas的函數即可。