您現在的位置是:首頁 > 手機遊戲首頁手機遊戲

Python資料分析:pandas讀取和寫入資料

簡介read_sql(sql,con,index_col=None,coerce_float=True,columns=None)引數說明:sql、table_name:string型別,分別表示SQL語句和資料庫表名con:表示資料庫連線資訊

讀取和寫入是什麼意思

導語:

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

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

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

Python資料分析: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_buff

er

: 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命令顯示檔案內容:

Python資料分析:pandas讀取和寫入資料

import pandas as pddf = pd。read_csv(‘01。csv’)df

Python資料分析:pandas讀取和寫入資料

當使用read_table()時,執行程式碼後出現一個Warning

使用的是最新的版本python3。7。根據提示,修改如截圖:

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

df = pd。read_table(‘doupo。txt’)df

Python資料分析:pandas讀取和寫入資料

使用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兩個工作表。

Python資料分析:pandas讀取和寫入資料

使用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)

Python資料分析:pandas讀取和寫入資料

透過pandas。read_excel方法讀取excel檔案,read_excel( )預設讀取第一個工作表的,如果我想要讀取movie這個工作表的話,就需要傳參啦。

df = pd。read_excel(‘douban。xlsx’, sheet_name = ‘movie’)df

這時儲存在表中的資料透過pandas。read_excel方法讀取到DataFrame中啦,結果顯示如下:

Python資料分析:pandas讀取和寫入資料

使用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型別的資料,預設True

columns

: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

Python資料分析:pandas讀取和寫入資料

將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

Python資料分析:pandas讀取和寫入資料

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

Python資料分析:pandas讀取和寫入資料

我就知道你“在看”

Top