本文轉載自https://blog.csdn.net/brucewong0516/article/details/79092579
pandas包是一個高效的檔案讀取工具,適用于txt,excel,等資料格式的檔案,具有很強的自動識別功能,
pandas.read_csv可以讀取CSV(逗號分割)檔案、文本型別的檔案text、log型別到DataFrame,下面是pandas.read_csv常用引數整理
pandas也支持檔案的部分匯入和選擇迭代,更多幫助參見:http://pandas.pydata.org/pandas-docs/stable/io.html
引數filepath_or_buffer :
可以是URL,可用URL型別包括:http, ftp, s3和檔案,對于多檔案正在準備中本地檔案讀取,
實體1:實作圖片中檔案的讀取,注意圖片中的所有輸入基于英文輸入下得到,回傳DataFrame檔案
In [1]: import pandas as pd
#讀取out.log檔案,其他的引數默認
In [2]: out = pd.read_csv('out.log')
In [3]: out
Out[3]:
book kook
0 joke2 dddd
1 fang3 NaN
2 test1 NaN
3 test2 NaN
4 test3 NaN
5 1997/10/2 NaN
實體2:讀取股票資料csv檔案,回傳DataFrame檔案
In [4]: stock = pd.read_csv('000777.csv')
In [5]: stock
Out[5]:
date code closing high low opening pre_closing zde \
0 2017/1/20 '000777 21.17 21.29 20.90 20.90 20.86 0.31
1 2017/1/19 '000777 20.86 21.14 20.82 21.12 21.12 -0.26
2 2017/1/18 '000777 21.12 21.44 21.09 21.40 21.37 -0.25
3 2017/1/17 '000777 21.37 21.49 20.75 21.17 21.15 0.22
4 2017/1/16 '000777 21.15 22.50 20.28 22.50 22.53 -1.38
5 2017/1/13 '000777 22.53 22.88 22.43 22.71 22.85 -0.32
6 2017/1/12 '000777 22.85 23.53 22.75 23.41 23.51 -0.66
引數sep:
如果不指定引數,則會嘗試使用逗號分隔,分隔符長于一個字符并且不是‘\s+’,將使用python的語法分析器,并且忽略資料中的逗號,正則運算式例子:’\r\t’,
In [6]: a = pd.read_csv('out.log',sep = '\s')
C:/Anaconda3/Scripts/ipython-script.py:1: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support regex separators (separators > 1 char and different from '\s+' are interpreted as regex); you can avoid this warning by specifying engine='python'.
if __name__ == '__main__':
#設定空值作為分隔符,','不會分割每一行的資料
In [7]: a
Out[7]:
book,kook
0 joke2,dddd
1 fang3
2 test1
3 test2
4 test3
5 1997/10/2
#空值的設定兩種方式:' ' or '\s'
In [9]: a = pd.read_csv('out.log',sep = ' ')
In [10]: a
Out[10]:
book,kook
0 joke2,dddd
1 fang3
2 test1
3 test2
4 test3
5 1997/10/2
引數delimiter :
定界符,備選分隔符(如果指定該引數,則sep引數失效)
In [13]: a = pd.read_csv('out.log',sep = ', ',delimiter='o')
#此時sep = ','設定失效
In [14]: a
Out[14]:
b Unnamed: 1 k,k Unnamed: 3 k
0 j ke2,dddd NaN NaN NaN
1 fang3 NaN NaN NaN NaN
2 test1 NaN NaN NaN NaN
3 test2 NaN NaN NaN NaN
4 test3 NaN NaN NaN NaN
5 1997/10/2 NaN NaN NaN NaN
引數delim_whitespace :
指定空格(例如’ ‘或者’ ‘)是否作為分隔符使用,等效于設定sep=’\s+’,如果這個引數設定為True那么delimiter 引數失效,
In [20]: a = pd.read_csv('out.log',delim_whitespace = True)
In [21]: a
Out[21]:
book,kook
0 joke2,dddd
1 fang3
2 test1
3 test2
4 test3
5 1997/10/2
引數header :
指定行數用來作為列名,資料開始行數,如果檔案中沒有列名,則默認為0【第一行資料】,否則設定為None,如果明確設定 header = 0 就會替換掉原來存在列名,header引數可以是一個list例如:[0,1,3],這個list表示將檔案中的這些行作為列標題(意味著每一列有多個標題),介于中間的行將被忽略掉,注意:如果skip_blank_lines=True 那么header引數忽略注釋行和空行,所以header=0表示第一行資料而不是檔案的第一行,
In [22]: a = pd.read_csv('out.log',delim_whitespace = True,header = None)
In [23]: a
Out[23]:
0
0 book,kook
1 joke2,dddd
2 fang3
3 test1
4 test2
5 test3
6 1997/10/2
引數names :
用于結果的列名串列,如果資料檔案中沒有列標題行,就需要執行 header=None,names屬性在header之前運行默認串列中不能出現重復,除非設定引數mangle_dupe_cols=True,
In [32]: a = pd.read_csv('out.log',names='ko')
In [33]: a
Out[33]:
k o
0 book kook
1 joke2 dddd
2 fang3 NaN
3 test1 NaN
4 test2 NaN
5 test3 NaN
6 1997/10/2 NaN
引數index_col :
用作行索引的列編號或者列名,如果給定一個序列則有多個行索引,
In [45]: a = pd.read_csv('out.log',header=None,prefix='XX',index_col=0)
#指定第一列作為行索引
In [46]: a
Out[46]:
XX1
XX0
book kook
joke2 dddd
fang3 NaN
test1 NaN
test2 NaN
test3 NaN
1997/10/2 NaN
In [47]: a = pd.read_csv('out.log',header=None,prefix='XX',index_col=1)
#指定第二列作為行索引
In [48]: a
Out[48]:
XX0
XX1
kook book
dddd joke2
NaN fang3
NaN test1
NaN test2
NaN test3
NaN 1997/10/2
引數usecols:
回傳一個資料子集,該串列中的值必須可以對應到檔案中的位置(數字可以對應到指定的列)或者是字符傳為檔案中的列名,例如:usecols有效引數可能是 [0,1,2]或者是 [‘foo’, ‘bar’, ‘baz’],使用這個引數可以加快加載速度并降低記憶體消耗,
引數prefix:
在沒有列標題時,也就是header設定為None,給列添加前綴,例如:添加prefix= ‘X’ 使得列名稱成為 X0, X1, …
In [38]: a = pd.read_csv('out.log',header=None,prefix='XX')
In [39]: a
Out[39]:
XX0 XX1
0 book kook
1 joke2 dddd
2 fang3 NaN
3 test1 NaN
4 test2 NaN
5 test3 NaN
6 1997/10/2 NaN
引數dtype:
每列資料的資料型別,例如 {‘a’: np.float64, ‘b’: np.int32}
In [49]: a = pd.read_csv('out.log',header=None,prefix='XX',index_col=1,dtype={'XX0':str})
In [50]: a
Out[50]:
XX0
XX1
kook book
dddd joke2
NaN fang3
NaN test1
NaN test2
NaN test3
NaN 1997/10/2
In [51]: a['XX0'].values
Out[51]: array(['book', 'joke2', 'fang3', 'test1', 'test2', 'test3', '1997/10/2'], dtype=object)
In [52]: a['XX0'].values[0]
Out[52]: 'book'
In [53]: type(a['XX0'].values[0])
Out[53]: str
引數skipinitialspace:
忽略分隔符后的空白(默認為False,即不忽略).
引數skiprows :
需要忽略的行數(從檔案開始處算起),或需要跳過的行號串列(從0開始),
In [54]: a = pd.read_csv('out.log',header=None,prefix='XX',index_col=1,skiprows= 1)
#略去第二行的資料
In [55]: a
Out[55]:
XX0
XX1
dddd joke2
NaN fang3
NaN test1
NaN test2
NaN test3
NaN 1997/10/2
引數nrows :
需要讀取的行數(從檔案頭開始算起),
In [56]: a = pd.read_csv('out.log',header=None,prefix='XX',index_col=1,skiprows= 1,nrows=4)
In [57]: a
Out[57]:
XX0
XX1
dddd joke2
NaN fang3
NaN test1
NaN test2
引數na_values :
一組用于替換NA/NaN的值,如果傳參,需要制定特定列的空值,默認為‘1.#IND’, ‘1.#QNAN’, ‘N/A’, ‘NA’, ‘NULL’, ‘NaN’, ‘nan’`.
引數keep_default_na:
如果指定na_values引數,并且keep_default_na=False,那么默認的NaN將被覆寫,否則添加
引數na_filter:
是否檢查丟失值(空字串或者是空值),對于大檔案來說資料集中沒有空值,設定na_filter=False可以提升讀取速度,
引數skip_blank_lines :
如果為True,則跳過空行;否則記為NaN,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/33675.html
標籤:Python
上一篇:03_多行程
