Pandas—read_csv()/read_table()文本文件的讀取


對於CSV及txt后綴的文本文件,分別使用pandas模塊中的read_csv函數和read_table函數

文件類型

函數名稱

CSV

read_csv()

txt

read_table()

 

1. read_table函數的參數

read_table(filepath_or_buffer , sep='\t' , header='infer' ,

names=None , index _col=None , usecols=None , dtype=None ,  

converters=None ,  skiprows=None , skipfooter=None , nrows=None ,

na_values=None , skip_blank_lines=True , parse_dates=False ,

thousands= None , comment=None , encoding=None)

 

2. 參數解釋

序號

參數名稱

描述

1

filepath_or_buffer

文件路徑、指定存儲數據的URL或者文件型對象

2

sep

指定原數據集中分割每行字段的分隔符,默認為tab制表符

3

header

是否將原數據集中的第一行作為表頭,默認是0,將第一行作為變量名稱;如果原始數據中沒有表頭,該參數需要設置成None。

4

names

如果原數據集中沒有列名,這個可以用來給數據添加列名。和header=None一起使用。

5

index _col

指定數據集中的某些列(字段)作為數據的行索引(標簽)

6

usecols

指定要讀取哪些列(字段)的數據。

7

dtype

為數據集中的每列設置不同的數據類型

8

converters

通過字典格式,為數據集中的某些列(字段)設置轉換函數

9

skiprows

指定需要跳過原數據集的起始行數

10

skipfooter

指定需要跳過原數據集的末尾行數

11

nrows

指定從文件開頭處讀入的行數

12

na_values

指定原數據集中的哪些特征值為缺失值(默認將兩個分隔符之間的空值視為缺失值)

13

skip_blank_lines

跳過空白行,默認為True

14

parse_dates

嘗試將數據解析為datetime,默認為False。參數值為True時,則嘗試解析數據框的行索引;參數為列表,則嘗試解析對應的日期列;如果參數為嵌套列表,則將某些列合並為日期列;如果參數為字典,則解析對應的列(即字典中的值),並生成新的變量名(即字典中的鍵)

15

thousands

指定原數據集中的千分位符 ,例如','或'.'

16

comment

指定注釋符,在讀取數據時,如果碰到行首指定的注釋符,則跳過該行

17

encoding

為防止中文亂碼,可以借助該參數解決(通常設置為“utf-8”或者“gbk”)

18

chunksize

用於迭代的塊大小

19

date_parser

用於解析日期的函數

 

read_csv函數的參數與之完全一致,有一個不同點:sep參數值的默認值

文件類型

函數名稱

默認分隔符

CSV

read_csv()

參數的默認值為英文狀態下的逗號“,”

txt

read_table()

參數的默認值為tab制表符

 

3 應用案例

有一個txt文件,內容如下:

 2021年寒假留校過年的同學,帶“!”的同學因臨時變更選擇回家

 如有變化,及時報送

 0014,多隆,男,河北石家庄人

 0015,陳近南,男,福建漳州人

 ! 0016,韋小寶,男,江蘇揚州人

 0017,龍兒,女,神龍島人

 !0018,鰲拜,內蒙古呼和浩特人

 數據來源於鹿鼎大學人事部

 抄送給康熙

 

要求只讀取編號、姓名、性別、籍貫等內容,且回家的不用讀,實現如下效果:

 

id

name

gender

native place

0

14

多隆

河北石家庄人

1

15

陳近南

福建漳州人

2

17

龍兒

神龍島人


代碼 

import pandas as pd

#用read_table函數讀取文本文件的數據

data=pd.read_table(r'D:Desktop\新建文本文檔.txt',    #文件路徑,前面的filepath_or_buffer符可以省略掉      

         sep=',',   #指定數據中變量之間的分隔符,注意這里是中文的逗號 ,

         header=None ,    #不需要將原來的數據中的第一行讀作表頭

         names=['id','name','gender','native place'] ,  #重新為各列起變量名稱

         converters={'id':str} ,   #將ID轉換為字符串,以免開頭的00消失

         skiprows=2 ,          #跳過開頭的兩行數據

         skipfooter=2,         #跳過末尾的兩行數據

         comment='!'        #不讀取“!”開頭的數據行

         )

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM