官术网_书友最值得收藏!

2.2 數據讀取和存儲

2.2.1 Excel文件的讀取

1.文件路徑的切換

要讀取某一個文件中的數據,必須先告訴Python這個文件所在的位置,即輸入文件路徑。

現有一個名為data1的Excel文件,存放在如圖2-2所示的位置。

圖2-2 樣例文件路徑位置

通過導入os系統模塊,把Python切換到這個文件路徑下:

os.chdir()是實現系統文件路徑切換的方法,可在其括號中輸入我們從系統中復制的文件地址。

需要注意的是,路徑前面加了一個r。文件路徑一般都包含斜杠,而斜杠在Python中會有其他含義(如轉義),在路徑前加r相當于告訴Python路徑里的內容沒有其他意思,從而保證路徑被程序完整、準確地理解。

2.read_excel()的用法

切換完路徑之后,用Pandas的pd.read_excel('具體文件名')(這里為data1.xlsx)來讀取Excel文件:

運行結果如下:

上面只賦予Excel名稱的讀取方式,默認打開的是第一個工作表(sheet)。當一個Excel文件包含多個工作表時,通過指定具體sheet_name的方式實現更精準的讀取:

讀取結果如下:

3.header和names

data1.xlsx中sheet1的數據源如表2-3所示。

表2-3 data1.xlsx中sheet1的數據源

Pandas在讀取的時候很智能地把第一行當作了表頭來處理,數據則從第二行開始。

假如我們遇到了sheet2中的數據,當時在Excel文件中只保存了數據,而沒有保存表頭,如表2-4所示。

表2-4 data1.xlsx中sheet2的數據源

如果用Pandas直接讀取,默認將第一行當作表頭的規則就顯得不那么智能了,讀取和展示結果如圖2-3所示。

圖2-3 讀取沒有表頭的數據

這個時候可以把header參數設置成None,來告訴Pandas源數據中沒有表頭,效果如圖2-4所示。

圖2-4 設置header讀取無表頭數據

如果將header設置成None,默認的表頭是從0~3的幾個數字,很不美觀。我們可以在讀取的時候通過names參數,把表頭設置成我們期望的內容,如圖2-5所示。

圖2-5 讀取時設置表頭

當然,header除了設置成None,還可以設置成數字,代表在讀取時把第幾行數據作為表頭。假如我們想要把Sheet1中的小明所在的第二行作為表頭,只需把header設置成1(Python中計數從0開始)即可,如圖2-6所示。

這樣一來,小明對應的數據行就成了表頭。

4.其他參數

除了默認或指定Sheet讀取、設置數據表頭,Pandas讀取數據還有很多靈活操作的參數,例如:

?index_col指定索引列;

?usecols指定讀取部分列;

?nrows指定讀取部分行;

?prefix給表頭設置前綴;

?dtype和字典結合,讀取時為每一列數據設置格式。

參數非常豐富,不過我們的Pandas學習之旅有一個重要原則是“抓大放小”,為了避免陷入細節的泥沼無法自拔,比較瑣碎且不常用的參數不展開介紹,只是告訴大家有相關的參數,讀者在需要的時候可以自行查閱。

圖2-6 用header指定表頭

2.2.2 CSV文件的讀取

Pandas讀取CSV文件用的是pd.read_csv('具體文件名')方法。不過Pandas在Excel和CSV文件的讀取上有很高的相似性,上一小節講的大多數規則和參數也適用于CSV文件的讀取。

需要注意的是,在實際操作中Excel文件的讀取一般不會有什么問題,但由于中文路徑和編碼等問題,CSV的讀取是報錯的高發區。接下來,重點看看CSV文件的3個注意點以及如何避免錯誤。

1.中文路徑

當文件路徑是中文時,如果直接讀取,在一些Python版本里會報錯。因為Python默認的讀取引擎是C語言,它在處理中文時容易出問題。這個時候把讀取引擎參數engine設置為Python就可以解決:

2.編碼設置

CSV文件有不同的編碼形式,utf-8和gbk是兩種最常見的編碼形式。類似于一把鑰匙對一個鎖,如果文件是gbk編碼,那么用utf-8就打不開。Pandas在讀取文件時默認采用utf-8的編碼格式。

用默認的方式打開我們CSV的案例數據,可能會報錯,如圖2-7所示。

圖2-7 讀取數據報錯

通過設置encoding參數來指定文件編碼格式,在讀取gbk和其他編碼文件的時候設置成對應編碼即可解決問題:

結果如下:

3.分隔符的處理

pd.read_csv()方法在讀取CSV文件時,默認是以逗號作為分隔符來打開的(這也是絕大部分CSV文件使用的分隔方式),但如果文件在存儲時使用的是其他分隔符,那么就需要在讀取時設置好sep參數:

以上代碼打開的文件是以\t為分隔符的。

2.2.3 其他文件類型的讀取

1.TXT文件的讀取

Pandas讀取TXT文件用的是pd.read_table()方法,需要在讀取時輸入TXT文件的名稱和分隔符(這里必須指定):

2.JSON文件的讀取

JSON文件是一種類字典形式的文件,在讀取時用pd.read_json()方法。

Excel和CSV是兩種最為常見的文件類型,其他文件類型的讀取這里只簡單提及,因為它們只有打開的方法有所差異,大部分參數對它們也是通用的。

2.2.4 存儲數據

當對數據進行讀取、處理和分析之后,往往需要把結果數據存儲起來。

在Pandas中存儲數據非常方便,用的是data.to_×××()方法(×××是你期望存儲的文件類型):

默認的存儲方式會把索引也作為一列存儲,如果不希望存儲索引,設置index=False即可:

主站蜘蛛池模板: 中江县| 西昌市| 万安县| 新晃| 浦北县| 常德市| 虎林市| 西青区| 扶沟县| 舞钢市| 普陀区| 白河县| 永泰县| 革吉县| 晋中市| 开封市| 临泽县| 白城市| 昭平县| 儋州市| 石家庄市| 麻城市| 巨鹿县| 景德镇市| 新河县| 泰宁县| 沅江市| 思南县| 环江| 怀来县| 馆陶县| 阜宁县| 桐庐县| 将乐县| 庆阳市| 玉树县| 蓬安县| 阳高县| 雷波县| 平潭县| 扎兰屯市|