Pandas CSV檔案讀入和處理

2021-10-07 09:23:58 字數 2394 閱讀 5043

1 pandas—csv檔案讀取

pandas讀取csv檔案的方式比較簡單,使用的是read_csv的介面函式,首先我們來看該函式的常見引數

filepath_or_buffer:首先是檔案路徑引數,這個引數所指向的檔案url的形式,url指向的可以是http,ftp,s3,csv等等型別的檔案。其中最為常見的就是csv檔案。

sep:csv檔案中的分割符,這個引數的作用在於如何來分割csv檔案中的不同的列,如果不進行設定,c語言後台程式不能夠自動的檢測到分割符,此時會使用python內建的嗅探方法csv.sniffer來進行判斷。這裡需要注意的是,長度超過1個位元組分,並且不同於』\s+'的分隔符,會被內部解析成正規表示式,正規表示式容易忽略引用資料。(轉義字元的應用),例如"\r\t"來增加轉義字元。reed_csv方法預設的分隔符為逗號head 該引數的形式為乙個int 或者乙個元素為int的list,預設值為』infer』,該引數的作用是用來確定當前csv檔案的各個列的列明,這個很好理解,常規的csv檔案的第0行一般是各個列的列名稱。當選擇預設或者head=0的時候,此時確定檔案中的第1行行資料(如果設定skip_blank_lines=true,這裡將忽略空行和注釋行的)是各個列的列名稱。如果head=none,此時列名稱是後面引數傳入的,也就是當前檔案中不包括列的名稱。這裡需要注意的是,我們可以傳入乙個列序號組成的list來作為實參,當對於沒有被出入的列的序號,在讀取的時候將會跳過。

name:各個列的名稱的list,如果檔案中部包含列的名稱,也就是head引數被設定為了none,此時需要我們通過該引數自己傳入列的名稱的list。

index_col引數,輸入型別可以是int,str,str/int的序列等等。預設引數為none,這個引數指明了當前csv的所有列。如果傳入的是乙個序列,那麼代表使用的是多級索引。注意:當設定該引數為false的時候,pandas不在使用首列來作為索引列。這種方式的使用情景是csv檔案每行下面都有乙個分隔符。

usecols:引數形式是乙個list或者callable,預設為none,這個引數的作用是用於選擇指定的列,返回的結果是按照給定列名稱而生成的子集。如果給定是乙個list的形式,那麼list中的元素應該是代表列的序號或者列的名稱。在傳入的時候,可以list中的元素順序。如果傳入的是callable的方式,可以根據傳入的函式,來根據列來進行計算。返回的是呼叫函式的結果為true的名稱子集。

mangle_dupe_cols:引數形式為true或者false,預設值為true,這個引數的主要的作用當列名有重複的時候,將重複的列名解析成x.1,x.2的形式。

dtype:引數為某一列或者全部的資料的型別名稱,形式為名稱字串或者dict(「列名」:「資料型別名稱」)。

read_csv的引數比較多,這裡只介紹比較常用的引數,有興趣的讀者可以參考官方文件,下面我們來實現乙個讀取例項:

首先,給出檔案的格式:

這裡,資料的第二列是空列,所以我選擇的是傳入usecols引數來確定需要的列。

讀取之後的結果為:

2 資料處理

def

getdata

(filepath)

: data = pandas.read_csv(filepath,usecols=[0

,1,3

,4,5

])cols =

list

(data.columns)

#獲取列資料

# 分別對每一列資料進行抽取,整理成dict的形式

result_dict =

for key in cols:

# 這裡將所有的id值-500

if key ==

'id'

: temp =

[item-

500for item in data[key]

] result_dict[key]

= temp

else

: result_dict[key]

=list

(data[key]

)return result_dict

後面集可以利用python方法正常的處理資料了。

java 檔案讀入和寫出

檔案讀入 param filepath 檔案路徑和名稱 return public string filereader string filepath catch ioexception e filereader reader null 定義乙個filereader物件,用來初始化bufferedr...

判斷讀入資料檔案結尾 從檔案讀入資料

參考 在使用c c 讀檔案的時候,使用eof 這個函式來判斷檔案是否為空或者是否讀到檔案結尾的時候會有一些特殊情況 先看 include include using namespace std int main e return 0 上述 在vs2012下編譯執行,發現,當檔案結尾沒有空行時,結果正...

Java 檔案讀入方法

獲得控制台使用者輸入的資訊 public string getinputmessage throws ioexception.五.轉移檔案目錄 轉移檔案目錄不等同於複製檔案,複製檔案是複製後兩個目錄都存在該檔案,而轉移檔案目錄則是轉移後,只有新目錄中存在該檔案。public void changed...