在数据科学和数据分析领域,pandas
是最常用的 Python 库之一。它提供了强大的数据结构和数据分析工具。read_csv()
是 pandas
中最常用的函数之一,用于从 CSV 文件中读取数据并将其转换为 DataFrame
。在这篇博客中,我们将详细介绍 read_csv()
的用法,并通过多个示例帮助你掌握这一函数。
🧑 博主简介:现任阿里巴巴嵌入式技术专家,15年工作经验,深耕嵌入式+人工智能领域,精通嵌入式领域开发、技术管理、简历招聘面试。CSDN优质创作者,提供产品测评、学习辅导、简历面试辅导、毕设辅导、项目开发、C/C++/Java/Python/Linux/AI等方面的服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:
gylzbk
)
💬 博主粉丝群介绍:① 群内高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。
@TOC
1️⃣ 基本用法
1.1 导入库
首先,我们需要导入 pandas
库:
import pandas as pd
1.2 读取CSV文件
使用 read_csv()
函数读取 CSV 文件,并将其转换为 DataFrame
:
df = pd.read_csv('example.csv')
print(df)
假设 example.csv
文件内容如下:
name,age,city
Alice,30,New York
Bob,25,Los Angeles
Charlie,35,Chicago
运行上述代码将输出:
name age city
0 Alice 30 New York
1 Bob 25 Los Angeles
2 Charlie 35 Chicago
2️⃣ 常用参数
2.1 sep
:指定分隔符
默认情况下,read_csv()
使用逗号作为分隔符。如果你的文件使用其他分隔符(例如制表符),可以使用 sep
参数:
df = pd.read_csv('example.tsv', sep='\t')
print(df)
2.2 header
:指定表头行
默认情况下,read_csv()
将第一行作为表头。如果你的文件没有表头,或者表头在其他行,可以使用 header
参数:
df = pd.read_csv('example.csv', header=1) # 表头在第二行
print(df)
2.3 names
:指定列名
如果你的文件没有表头,可以使用 names
参数指定列名:
df = pd.read_csv('example_no_header.csv', names=['name', 'age', 'city'])
print(df)
2.4 index_col
:指定索引列
默认情况下,read_csv()
使用默认整数索引。如果你希望某一列作为索引,可以使用 index_col
参数:
df = pd.read_csv('example.csv', index_col='name')
print(df)
2.5 usecols
:指定读取的列
如果你只需要读取部分列,可以使用 usecols
参数:
df = pd.read_csv('example.csv', usecols=['name', 'city'])
print(df)
2.6 dtype
:指定列的数据类型
可以使用 dtype
参数指定列的数据类型:
df = pd.read_csv('example.csv', dtype={'age': 'float'})
print(df)
2.7 parse_dates
:解析日期
如果某列包含日期,可以使用 parse_dates
参数将其解析为日期类型:
df = pd.read_csv('example_with_dates.csv', parse_dates=['birthday'])
print(df)
3️⃣ 高级用法
3.1 na_values
:处理缺失值
可以使用 na_values
参数指定哪些值应视为缺失值:
df = pd.read_csv('example_with_na.csv', na_values=['NA', 'N/A', '-'])
print(df)
3.2 skiprows
:跳过行
可以使用 skiprows
参数跳过文件的某些行:
df = pd.read_csv('example.csv', skiprows=2) # 跳过前两行
print(df)
3.3 nrows
:读取指定行数
可以使用 nrows
参数指定读取的行数:
df = pd.read_csv('example.csv', nrows=2) # 只读取前两行
print(df)
3.4 chunksize
:分块读取
对于大文件,可以使用 chunksize
参数分块读取:
chunk_size = 2
chunks = pd.read_csv('example.csv', chunksize=chunk_size)
for chunk in chunks:
print(chunk)
3.5 encoding
:指定文件编码
如果文件使用非默认编码,可以使用 encoding
参数指定编码:
df = pd.read_csv('example.csv', encoding='utf-8')
print(df)
4️⃣ 实战示例
示例一:读取包含日期的CSV文件
假设我们有一个包含日期的 CSV 文件 example_with_dates.csv
,内容如下:
name,age,birthday,city
Alice,30,1990-01-01,New York
Bob,25,1995-05-15,Los Angeles
Charlie,35,1985-08-20,Chicago
我们希望将 birthday
列解析为日期类型,并将 name
列作为索引:
import pandas as pd
# 读取CSV文件并解析日期
df = pd.read_csv('example_with_dates.csv', parse_dates=['birthday'], index_col='name')
print(df)
运行上述代码将输出:
age birthday city
name
Alice 30 1990-01-01 New York
Bob 25 1995-05-15 Los Angeles
Charlie 35 1985-08-20 Chicago
示例二:处理缺失值和指定数据类型
假设我们有一个 CSV 文件 example_with_na.csv
,内容如下:
name,age,city
Alice,30,New York
Bob,NA,Los Angeles
Charlie,35,NA
我们希望将 NA
视为缺失值,并将 age
列解析为浮点数:
import pandas as pd
# 读取CSV文件并处理缺失值
df = pd.read_csv('example_with_na.csv', na_values=['NA'], dtype={'age': 'float'})
print(df)
运行上述代码将输出:
name age city
0 Alice 30.0 New York
1 Bob NaN Los Angeles
2 Charlie 35.0 NaN
示例三:分块读取大文件
假设我们有一个非常大的 CSV 文件 large_example.csv
,我们希望分块读取并处理每个块:
import pandas as pd
# 分块读取CSV文件
chunk_size = 2
chunks = pd.read_csv('large_example.csv', chunksize=chunk_size)
for chunk in chunks:
print(chunk)
假设 large_example.csv
文件内容如下:
name,age,city
Alice,30,New York
Bob,25,Los Angeles
Charlie,35,Chicago
David,40,Houston
Eve,28,San Francisco
运行上述代码将输出:
name age city
0 Alice 30 New York
1 Bob 25 Los Angeles
name age city
2 Charlie 35 Chicago
3 David 40 Houston
name age city
4 Eve 28 San Francisco
示例四:跳过行和指定读取行数
假设我们有一个 CSV 文件 example.csv
,内容如下:
name,age,city
Alice,30,New York
Bob,25,Los Angeles
Charlie,35,Chicago
David,40,Houston
Eve,28,San Francisco
我们希望跳过前两行,并只读取接下来的两行:
import pandas as pd
# 跳过前两行,并只读取接下来的两行
df = pd.read_csv('example.csv', skiprows=2, nrows=2)
print(df)
运行上述代码将输出:
Charlie 35 Chicago
0 David 40 Houston
示例五:指定列名和使用特定列
假设我们有一个没有表头的 CSV 文件 example_no_header.csv
,内容如下:
Alice,30,New York
Bob,25,Los Angeles
Charlie,35,Chicago
我们希望指定列名,并只读取 name
和 city
列:
import pandas as pd
# 读取CSV文件并指定列名
df = pd.read_csv('example_no_header.csv', names=['name', 'age', 'city'], usecols=['name', 'city'])
print(df)
运行上述代码将输出:
name city
0 Alice New York
1 Bob Los Angeles
2 Charlie Chicago
5️⃣ 总结
通过这篇博客,我们详细介绍了 pandas
库中 read_csv()
函数的用法。read_csv()
是一个功能强大的工具,能够满足各种复杂的 CSV 文件读取需求。以下是我们讨论的主要内容:
5.1 基本用法
- 导入
pandas
库。 - 使用
read_csv()
函数读取 CSV 文件并转换为DataFrame
。
5.2 常用参数
sep
:指定分隔符。header
:指定表头行。names
:指定列名。index_col
:指定索引列。usecols
:指定读取的列。dtype
:指定列的数据类型。parse_dates
:解析日期。
5.3 高级用法
na_values
:处理缺失值。skiprows
:跳过行。nrows
:读取指定行数。chunksize
:分块读取。encoding
:指定文件编码。
5.4 实战示例
- 示例一:读取包含日期的 CSV 文件。
- 示例二:处理缺失值和指定数据类型。
- 示例三:分块读取大文件。
- 示例四:跳过行和指定读取行数。
- 示例五:指定列名和使用特定列。
通过这些示例,你应该能够灵活运用 read_csv()
函数来处理各种 CSV 文件。在实际工作中,掌握这些技巧可以大大提高数据处理的效率和准确性。
参考资料
pandas
库不仅提供了强大的 CSV 文件读取功能,还包括许多其他数据处理和分析工具。例如,数据过滤、分组、聚合、合并等功能。以下是一些推荐的学习资源: