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

2021-01-11 你要飛得更高

導語:

大家好,我是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來讀取寫入不同數據文件的內容啦。在看的小夥伴們如果覺得對你有用的話點個在看,發現有不對的地方歡迎留言指正,謝謝~~

我就知道你「在看」

相關焦點

  • Python學習120課 pandas簡介kaggle下載數據及pandas讀取外部數據
    【每天幾分鐘,從零入門python編程的世界!】numpy的基本的東西我們學習差不多了,後面具體應用中遇到問題具體分析,然後去深入了解遇到的新的知識點就行。現在我們開始學習pandas,pandas一般用的更多,pandas是基於numpy去寫的。pandas是一個專門做數據結構和數據分析的庫。
  • python數據分析——pandas導出數據合集
    導入pandas庫:import pandas as pd導入基礎數據:df=pd.read_excel('數據.xlsx')1.將DataFrame寫入csv\txt文件DataFrame.to_csv()常用參數:path_or_buf=None:輸出文件路徑,默認None
  • 數據分析從業者必看,10 個加速 python 數據分析的簡單的小技巧
    其中,有些可能是相當有名的,有些可能是新的,但我相信下次您從事數據分析項目時,它們會非常有用。1.Profiling the pandas dataframeProfiling 是一個幫助我們理解數據的程序,而 Pandas Profiling 正是實現這一點的一個 python 包。
  • 想成為高效數據科學家?不會Pandas怎麼行
    pandas 相當於 python 中 excel:它使用表(也就是 dataframe),能在數據上做各種變換,但還有其他很多功能。如果你早已熟知 python 的使用,可以直接跳到第三段。讓我們開始吧:import pandas as pd別問為什麼是「pd」而不是「p」,就是這樣。
  • python數據分析——pandas導入數據合集
    導入pandas庫import pandas as pd1.導入csv\txt文件數據pd.read_csv()常用參數:filepath_or_buffer:文件路徑(必填,其他參數按需求填寫)sep:指定分隔符,默認逗號','。header:指定第幾行作為表頭。
  • 快速介紹Python數據分析庫pandas的基礎知識和代碼示例
    為了能夠快速查找和使用功能,使我們在進行機器學習模型時能夠達到一定流程化。我創建了這個pandas函數的備忘單。這不是一個全面的列表,但包含了我在構建機器學習模型中最常用的函數。讓我們開始吧!本附註的結構:導入數據導出數據創建測試對象查看/檢查數據選擇查詢數據清理篩選、排序和分組統計數據首先,我們需要導入pandas開始:import pandas as pd導入數據使用函數pd.read_csv直接將CSV轉換為數據格式。注意:還有另一個類似的函數pd。read_excel用於excel文件。
  • pandas指南:做更高效的數據科學家
    如果你已經熟悉Python,可以直接進入第三部分現在讓我們開始:pandas包最基本的功能1、讀取數據:sep變量代表分隔符。因為Excel中的csv分隔符是「;」,因此需要顯示它。編碼設置為「latin-1」以讀取法語字符。nrows=1000表示讀取前1000行。
  • 乾貨|如何利用Python處理JSON格式的數據,建議收藏!
    本文轉載自【微信公眾號:數據分析與籃球,ID:dylanxia2019】經微信公眾號授權轉載,如需轉載與原文作者聯繫JSON數據格式在我們的日常工作中經常會接觸到,無論是做爬蟲開發還是一般的數據分析處理,本文小編就來分享一下當數據接口是JSON格式時,如何進行數據處理進行詳細的介紹
  • 懂Excel就能輕鬆入門Python數據分析包pandas(十六):合併數據
    此系列文章收錄在公眾號中:數據大宇宙 > 數據處理 >E-pd經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。後來才發現,原來不是 Python 數據處理厲害,而是他有數據分析神器—— pandas前言本系列上一節說了拆分數據的案例,這次自然是說下怎麼合併數據。
  • 懂Excel也能輕鬆入門Python數據分析包pandas(二):高級篩選(上)
    更多 Python 數據處理的乾貨,敬請關注!!!!系列文章:懂Excel就能輕鬆入門Python數據分析包pandas(一):篩選功能前言經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    20爬蟲scrapy框架及案例 21數據分析 22機器學習 23深度學習 24數據結構和算法 25python網絡爬蟲 26機器學習入門篇 27機器學習入門篇2 28機器學習提升篇 29數據挖掘篇 30深度學習必備原理與實戰 31深度學習必備原理與實戰
  • 懂Excel輕鬆入門Python數據分析包pandas(二十七):IF函數代替者
    此系列文章收錄在:數據大宇宙 > 數據處理 > E-pd轉發本文並私信我"python",即可獲得Python資料以及更多系列文章(持續更新的)經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。
  • 數據太多而無法使用?快試試這個Kaggle大數據集高效訪問教程
    同時,你還會發現,對於不同數據集或不同環境,最有效的方法往往是不同的,也就是所,沒有哪一種方法就是萬能的。後續會陸續添加新的數據讀取方法。方法我們首先使用Notebook默認的pandas方法,如前文所述,這樣的讀取因內存不足失敗。
  • Python數據分析利器,Pandas入門介紹,幫你便捷高效處理複雜數據
    關於Python的數據分析,當我們遇到的數據量小、數據結構簡單時,可以通過字典、列表等Python常見的數據結構來處理。但是當我們面對的大量數據以及複雜數據的局面時,就需要用一些專門用於數據分析的擴展庫來處理數據了。今天給大家介紹一個Python裡專門用來做數據分析和處理的擴展庫。
  • PySpark源碼解析,用Python調用高效Scala接口,搞定大規模數據分析
    然而,在數據科學領域,Python 一直佔據比較重要的地位,仍然有大量的數據工程師在使用各類 Python 數據處理和科學計算的庫,例如 numpy、Pandas、scikit-learn 等。同時,Python 語言的入門門檻也顯著低於 Scala。
  • 一張圖看遍數據分析神器Pandas所有語法
    Python在數據分析領域之所以牛,很大程度上是因為Pandas這個庫是在是太好用,廣泛應用於數據處理、數據分析等領域。回想起自己剛畢業那會,要做很多處理,總是自己的讀取文件、篩選過濾、關聯文件、聚合統計、繪製圖表等等工作都是用Python原生語法實現,效率極其低下並且容易出錯,當我後來接觸到Pandas簡直喜愛的要哭。
  • 未明學院:7張思維導圖掌握數據分析關鍵庫pandas
    原創: 未明學院Pandas是一個強大的分析結構化數據的工具集;它基於numpy,用於數據分析和數據挖掘,同時也提供數據清洗功能。pandas與numpy一起構成了數據分析的基礎雙生庫。今天小明邀請了未明的王老師,給大家總結了pandas的核心知識,主要包括以下幾個方面。pandas核心知識01、首先我們來認識一下pandas的一些基本概念。pandas概述02在使用pandas做數據分析的時候往往第一步就是將數據導入進來,比如csv或者excel格式的數據,下面這張圖就是我們讀取數據時候的方法和參數。
  • Python數據分析|線性回歸
    Python數據分析學習筆記,今天分享下利用Python對業務進行數據預處理,並利用線性回歸進行數據預測。壹 數據導入Python下載及環境配置這裡就不贅述了哈,網上教程非常多,我們直接一開始就進入乾貨,打它一個開門見山。
  • 使用pandas和openpyxl處理複雜Excel數據
    關於Excel數據處理,很多同學可能使用過Pyhton的pandas模塊,用它可以輕鬆地讀取和轉換Excel數據。但是實際中Excel表格結構可能比較雜亂,數據會分散不同的工作表中,而且在表格中分布很亂,這種情況下啊直接使用pandas就會非常吃力。本文蟲蟲給大家介紹使用pandas和openpyxl讀取這樣的數據的方法。
  • Python數據讀取之生成器(generator)
    簡單來說,生成器是一個函數,它返回一個我們可以迭代的對象(迭代器),迭代器一次返回一個值較使用列表將所有數據都加載到內存中,生成器節省了大量內存空間。深度學習的數據讀取部分一般都需要使用迭代器。range(10)]>>> L[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]>>> g = (x * x for x in range(10))>>> g<generator object <genexpr> at 0x1022ef630>創建L和g