(5)Python初入坑之pandas基礎實操四
來自專欄 數據分析小白入坑之旅python篇
本節介紹數據的載入,存儲與合併。
pandas可以將表格型的數據讀取為DataFrame對象,例如比較常用的csv和excel文件。
首先我們來看一下打開csv文件的玩法。
一、數據的載入
先自己用excel做了一個示例文件,裡面內容是rand分布的9行6列的表格,按照教程的代碼輸入,打開,提示報錯。
報錯的語句,百度了一下,大概是以下的原因。
在Python中是轉義符,u表示其後是UNICODE編碼,因此User在這裡會報錯,在字元串前面加個r表示就可以了。
回想起之前在廖雪峰教程中學習的轉義符內容,我們在前面加一個r,表示後面的內容不需要轉義。我們再試一下。
代碼輸入之後依舊提示報錯,這次報錯的信息和上次不太一樣。我們再搜索一下。
我的文件名是shili.csv,文件名沒有中文,但是路徑是有中文的,那我們按照上述方法嘗試一下,能否解決。
這一次,我們成功的載入了shili.csv文件,並且python自動匹配了0-8的行索引。
那麼有的csv文件不是以逗號分隔的,而是以空格,tab,或者 製表符分隔的,這個時候,我們需要使用sep函數手動設定分隔符。
可以看到,第一行的abcdef自動被識別成了列索引。如果我們不想要abcdef成為索引,而是就讓它成為數據的第一行。需要使用限定條件,header=None。None的N要大寫,請注意。
這個時候abcdef就會成為第一行的數據被識別出來。pandas會自動再匹配列索引。
如果我們不想要pandas自動匹配的0-5列索引,我們也可以使用我們自己設定的columns,使用names=。
這個時候columns就是我們指定的names了。
行的索引是0-5,也是pandas自動匹配的。但是很多時候我們做表的時候,都會自己設置類似於主鍵這樣的index。那比如我們需要把第一列a,設置成為行索引,該怎麼設置呢?這個時候就需要使用到index_col= 參數。
這個時候dataframe的列索引已經變化了one-six,我們可以用一下方法,將其變回之前的樣子(我自己根據之前的內容操作的,不知道有沒有可以直接逆操作的函數)
這個時候再使用index_col 來設置a列為索引。
如果是層次化的索引,傳入一個列表就行了。
有的時候,表頭會有一些文字性的描述,這部分內容我們不需要載入到python中,那就可以用skiprows= 來進行跳過,可以指定跳過哪幾行等等。
例如下面,我們跳過了第二行和第三行,原本9行的數據我們只載入了7行。這裡面的2,3就是指的第二行和第三行,而不是位置代表的第三行第四行。
如果一個文件非常大,我們只需要讀取一部分行數,看個大概,那需要使用nrows= 來指定行數。如下我們只需要取前三行。
二、數據的存儲
存儲的話,則使用to_csv函數。
文件會和我們平常存儲jupyter notebook的文件一樣,存儲在默認的路徑,例如我的路徑就是在C盤的用戶文件下,那我可以找到這個文件。
pandas在輸出為csv文件時,會默認給文件增加一個序列,就是0,1,2,3,4這樣的序列,那如果我們不需要這樣的序列,我們可以添加index=False 參數 來阻止這個操作。
那讀取excel文件怎麼操作呢?操作其實是一樣的,使用read_excel 方法即可,同時文件名後綴不同。
那麼excel文件都會有sheet1,sheet2,也就是子表。那麼我們怎麼讀取一個子表裡的內容呢?設定sheetname= 條件即可。
推薦閱讀: