看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
pandas.read_table()
是一个用于读取分隔符分隔的文本文件(如 .txt
、.tsv
等)并将其转换为 Pandas DataFrame
的函数。尽管 read_table
通常被视为 read_csv
的一个特例(read_csv
更为常用且功能更强大),但在处理特定格式的文本文件时,read_table
仍然非常有用。
pandas.read_table(
filepath_or_buffer,
*,
sep=<no_default>,
delimiter=None,
header='infer',
names=<no_default>,
index_col=None,
usecols=None,
dtype=None,
engine=None,
converters=None,
true_values=None,
false_values=None,
skipinitialspace=False,
skiprows=None,
skipfooter=0,
nrows=None,
na_values=None,
keep_default_na=True,
na_filter=True,
verbose=<no_default>,
skip_blank_lines=True,
parse_dates=False,
infer_datetime_format=<no_default>,
keep_date_col=<no_default>,
date_parser=<no_default>,
date_format=None,
dayfirst=False,
cache_dates=True,
iterator=False,
chunksize=None,
compression='infer',
thousands=None,
decimal='.',
lineterminator=None,
quotechar='"',
quoting=0,
doublequote=True,
escapechar=None,
comment=None,
encoding=None,
encoding_errors='strict',
dialect=None,
on_bad_lines='error',
delim_whitespace=<no_default>,
low_memory=True,
memory_map=False,
float_precision=None,
storage_options=None,
dtype_backend=<no_default>
)
由于 pandas.read_table
函数具有众多参数,以下将逐一详细解释每个参数的用途和意义:
filepath_or_buffer
str
、pathlib.Path
、file-like object
、URL
等。sep
str
,默认为制表符 \t
。delimiter
str
,默认为 None
。sep
类似,用于指定字段分隔符。通常情况下,推荐使用 sep
参数。header
int
、list of int
、None
,默认为 'infer'
。None
,则不会将任何行作为列名,列名需要通过 names
参数指定。names
array-like
,默认为 None
。index_col
int
、str
、sequence of int / str
、False
,默认为 None
。None
,则自动生成整数索引。usecols
list-like
、callable
、None
,默认为 None
。dtype
Type name
或 dict of column -> type
,默认为 None
。engine
{'c', 'python'}
,默认为 None
。'c'
引擎速度更快,适用于大多数情况;'python'
引擎更灵活,适用于处理复杂的分隔符或特殊情况。converters
dict
,默认为 None
。true_values 和 false_values
list-like
,默认为 None
。True
或 False
。例如,可以将 'Yes'
和 'No'
转换为布尔类型。skipinitialspace
bool
,默认为 False
。True
,则跳过分隔符后面的空格,避免读取到不必要的空格。skiprows
list-like
、int
,默认为 None
。skipfooter
int
,默认为 0
。engine='python'
。nrows
int
,默认为 None
。na_values
scalar
、str
、list-like
,默认为 None
。NaN
)。例如,可以将 'N/A'
或 'NULL'
视为缺失值。keep_default_na
bool
,默认为 True
。False
,则仅使用 na_values
指定的值作为缺失值。na_filter
bool
,默认为 True
。False
,则不进行缺失值检测,速度更快。verbose
bool
或其他,默认为 False
。True
,则在读取过程中输出更多信息。skip_blank_lines
bool
,默认为 True
。False
,则空白行会被解析为缺失值行。parse_dates
bool
、list
、dict
,默认为 False
。True
,则尝试解析所有列;也可以指定具体的列。infer_datetime_format
bool
,默认为 False
。True
,则尝试推断日期时间格式,加快解析速度。keep_date_col
bool
,默认为 False
。True
,则在解析日期时保留原始日期列。date_parser
callable
,默认为 None
。date_format
str
,默认为 None
。dayfirst
bool
,默认为 False
。True
,则将日期格式中的日部分优先于月部分。例如,01/02/2020
会被解析为 1 月 2 日而不是 2 月 1 日。cache_dates
bool
,默认为 True
。iterator
bool
,默认为 False
。True
,则返回一个迭代器,适用于分块读取大型文件。chunksize
int
,默认为 None
。TextFileReader
对象,适用于逐块处理大型文件。compression
{'infer', 'gzip', 'bz2', 'zip', 'xz', None}
,默认为 'infer'
。'infer'
会根据文件扩展名自动推断。thousands
str
,默认为 None
。decimal
str
,默认为 '.'
。lineterminator
str
,默认为 None
。quotechar
str
,默认为 '"'
。quoting
int
,默认为 0
(csv.QUOTE_MINIMAL
)。0
(csv.QUOTE_MINIMAL
): 仅在必要时引用。1
(csv.QUOTE_ALL
): 总是引用。2
(csv.QUOTE_NONNUMERIC
): 引用非数字字段。3
(csv.QUOTE_NONE
): 不引用。doublequote
bool
,默认为 True
。True
,则双引号内的双引号会被转义为两个双引号。escapechar
str
,默认为 None
。comment
str
,默认为 None
。encoding
str
,默认为 None
。'utf-8'
、'gbk'
等。encoding_errors
str
,默认为 'strict'
。'ignore'
、'replace'
。dialect
str
或 csv.Dialect
,默认为 None
。on_bad_lines
{'error', 'warn', 'skip'}
,默认为 'error'
。delim_whitespace
bool
,默认为 False
。True
,则使用任意空白字符作为分隔符,忽略 sep
和 delimiter
参数。low_memory
bool
,默认为 True
。True
,则分块处理文件以降低内存使用,但可能导致数据类型推断不准确。memory_map
bool
,默认为 False
。True
,则使用内存映射,提高大型文件的读取速度。float_precision
str
,默认为 None
。'high'
、'legacy'
。storage_options
dict
,默认为 None
。dtype_backend
str
或 _NoDefault
,默认为 _NoDefault.no_default
。pandas.DataFrame
DataFrame
对象,便于后续的数据分析和处理。pandas.read_table()
主要用于读取以特定分隔符(默认是制表符)分隔的文本文件。常见的使用场景包括:
import pandas as pd
# 从 tab 分隔符的文本文件读取数据
df = pd.read_table('data.txt', sep='\t')
# 读取带有自定义列名的文件
df = pd.read_table('data.txt',
names=['Column1', 'Column2', 'Column3']
)
# 跳过前两行,指定分块处理的行数
df = pd.read_table('data.txt', skiprows=2, chunksize=1000)
假设有一个名为 data.tsv
的文件,内容如下:
Name Age City
Alice 30 New York
Bob 25 Los Angeles
Charlie 35 Chicago
使用 pandas.read_table()
读取该文件:
import pandas as pd
# 读取制表符分隔的文件
df = pd.read_table('data.tsv')
print(df)
输出
Name Age City
0 Alice 30 New York
1 Bob 25 Los Angeles
2 Charlie 35 Chicago
尽管 read_table
默认使用制表符作为分隔符,但也可以通过 sep
参数指定其他分隔符。例如,读取一个以逗号分隔的文件 data.csv
:
data.csv
文件内容:
Name,Age,City
Alice,30,New York
Bob,25,Los Angeles
Charlie,35,Chicago
使用 read_table
读取:
import pandas as pd
# 读取逗号分隔的文件
df = pd.read_table('data.csv', sep=',')
print(df)
输出
Name Age City
0 Alice 30 New York
1 Bob 25 Los Angeles
2 Charlie 35 Chicago
假设有一个包含缺失值的文件 data_missing.tsv
:
Name Age City
Alice 30 New York
Bob N/A
Charlie 35 Chicago
使用 read_table
读取并处理缺失值:
import pandas as pd
# 读取包含缺失值的文件,并指定 Age 列为整数类型
df = pd.read_table('data_missing.tsv', sep='\t', dtype={'Age': 'Int64'}, na_values=['N/A'])
print(df)
输出
Name Age City
0 Alice 30 New York
1 Bob <NA> NaN
2 Charlie 35 Chicago
假设有一个文件 data_skip.tsv
,内容如下:
# This is a comment line
Name Age City
Alice 30 New York
Bob 25 Los Angeles
Charlie 35 Chicago
使用 read_table
跳过注释行,并只读取 Name
和 City
两列:
import pandas as pd
# 读取文件,跳过第一行注释,并选择特定列
df = pd.read_table('data_skip.tsv', sep='\t', skiprows=1, usecols=['Name', 'City'])
print(df)
输出
Name City
0 Alice New York
1 Bob Los Angeles
2 Charlie Chicago
假设有一个文件 data_dates.tsv
,内容如下:
Name Birthdate
Alice 1990-01-01
Bob 1985-05-23
Charlie 1992-07-15
使用 read_table
读取并解析 Birthdate
列为日期类型:
import pandas as pd
# 读取文件,并解析 Birthdate 列为日期
df = pd.read_table('data_dates.tsv', sep='\t', parse_dates=['Birthdate'])
print(df)
print(df.dtypes)
输出
Name Birthdate
0 Alice 1990-01-01
1 Bob 1985-05-23
2 Charlie 1992-07-15
Name object
Birthdate datetime64[ns]
dtype: object
假设有一个文件 data_quotes.tsv
,内容如下:
Name Comment
Alice "Hello, World!"
Bob "Goodbye\tWorld"
Charlie "No comment"
使用 read_table
读取并正确处理引号和特殊字符:
import pandas as pd
# 读取包含引号和特殊字符的文件
df = pd.read_table('data_quotes.tsv', sep='\t', quotechar='"', escapechar='\\')
print(df)
输出
Name Comment
0 Alice Hello, World!
1 Bob Goodbye\tWorld
2 Charlie No comment
pandas.read_table()
是一个功能强大的函数,适用于读取各种以特定分隔符分隔的文本文件。通过灵活设置参数,可以处理不同格式和复杂度的数据文件。在实际数据分析过程中,掌握 read_table
的使用方法能够有效提升数据读取和预处理的效率。尽管 read_csv
更为常用,但在处理制表符分隔或其他特定分隔符的文件时,read_table
依然是一个不可或缺的工具。
更新时间:2024-10-10 08:21:48 标签:pandas python table