本文要點(diǎn)剛要:
(一)讀文本文件格式的數(shù)據(jù)函數(shù):read_csv,read_table
1.讀不同分隔符的文本文件,用參數(shù)sep
2.讀無(wú)字段名(表頭)的文本文件 ,用參數(shù)names
3.為文本文件制定索引,用index_col
4.跳行讀取文本文件,用skiprows
5.數(shù)據(jù)太大時(shí)需要逐塊讀取文本數(shù)據(jù)用chunksize進(jìn)行分塊。
(二)將數(shù)據(jù)寫(xiě)成文本文件格式函數(shù):to_csv
范例如下:
(一)讀取文本文件格式的數(shù)據(jù)集
1.read_csv和read_table的區(qū)別:
#read_csv默認(rèn)讀取用逗號(hào)分隔符的文件,不需要用sep來(lái)指定分隔符
1 | import pandas as pdpd.read_csv( 'C:\\Users\\xiaoxiaodexiao\\pythonlianxi\\test0424\\data.csv' )
|
1 2 3 | #read_csv如果讀的是用非逗號(hào)分隔符的文件,必須要用sep指定分割符,不然讀出來(lái)的是原文件的樣子,數(shù)據(jù)沒(méi)被分割開(kāi)
import pandas as pd
pd.read_csv( 'C:\\Users\\xiaoxiaodexiao\\pythonlianxi\\test0424\\data.txt' )
|
1 2 3 | #與上面的例子可以對(duì)比一下區(qū)別
import pandas as pd
pd.read_csv( 'C:\\Users\\xiaoxiaodexiao\\pythonlianxi\\test0424\\data.txt' ,sep = '|' )
|
1 2 3 | #read_table讀取文件時(shí)必須要用sep來(lái)指定分隔符,否則讀出來(lái)的數(shù)據(jù)是原始文件,沒(méi)有分割開(kāi)。
import pandas as pd
pd.read_table( 'C:\\Users\\xiaoxiaodexiao\\pythonlianxi\\test0424\\data.csv' )
|
1 2 3 | #read_table讀取數(shù)據(jù)必須指定分隔符
import pandas as pd
pd.read_table( 'C:\\Users\\xiaoxiaodexiao\\pythonlianxi\\test0424\\data.txt' ,sep = '|' )
|
2.讀取文本文件時(shí)不用header和names指定表頭時(shí),默認(rèn)第一行為表頭
1 2 | #用header=None表示數(shù)據(jù)集沒(méi)有表頭,會(huì)默認(rèn)用阿拉伯?dāng)?shù)字填充表頭和索引
pd.read_table( 'C:\\Users\\xiaoxiaodexiao\\pythonlianxi\\test0424\\data.txt' ,sep = '|' ,header = None )
|
1 2 | #用names可以自定義表頭
pd.read_table( 'C:\\Users\\xiaoxiaodexiao\\pythonlianxi\\test0424\\data.txt' ,sep = '|' , names = [ 'x1' , 'x2' , 'x3' , 'x4' , 'x5' ])
|
3.默認(rèn)用阿拉伯?dāng)?shù)字指定索引;用index_col指定某一列作為索引
1 2 3 | names = [ 'x1' , 'x2' , 'x3' , 'x4' , 'x0' ]
pd.read_table( 'C:\\Users\\xiaoxiaodexiao\\pythonlianxi\\test0424\\data.txt' ,sep = '|' ,
names = names,index_col = 'x0' )
|
4.以下示例是用skiprows將hello對(duì)應(yīng)的行跳過(guò)后讀取其他行數(shù)據(jù),不管首行是否作為表頭,都是將表頭作為第0行開(kāi)始數(shù)
可以對(duì)比一下三個(gè)例子的區(qū)別進(jìn)行理解
1 | pd.read_csv( 'C:\\Users\\xiaoxiaodexiao\\pythonlianxi\\test0424\\data1.txt' )
|
1 2 3 | names = [ 'x1' , 'x2' , 'x3' , 'x4' , 'x0' ]
pd.read_csv( 'C:\\Users\\xiaoxiaodexiao\\pythonlianxi\\test0424\\data1.txt' ,names = names,
skiprows = [ 0 , 3 , 6 ])
|
1 2 | pd.read_csv( 'C:\\Users\\xiaoxiaodexiao\\pythonlianxi\\test0424\\data1.txt' ,
skiprows = [ 0 , 3 , 6 ])
|
1 2 | pd.read_csv( 'C:\\Users\\xiaoxiaodexiao\\pythonlianxi\\test0424\\data1.txt' ,header = None ,
skiprows = [ 0 , 3 , 6 ])
|
5.分塊讀取,data1.txt中總共8行數(shù)據(jù),按照每塊3行來(lái)分,會(huì)讀3次,第一次3行,第二次3行,第三次1行數(shù)據(jù)進(jìn)行讀取。
注意這里在分塊的時(shí)候跟跳行讀取不同的是,表頭沒(méi)作為第一行進(jìn)行分塊讀取,可通過(guò)一下兩個(gè)例子對(duì)比進(jìn)行理解。
1 2 3 4 | chunker = pd.read_csv( 'C:\\Users\\xiaoxiaodexiao\\pythonlianxi\\test0424\\data1.txt' ,chunksize = 3 )
for m in chunker:
print ( len (m))
print m
|
1 2 3 4 5 | chunker = pd.read_csv( 'C:\\Users\\xiaoxiaodexiao\\pythonlianxi\\test0424\\data1.txt' ,header = None ,
chunksize = 3 )
for m in chunker:
print ( len (m))
print m
|
(二)將數(shù)據(jù)寫(xiě)入文本格式用to_csv
以data.txt為例,注意寫(xiě)出文件時(shí),將索引也寫(xiě)入了
1 2 | data = pd.read_table( 'C:\\Users\\xiaoxiaodexiao\\pythonlianxi\\test0424\\data.txt' ,sep = '|' )
print data
|
1 2 3 | #可以用index=False禁止索引的寫(xiě)入。
data = pd.read_table( 'C:\\Users\\xiaoxiaodexiao\\pythonlianxi\\test0424\\data.txt' ,sep = '|' )
data.to_csv( 'C:\\Users\\xiaoxiaodexiao\\pythonlianxi\\test0424\\outdata.txt' ,sep = '!' ,index = False )
|
1 2 3 4 | #可以用columns指定寫(xiě)入的列
data = pd.read_table( 'C:\\Users\\xiaoxiaodexiao\\pythonlianxi\\test0424\\data.txt' ,sep = '|' )
data.to_csv( 'C:\\Users\\xiaoxiaodexiao\\pythonlianxi\\test0424\\outdata2.txt' ,sep = ',' ,index = False ,
columns = [ 'a' , 'c' , 'd' ])
|
|