pandas讀取文本文件數據的常用方法:
方法 | 描述 | 返回數據 |
---|---|---|
read_csv | 讀取csv文件 | DataFrame或TextParser |
read_fwf | 讀取表格或固定寬度格式的文本行到數據框 | DataFrame或TextParser |
read_table | 讀取通用分隔符分割的數據文件到數據框 | DataFrame或TextParser |
1.read_csv
通過read_csv方法讀取csv格式的數據文件
read_csv(filepath_or_buffer, sep='', delimiter=None, header='infer', names=None, index_col=None, usecols=None, **kwds)
參數:
-
filepath_or_buffer
:字符串型,讀取的文件對象,必填。 -
sep
:字符串型,分隔符,選填,默認","。 -
delimiter
:字符串型。定界符(備選分隔符),指定該參數,sep失效。 -
delim_whitespace
:布爾型,是否指定空格或制表符作為分隔符,等效於sep=“\s+”,指定該參數,delimiter失效。詳解
\s+
:\s匹配任何空白符,等價於[\f\n\r\t\v
]-
\f:匹配換頁符
-
\n:匹配換行符
-
\r:匹配回車符
-
\t:匹配制表符
-
\v:匹配垂直制表符
-
-
header
:指定第幾行作為列名(忽略注解行),如果沒有指定列名,默認header=0;如果指定了列名header=None。 -
names
:類數組,列名。默認為空。 -
dtype
:每列數據類型。如:{'a': np.flat64, 'b': np.int32}。 -
skipinitialspace
:忽略分隔符后的空白(默認False,即不忽略)。 -
skiprows
:類字典或整數,要跳過的行或行數,默認為空。 -
nrows
:整數型,要讀取的前記錄總數,選填,默認為空,常用來在大型數據集下做初步探索之用。 -
thousands
:字符串型,千位符符號,,默認為空。 -
decimal
:字符串型,小數點符號,默認為(.)。 -
index_col
:行索引的列表號或列名,如果給定一個序列則有多個行索引。 -
squeeze
:布爾型,當為True,如果數據僅有一列,返回Series。默認False,即只有一列也返回DataFrame。
2.read_fwf
通過read_fwf方法讀取表格或固定寬度的文本行到數據框。
read_fwf(filepath_or_buffer, colspecs='infer', widths=None, **kwds)
參數:
跟read_csv中的大多相同。下面僅介紹read_fwf特有的參數。
widths
:由整數組成的列表,選填,如果間隔是連續的,使用字段寬度列表而不是”colspecs“。
示例:數據內容如下。
import pandas as pd
fwf_data = pd.read_fwf('fwf_data', widths=[5, 5, 5, 5], names=['col1', 'col2', 'col3', 'col4'])
print(fwf_data)
3.read_table
通過read_table方法讀取通用分隔符分割的數據文件到數據框。
read_table(filepath_or_buffer, sep='\t', delimiter=None, header='infer', names=None, index_col=None, usecols=None, **kwds)
參數:
與read_csv完全相同。其實read_csv是read_table中分隔符為逗號的一個特例。
示例數據內容如下:
import pandas as pd
table_data = pd.read_table('table_data.txt', sep=';', names=['col1', 'col2', 'col3', 'col4', 'col5'])
print(table_data)
數據分割常分為兩種:一種基於固定寬度,一種基於分割符號。即read_fwf和read_talbe。
4.Pandas其他數據讀取方法
方法 | 描述 | 返回數據 |
---|---|---|
read_clipboard | 讀取剪切板數據,將對象傳遞給read_table方法 | DataFrame或TextParser |
read_excel | 讀取Excel數據 | DataFrame或DataFrame構成的字典 |
read_gbq | 從Google Bigquery中讀取數據 | DataFrame |
read_hdf | 讀取文件中的pandas對象 | 所選擇的數據對象 |
read_html | 讀取HTML中的表格 | 由DataFrame構成的字典 |
read_json | 將json對象轉換為Pandas對象 | Series或DataFrame,具體取決於參數typ設置 |
read_msgpack | 從指定文件中加載msgpack Pandas對象 | 文件中的對象類型 |
read_pickle | 從指定文件中加載pickled Pandas或其他pickled對象 | 文件中的對象類型 |
read_sas | 讀取XPORT或SAS7BDAT格式的SAS(統計分析軟件)文件 | DataFrame或SAS7BDATReader或XportReader,具體取決於設置 |
read_sql | 讀取SQL請求或數據庫中的表 | DataFrame |
read_sql_query | 從SQL請求讀取數據 | DataFrame |
read_sql_table | 讀取SQL數據庫中的表 | DataFrame |
read_stata | 讀取Stata(統計分析軟件)文件 | DataFrame或StataReader |
下面是不同場景較為合適的數據讀取方法:
- 純文本格式或非格式化、非結構化的數據,常用語自然語言處理、非結構文本解析、應用正則表達式等后續應用場景下,Python默認的三種方法更為合適。
- 結構化、純數值型的數據,並且主要用於矩陣計算、數據建模的,使用Numpy的loadtxt更方便。
- 對於二進制的數據處理,使用Numpy的load和fromfile方法更為合適。
- 對於結構化的、探索性數據統計和分析場景,使用pandas方法進行讀取,因為其提供了數據框,對數據進行任意翻轉、切片、關聯都很方便。