Pandas 文件读取与保存指南:高效处理 CSV、Excel 等多种格式数据
本文详细介绍了如何使用 Pandas 的 IO 工具从各种常见文件格式(如 CSV、Excel、HTML、TXT 等)中读取和保存数据。通过 Pandas,用户可以轻松读取和修改数据,并支持将处理后的数据保存为多种格式,如 Excel 和 CSV。文章不仅涵盖了基本的文件操作,还展示了如何使用自定义分隔符读取特殊文本文件、从网页读取表格数据,以及从剪贴板读取内容的功能。Pandas 提供了强大的数据处理接口,让数据读取和保存变得更加高效和灵活,是数据分析工作中的得力助手。
文章目录
Pandas 提供了丰富的 IO 工具来读取和保存各种数据文件,如 Excel、CSV、HTML、JSON 等。以下是一些常用的读取方法示例。
一 主要 IO 工具
注:Pandas 的 IO 工具支持多种格式,包括 CSV、Excel、JSON、XML、SQL、HTML、LaTeX 等,详细信息请参考 Pandas 官方文档。
二 Excel 文件读取与保存
读取 Excel 文件
import pandas as pd
df = pd.read_excel("data/体检数据.xlsx", index_col=0)
print(df)
如果缺少 openpyxl
库,可以通过以下命令安装
pip install openpyxl
修改数据并保存
df.loc[2, "体重"] = 1
df.to_excel("data/体检数据_修改.xlsx")
print(pd.read_excel("data/体检数据_修改.xlsx", index_col=0))
更多读取和保存 Excel 文件的参数,请参考 Pandas read_excel。
三 纯文本文件读取与保存
1 读取 CSV 文件
# 使用原生 Python 读取 CSV
with open("data/体检数据.csv", "r", encoding="utf-8") as f:
print(f.read())
# 使用 Pandas 读取 CSV
import pandas as pd
df_csv = pd.read_csv("data/体检数据.csv", index_col=0)
print(df_csv)
2 读取特殊分隔符文件
df_csv = pd.read_csv("data/体检数据_sep.csv", index_col=0, sep="=")
print(df_csv)
3 读取 TXT 文件
df_txt = pd.read_csv("data/体检数据_sep.txt", index_col=0, sep="=")
print(df_txt)
4 保存为 CSV 和 Excel 文件
df_txt.to_csv("data/体检数据_sep_修改.csv")
df_txt.to_excel("data/体检数据_sep_修改.xlsx")
四 其他功能
从剪贴板中读取数据:
df = pd.read_clipboard()
print(df)
从网页读取表格数据:
df_list = pd.read_html("https://mofanpy.com/tutorials/data-manipulation/pandas/read-save/")
print(df_list)
更多关于 Pandas 读取数据库、JSON 等文件的信息,详见 Pandas IO 文档。
五 完整代码示例
# This is a sample Python script.
# Press ⌃R to execute it or replace it with your code.
# Press Double ⇧ to search everywhere for classes, files, tool windows, actions, and settings.
import pandas as pd
def print_hi(name):
# Use a breakpoint in the code line below to debug your script.
print(f'Hi, {name}') # Press ⌘F8 to toggle the breakpoint.
# Excel文件
# pd.read_excel()
# df.to_excel()
# csv或txt等纯文本文件
# pd.read_csv()
# df.to_csv()
# 其他有趣的
# pd.read_clipboard()
# pd.read_html()
df = pd.read_excel("./data/体检数据.xlsx", index_col=0)
print(df)
df.loc[2, "体重"] = 1
print(df)
df.to_excel("data/体检数据_修改.xlsx")
print(pd.read_excel("data/体检数据_修改.xlsx", index_col=0))
# csv或txt等纯文本文件
# Python 打开文件
with open("data/体检数据.csv", "r", encoding="utf-8") as f:
print(f.read())
# Pandas 打开csv
df_csv = pd.read_csv("data/体检数据.csv", index_col=0)
print(df_csv)
# Pandas 打开特殊字符分隔的文件
with open("data/体检数据_sep.csv", "r", encoding="utf-8") as f:
print(f.read())
df_csv = pd.read_csv("data/体检数据_sep.csv", index_col=0, sep="=")
print(df_csv)
# 打开 txt 文件
with open("data/体检数据_sep.txt", "r", encoding="utf-8") as f:
print(f.read())
df_txt = pd.read_csv("data/体检数据_sep.txt", index_col=0, sep="=")
print(df_txt)
# 文本能保存为 csv 也能保存为 excel
df_txt.to_csv("data/体检数据_sep_修改.csv")
df_txt.to_excel("data/体检数据_sep_修改.xlsx")
print("读保存后的 csv")
print(pd.read_csv("data/体检数据_sep_修改.csv"))
print("读保存后的 xlsx")
print(pd.read_excel("data/体检数据_sep_修改.xlsx"))
# 有趣的功能:从剪切板中读数据
df = pd.read_clipboard()
print(df)
# Pandas 调取解析网页当中的表格数据
df = pd.read_html("https://mofanpy.com/tutorials/data-manipulation/pandas/read-save/")
print(df)
# Pandas 读数据库,读 Json 官网:https://pandas.pydata.org/docs/reference/io.html
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
print_hi('从文件读取数据')
# See PyCharm help at https://www.jetbrains.com/help/pycharm/
复制粘贴并覆盖到你的 main.py 中运行,运行结果如下。
Hi, 从文件读取数据
姓名 身高 体重 肺活量
学号
1 小明 168 60 3200
2 小黄 187 80 3800
3 小花 170 70 3400
姓名 身高 体重 肺活量
学号
1 小明 168 60 3200
2 小黄 187 1 3800
3 小花 170 70 3400
姓名 身高 体重 肺活量
学号
1 小明 168 60 3200
2 小黄 187 1 3800
3 小花 170 70 3400
学号,姓名,身高,体重,肺活量
1,小明,168,60,3200
2,小黄,187,80,3800
3,小花,170,70,3400
姓名 身高 体重 肺活量
学号
1 小明 168 60 3200
2 小黄 187 80 3800
3 小花 170 70 3400
学号=姓名=身高=体重=肺活量
1=小明=168=60=3200
2=小黄=187=80=3800
3=小花=170=70=3400
姓名 身高 体重 肺活量
学号
1 小明 168 60 3200
2 小黄 187 80 3800
3 小花 170 70 3400
学号=姓名=身高=体重=肺活量
1=小明=168=60=3200
2=小黄=187=80=3800
3=小花=170=70=3400
姓名 身高 体重 肺活量
学号
1 小明 168 60 3200
2 小黄 187 80 3800
3 小花 170 70 3400
读保存后的 csv
学号 姓名 身高 体重 肺活量
0 1 小明 168 60 3200
1 2 小黄 187 80 3800
2 3 小花 170 70 3400
读保存后的 xlsx
学号 姓名 身高 体重 肺活量
0 1 小明 168 60 3200
1 2 小黄 187 80 3800
2 3 小花 170 70 3400
Empty DataFrame
Columns: [print(pd.read_excel("data/体检数据_sep_修改.xlsx"))]
Index: []
[ 学号 姓名 身高 体重 肺活量
0 1 小明 168 60 3200
1 2 小黄 187 80 3800
2 3 小花 170 70 3400]
六 源码地址
代码地址:
国内看 Gitee 之 pandas/从文件读取数据.py
国外看 GitHub 之 pandas/从文件读取数据.py
引用 莫烦 Python