看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注: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.DataFrameDataFrame 对象,便于后续的数据分析和处理。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