【Pandas】读取、保存表格(.xls / .xlsm / .xlsx)文本(.csv / .txt)

Pandas读取文件

import pandas as pd

pandas读取文件的语法: pandas.read_xxx 、 xxx指的是文件的类型。

读取.csv文件

csv_DataFrame = pd.read_csv(
    filepath_or_buffer='./data.csv',  # 文件的路径 + 名称
    sep=',',  # 分隔符 ---默认就是 ','
    delimiter=',', # 分隔符,---sep 和 delimiter只需要指定一个即可!
    encoding='gbk',  # 文件的编码格式
    header=0,  # 列索引---默认infer(自动识别); 可以强制指定行下标 将该行作为列索引
    # header=[0,1],  # 也可以传入列表 指定多行作为列索引,在列表中指定行索引
    index_col=0,  # 行索引---默认为None(自动生成序号作为行索引);也可以指定列下标 将该列作为行索引
    # index_col=[0,"column"],  # 同也可以传入列表 指定多列作为行索引,在列表中指定列索引 或 列名称(可混用)
    usecols=[0, 1, 2],  # 指定要读取的列,可传入列索引 或 列名称(不可混用)
    names=['aaa','bbb','ccc'], # 设置新的列索引名称
    nrows=10,  # 读取指定的行数
    skiprows=100,  # 先略过前100行,然后再继续读取
    engine='python',  # 指定读取所用的引擎
)
print('csv_DataFrame:\n', type(csv_DataFrame))  # <class 'pandas.core.frame.DataFrame'>	读取的数据是DataFrame结构

读取表格文件(.xls .xlsm .xlsx)

读取单个Sheet(工作表)

detail = pd.read_excel(
    io='./data.xls',  # 文件的路径 + 名称
    sheet_name=0,  # 表示读取第0个sheet,默认为0
    header=0,  # 以第0行作为列索引 可以参考csv
    # names=[....],  # 给数据起新的列索引 可以参考csv
    # index_col=[...],  # 以指定的列作为行索引 可以参考csv
    # …………
    # 其他参数 可以参考csv理解!
)
print('detail:\n', type(detail))	#  <class 'pandas.core.frame.DataFrame'>

读取多个Sheet

# 读取excel中指定的 sheet
fp = pd.read_excel(
    io='./data.xls',
    sheet_name=[0,1],  # 传入列表,指定Sheet索引
)
print('fp的类型:', type(fp))  # <class 'dict'> 	--字典,Key为Sheet的索引(与sheet_name相同),Value为DataFrame
# 获取所有的 key:可使用 detail.keys()输出所有Key
print('fp中所有的key:', fp.keys())	# dict_keys([0, 1])
# 分别获取 数据
detail1 = fp[0]
detail2 = fp[1]



# 一次读取excel中所有的 sheet
fp = pd.read_excel(
    io='./data.xls',
    sheet_name=None,  # 如果给None,则表示读取所有的sheet
)
print('fp的类型:', type(fp))  # <class 'collections.OrderedDict'> ---类字典, Key为Sheet名称,Value为DataFrame
# 获取所有的 key:可使用 detail.keys()输出所有Key
print('fp中所有的key:', fp.keys())	# dict_keys(['Sheet1', 'Sheet2'])
# 分别获取 数据
detail1 = fp['Sheet1']
detail2 = fp['Sheet2']

Pandas保存文件

保存为.csv文件

csv_DataFrame.to_csv(
    path_or_buf='./data.csv',  # 保存的路径 及名称
    sep=',',  # 分隔符
    columns=['aaa'],  # 指定要保存的列,必须用列名称,默认为None(保存全部)
    header=True,  # 是否保存列索引,默认为True
    index=False,  # 是否保存行索引,默认为True
    mode="w",  # 保存的模式--默认是写模式(w)--覆盖之前的! ---a 追加模式
)

保存为表格文件

保存一个Sheet

detail.to_excel(
    excel_writer='./data/aaa.xls',  # 可以是文件的路径+名称  或者是 excel_writer对象
    sheet_name="SheetName",  # 保存的sheet的名称
    header=True,
    index=False,
    # columns=[....],  # 指定要保存的列
)

直接保存—只能保存一个sheet,后续的会将前面的覆盖掉!

保存多个Sheet

如果想要在一个excel中保存多个sheet的数据 —需要借助 excel_writer对象

# 1、生成 excel_writer对象
writer = pd.ExcelWriter(
    path='./data.xls',
)
# 2、将数据写入 excel_writer对象
detail1.to_excel(
    excel_writer=writer,
    sheet_name='sheet1'
)
detail2.to_excel(
    excel_writer=writer,
    sheet_name='sheet2'
)
# 3、进行保存 excel_writer对象
writer.save()

# 4、关闭excel_writer对象
writer.close()
  • 2
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胡桃の壶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值