《pandas數據讀取》

2021-03-02 北京圖靈學院

今天呢就給大家分享一個數據分析裡面的基礎內容之pandas數據讀取

 

數據讀取是進行數據預處理,建模與分析的前提,不同的數據源,需要使用不同的函數讀取,pandas內置了10餘種數據源讀取函數和對應的數據寫入函數,常見的數據源有3種,分別是資料庫數據,文本文件(包含一般文本文件和CSV文件)和Excel文件,掌握這三種數據源讀取方法,便能夠完成80%左右的數據讀取工作。下面我們具體瞅瞅;

 

讀/寫資料庫數據

 

在生產環境中,絕大多數的數據都存儲在資料庫中,pandas提供了讀取與存儲關係型資料庫數據的函數和方法,除pandas庫外,還需要使用SQLAlchemy庫建立對應的資料庫連接,SQLAlchemy配合相應資料庫的python連接工具(如,mysql資料庫需要安裝mysqlclient或者pymysql庫,Oracle資料庫需要安裝cx_oracle庫),使用create_engine函數建立一個資料庫連接,pandas支持mysql,postgtrsql,Oracle,Sql server和SQLite等主流資料庫,下面將以mysql資料庫為例,介紹pandas資料庫數據得到讀取與存儲。

 

資料庫數據讀取

pandas實現資料庫數據讀取有三個函數,read_sql,read_sql_table和read_sql_query,read_sql_table只能讀取資料庫的某一個表格,不能實現查詢的操作,read_sql_query則只能實現查詢操作,不能直接讀取資料庫中的某個表,read_sql是倆者的結合,既能夠讀取資料庫中的某一個表,也能夠實現查詢操作。

 

三個函數的語法如下

#導入相關的包from sqlalchemy import create_engineimport pandas as pdpd.read_sql_table(table_name,con, schema=None, index_col=None, coerce_float=True, parse_dates=None,columns=None, chunksize=None)pd.read_sql_query(sql, con, index_col=None,coerce_float=True, params=None, parse_dates=None,chunksize=None)pd.read_sql(sql, con, index_col=None, coerce_float=True,params=None, parse_dates=None, columns=None, chunksize=None)

SQLAlchemy連接資料庫的代碼如下:

from sqlalchemy import create_engineengine = create_engine('mysql+pymysql://root:1234@127.0.0.1:3306/testdb?charset=utf8')print(engine)

在create_engine中輸入的是一個連接字符串,在使用python的sqlAlchemy時,mysql和oracle資料庫連接字符串的格式如下:

資料庫產品名+連接工具名://用戶名:密碼@資料庫ip地址:資料庫埠號/資料庫名稱?charset=資料庫數據編碼

上述三種函數參數及其重要參數說明

sql or table_name

接受string,表示讀取的數據的表名或者sql語句無默認

con

接受資料庫連接,表示資料庫連接信息,無默認

index_col

接受int,sequence或者False,表示設定的列作為行名,如果是一個數列,則是多重索引,默認為None

coerce_float

接受boolean,將資料庫中的decimal類型的數據轉換為pandas中的float64類型的數據,默認為True

columns

接受int,表示讀數據的列明,默認為None

 

使用read_sql_table,read_sql_query,read_sql函數讀取資料庫數據;

from sqlalchemy import create_engineimport pandas as pdengine =create_engine('mysql+pymysql://root:Huawei12#$@192.168.1.45:3306/example?charset=utf8')print(engine)#列印結果如下#Engine(mysql+pymysql:#使用read_sql_query查看example中的數據表數目formlist =pd.read_sql_query('show tables',con=engine)print('example資料庫中的表清單為:\n',formlist)

                             

#使用read_sql_table讀取訂單詳情表atail1 = pd.read_sql_table('meal_order_detail1',con=engine)print('使用read_sql_table讀取訂單表的長度為:',len(datail1))

#使用read_sql讀取訂單詳情表detail2 = pd.read_sql('select * frommeal_order_detail2',con=engine)print('使用read_sql函數+SQL語句讀取的訂單詳情表長度為:',len(detail2))detail3 =pd.read_sql('meal_order_detail3',con=engine)print('使用read_sql函數+表格名稱讀取的訂單詳情表的長度為:',len(detail3))

 

資料庫數據存儲

將DataFrame寫入資料庫中,同樣也要依賴SQLALchemy庫的create_engine函數創建資料庫連接,資料庫數據讀取有3個函數,但數據存儲則只有一個to_sql方法,用例如下:

df.to_sql(name,con,schema=None,if_exists='fail',index=True,index_label=None,dtype=None)

to_sql方法常用參數及說明

name

接收string,代表資料庫表明,無默認

con

接收資料庫連接,無默認

if_exists

接收fail,replace和append,fail表示如果表名存在,則不執行寫入操作,replace表示如果存在,則將原資料庫表刪除,在重新創建,append則表示在原數據表的基礎上追加數據,默認為fail

index

接收boolean,表示是否將行索引作為數據傳入資料庫,默認為True

index_label

接收string或者sequence,代表是否引用所用名稱,如果index參數為True,此參數為None,則使用默認名稱,如果為多重索引,則必須使用sequence形式,默認為None

dtype

接收dict,代表寫入的數據類型(列明為key,數據格式為values),默認為None

使用to_sql方法寫入數據

orderDatadatail1.to_sql('test1',con=engine,index=False,if_exists='replace')formlist1= pd.read_sql_query('show tables',con=engine)print('新增一個表格後,example資料庫表清單為:\n',formlist1)

 

讀寫文本文件

文本文件是一種由若干行字符構成的計算機文件,他是一種典型的順序文件,CSV是一種用分隔符分割的文件格式,因為其分隔符不一定是逗號,因此又稱為字符分隔文件,文件以純文本形式存儲表格數據,他是一種通用,相對簡單的文件格式,最廣泛的應用是在程序之間轉義表格數據,而這些程序本身是在不兼容的格式上進行操作的,因為大量程序都支持CSV或者其變體,因此可以作為大多數程序的輸入和輸出格式。

 

文本文件讀取

pandas提供了read_table來讀取文本文件,提供了read_csv函數來讀取CSV文件,二者語法如下:

read_table和read_csv常用參數及其說明

參數名稱

說明

filepath

接受string,代表文件路徑,無默認

sep

接受string,代表分隔符,read_csv默認為「,」,read_table默認為制表符「tab」

header

接受int或sequence表示將某行數據作為列明,默認為誒infer,表示自動識別

names

接受aray,表示列明,默認為None

index_col

接受int,sequence或False,表示索引列的位置,取值為sequence則代表多重索引,默認為None

dtype

接收dict,代表寫入的數據類型(列明為key,數據格式為values),默認為None

engine

接受c或者python,代表數據解析引擎,默認為c

nrows

接受int,表示讀取前n行,默認為None

使用read_table和read_csv函數讀取菜品訂單信息表

#使用read_table讀取菜品訂單信息表# order = pd.read_table('../Python數據分析與應用/第4章/任務程序/data/meal_order_info.csv',sep=',',encoding='gbk')#len(order)

在讀取過程中,有時候你會遇到這種報錯,莫得荒,我也不知道為啥,但是我們可以通過讀取文件的方式讀取文本,如下:

f=open('../meal_order_info.csv')order=pd.read_table(f,sep=',',encoding='utf-8')len(order)order1 = pd.read_csv('../meal_order_info.csv',encoding='utf-8',engine='python')len(order1)

更改參數讀取表的訂單信息

f=open('../meal_order_info.csv')order2=pd.read_table(f,sep=';',encoding='utf-8')order3 = pd.read_csv('../meal_order_info.csv',encoding='gbk',header=None,engine='python')len(order3)

 

文本文件存儲

文本文件的存儲和讀取類似,對於結構化數據,可以通過pandas中的to_csv函數實現,常用參數與語法如下:

to_csv(path_or_buf=None, sep=',', na_rep='',float_format=None, columns=None, header=True, index=True, index_label=None,mode='w', encoding=None, compression=None, quoting=None, quotechar='"',line_terminator='\n', chunksize=None, tupleize_cols=None, date_format=None,doublequote=True, escapechar=None, decimal='.')

to_csv函數的常用參數及其說明

參數名稱

說明

path_or_buf

接受string,代表文件路徑,無默認

sep

接受string,代表分隔符,默認為逗號

na_rep

接受string,代表缺失值,默認為「」

columns

接受list,代表寫出的列名,默認為「」

header

接受boolean,代表是否將列明寫出,默認為True

index

接受布爾,代表是否將行名(索引)寫出,默認為True

index_label

接受sequence。代表索引名,默認為None

mode

接受特定的string,代表數據寫入模式,默認為w

encoding

代表文件的編碼格式

使用to_csv函數將數據寫入CSV文件中

#將order以csv格式存儲order.to_csv('../tmp/orderInfo.csv',sep=';',index=False)os.listdir('../tmp')

 

 

讀寫Excel文件

Excel是微軟公司的辦公軟體Microsoft office的組件之一,他可以對數據進行處理,統計分析等操作,廣泛的應用與管理,財經和金融等眾多領域。

 

Excel文件讀取

pandas提供了read_excel函數來讀取"xls",「xlsx」倆種excel文件,其語法如下:

pd.read_excel(io, sheet_name=0, header=0, names=None,index_col=None, usecols=None, squeeze=False, dtype=None, engine=None,converters=None, true_values=None, false_values=None, skiprows=None,nrows=None, na_values=None, parse_dates=False, date_parser=None,thousands=None, comment=None, skipfooter=0, convert_float=True, **kwds)

read_excel該函數常用參數及其說明

參數名稱

說明

io

接收string,表示文件路徑,無默認

sheetname

接收string,int,代表Execl表內數據的分表位置,默認為0

header

接受int或sequence,表示將某行數據作為列明,取值為int的時候,代表將列作為列名,取值為sequence,則代表多重索引,默認為infer,表示自動識別

names

接受array,表示列明,默認為None

index_col

接受int,sequence或者false,表示索引列的位置,取值sequence嗲表多重索引,默認為None

dtype

接受dict,代表寫入的數據類型

使用read_excel函數讀取菜品訂單信息表

user = pd.read_excel('../users.xlsx')len(user)user

Excel文件存儲

將文件存儲為Excel文件,可以使用to_excel函數,其語法格式如下:

to_excel(excel_writer, sheet_name='Sheet1', na_rep='',float_format=None, columns=None, header=True, index=True, index_label=None,startrow=0, startcol=0, engine=None, merge_cells=True, encoding=None,inf_rep='inf', verbose=True, freeze_panes=None)使用to_execl函數將數據存儲為Excel文件user.to_excel('../tmp/userInfo.xlsx',sheet_name='Sheet3')os.listdir('../tmp')

 

嗯,這就是我們常用到的pandas讀取文件的一些操作,貌似沒什麼難的,孰能生巧就可,下篇文章為大家分享pandas的常用操作,祝大家一臂之力登上數據分析的神壇。

 

哦,對啦,該篇文章的素材直接來源為網絡《python數據分析》

 

相關焦點

  • pandas讀取數據(1)
    訪問數據是進行各類操作的第一步,本節主要關於pandas進行數據輸入與輸出,同樣的也有其他的庫可以實現讀取和寫入數據。
  • Python數據分析:pandas讀取和寫入數據
    我的公眾號是關於自己在數據分析/挖掘學習過程中的一些技術和總結分享,文章會持續更新......繼續深入學習pandas相關操作,數據讀取寫入、分組、合併,轉換等等。前面一篇文章裡已經寫了關於描述性統計以及常用的基本操作。接下來的一段時間裡,我將陸續地去掌握並輸出。這篇文章是關於數據讀取與寫入的知識點。
  • 使用Pandas讀取複雜的Excel數據
    關於Excel數據處理,很多同學可能使用過Pyhton的pandas模塊,用它可以輕鬆地讀取和轉換Excel數據。但是實際中Excel表格結構可能比較雜亂,數據會分散不同的工作表中,而且在表格中分布很亂,這種情況下啊直接使用pandas就會非常吃力。本文蟲蟲給大家介紹使用pandas和openpyxl讀取這樣的數據的方法。
  • Python學習120課 pandas簡介kaggle下載數據及pandas讀取外部數據
    現在我們開始學習pandas,pandas一般用的更多,pandas是基於numpy去寫的。pandas是一個專門做數據結構和數據分析的庫。●pandas的安裝推薦使用anaconda,只要安裝了anaconda,它裡面就會自帶pandas,這會為我們省去很多的麻煩。接下來就是用pandas去處理數據,數據從哪來呢?
  • Pandas入門(讀取數據)
    一.讀取文本文件
  • pandas讀取表格後的常用數據處理操作
    pandas讀取表格後的一些常用數據處理操作。這篇文章其實來源於自己的數據挖掘課程作業,通過完成老師布置的作業,感覺對於使用python中的pandas模塊讀取表格數據進行操作有了更深層的認識,這裡做一個整理總結。
  • 基於python的大數據分析-pandas數據讀取(代碼實戰)
    長按上方二維碼加入千人QQ群基於python的大數據分析實戰學習筆記-Anaconda基於python的大數據分析實戰學習筆記-pandas(數據分析包)基於python的大數據分析實戰學習筆記-pandas之DataFrame我們常見的數據存儲格式無非就是csv、excel、txt以及資料庫等形式
  • python(pandas)讀取外部數據---使用Pandas讀寫操作txt文件
    1、準備.txt的數據文件其實pandas讀寫.txt文件和讀寫csv文件是類似的,而且使用的都是pd.read_csv()  /
  • Pandas進階Excel(一)——讀取
    今天開始介紹python可以操作Excel的另一個強大的庫——pandas庫。個人認為,pandas庫對於操作Excel有著極好的支撐。在數據導入、數據清洗、數據計算、數據導出都有著完整性的支撐,是一個提供高性能易用數據類型和分析工具,並且用一段時間你就會發現如果拿pandas只操作表格數據,是真的大材小用。 它不僅可以處理數據,更可以可視化數據。譬如可以做出這樣的圖表。
  • 乾貨 | pandas讀取csv文件數據的方法及注意點
    這篇文章介紹了利用數據分析工具pandas讀取csv文件的方法和注意點,便於迅速過渡到數據處理階段。pandas是一個高效的數據分析工具。基於其高度抽象的數據結構DataFrame,幾乎可以對數據進行任何你想要的操作。由於現實世界中數據源的格式非常多,pandas也支持了不同數據格式的導入方法,本文介紹pandas如何從csv文件中導入數據。
  • Python數據分析之pandas數據讀寫
    本節將學習pandas從多種存儲媒介(比如文件和資料庫)讀取數據的工具,還將學到直接將不同的數據結構寫入不同格式文件的方法,而無需過多考慮所使用的技術。本節的主要內容為pandas的多種I/O API函數,它們為大多數常用格式的數據作為DataFrame對象進行讀寫提供了很大便利。
  • 127、使用pandas讀取文本文件
    pandas提供了一些用於將表格型數據讀取為DataFrame對象的函數,其中常用read_csv和read_table讀取文件。0.png下面出現的例子中需要讀取的文件都存放在我自己的電腦 D:Pytho\notebookpydata-book-masterch06 中。
  • 數據科學 | pandas數據導入與導出
    當我們開始著手做一個數據分析項目時,選擇和導入數據集是第一個步驟,而導出數據雖然非必需,但有時候我們也需要保存處理或者分析後的結果,方便下次使用。在pandas中,它已經為我們提供了很多不同格式數據的導入和導出方法,下面這篇文章將具體介紹一些較為常用的方法,包括excel、csv文件以及資料庫的導入導出等。數據導入和導出是pandas中很基礎且重要的一個部分。
  • 利用pandas讀取格式不規範的Excel文件
    介紹pandas 很容易將Excel文件讀取為DataFrame,但是在現實中,Excel文件裡面的數據格式往往是不規範的
  • 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讀取excel,txt,csv文件等命令
    ://pandas.pydata.org/pandas-docs/version/0.24/reference/io.html文檔操作屬於pandas裡面的 Input/Output也就是IO操作,基本的API都在上述網址,接下來本文核心帶你理解部分常用的命令pandas讀取txt文件讀取txt文件需要確定txt文件是否符合基本的格式,也就是是否存在 \t, , ,等特殊的分隔符一般
  • Python數據處理庫pandas入門教程
    pandas提供了快速,靈活和富有表現力的數據結構,目的是使「關係」或「標記」數據的工作既簡單又直觀。它旨在成為在Python中進行實際數據分析的高級構建塊。入門介紹pandas適合於許多不同類型的數據,包括:由於這是一個Python語言的軟體包,因此需要你的機器上首先需要具備Python語言的環境。
  • pandas指南:做更高效的數據科學家
    今天我要告訴你們的是:在數據科學中,有一個軟體包是你們絕對需要學習的,那就是pandas。而pandas真正有趣的地方是,很多其他的包也在裡面。pandas是一個核心包,因此它具有來自其他各種包的特性。
  • 利用Python讀取外部數據文件
    作者:劉順祥個人微信公眾號:每天進步一點點2015不論是數據分析,數據可視化,還是數據挖掘,一切的一切全都是以數據作為最基礎的元素
  • pandas | 使用pandas進行數據處理——DataFrame篇
    今天是pandas數據處理專題的第二篇文章,我們一起來聊聊pandas當中最重要的數據結構——DataFrame。從文件讀取pandas另外一個非常強大的功能就是可以從各種格式的文件當中讀取數據創建DataFrame,比如像是常用的excel、csv,甚至是資料庫也可以