教你用Python实现Excel表格处理

 更新时间:2021年05月19日 08:57:51   作者:董可伦  
今天教各位小伙伴怎么用Python处理excel,文中有非常详细的代码示例及相关知识总结,对正在学习python的小伙伴们很有帮助,需要的朋友可以参考下

一、文件

一个测试有两个sheet页的Excel测试文件 test.xlsx

二、代码

import pandas as pd

file1 = pd.ExcelFile('D:\\data\\py\\test.xlsx')
file2 = pd.read_excel('D:\\data\\py\\test.xlsx')
print(file)
<pandas.io.excel._base.ExcelFile object at 0x0000021DE525DF88>
-----------------分割线---------------------
   姓名  年龄 性别  住址
0  张三   7  男 NaN
1  李四   6  男 NaN
2  王芳   6  女 NaN

三、分析

pd.read_excel读出来是一个dataframe可以直接打印出内容,但是只能读取一个sheet页,默认第一个sheet页

@Appender(_read_excel_doc)
@deprecate_kwarg("skip_footer", "skipfooter")
def read_excel(
    io,
    sheet_name=0,
    header=0,
    names=None,
    index_col=None,
    usecols=None,
    squeeze=False,
    dtype=None,
    engine=None,
    converters=None,
    true_values=None,
    false_values=None,
    skiprows=None,
    nrows=None,
    na_values=None,
    keep_default_na=True,
    verbose=False,
    parse_dates=False,
    date_parser=None,
    thousands=None,
    comment=None,
    skip_footer=0,
    skipfooter=0,
    convert_float=True,
    mangle_dupe_cols=True,
    **kwds
):

    for arg in ("sheet", "sheetname", "parse_cols"):
        if arg in kwds:
            raise TypeError(
                "read_excel() got an unexpected keyword argument " "`{}`".format(arg)
            )

    if not isinstance(io, ExcelFile):
        io = ExcelFile(io, engine=engine)
    elif engine and engine != io.engine:
        raise ValueError(
            "Engine should not be specified when passing "
            "an ExcelFile - ExcelFile already has the engine set"
        )

    return io.parse(
        sheet_name=sheet_name,
        header=header,
        names=names,
        index_col=index_col,
        usecols=usecols,
        squeeze=squeeze,
        dtype=dtype,
        converters=converters,
        true_values=true_values,
        false_values=false_values,
        skiprows=skiprows,
        nrows=nrows,
        na_values=na_values,
        keep_default_na=keep_default_na,
        verbose=verbose,
        parse_dates=parse_dates,
        date_parser=date_parser,
        thousands=thousands,
        comment=comment,
        skipfooter=skipfooter,
        convert_float=convert_float,
        mangle_dupe_cols=mangle_dupe_cols,
        **kwds
    )

pd.ExcelFile 返回值是一个Excel对象,不能直接用,但是可以读取整个Excel内容

四、pd.ExcelFile

file = pd.ExcelFile('D:\\data\\py\\test.xlsx')

sheet页名称

print(file.sheet_names)
['一年级', '二年级']

遍历读取每个sheet页的内容

for name in file.sheet_names:
    _df = pd.read_excel(file,name)
    print(_df)
  姓名  年龄 性别  住址
0  张三   7  男 NaN
1  李四   6  男 NaN
2  王芳   6  女 NaN
   姓名  年龄 性别
0  李明   8  男
1  刘敏   8  女
2  张强   7  男

将两个sheet页的内容合并,并添加一列内容为sheet页名称

df_list=[]
for name in file.sheet_names:
    _df = pd.read_excel(file,name)
    _df['班级']=name
    df_list.append(_df)
df = pd.concat([_df for _df in df_list],sort=False)
print(df)
姓名  年龄 性别  住址   班级
0  张三   7  男 NaN  一年级
1  李四   6  男 NaN  一年级
2  王芳   6  女 NaN  一年级
0  李明   8  男 NaN  二年级
1  刘敏   8  女 NaN  二年级
2  张强   7  男 NaN  二年级

忽略掉原来的index

df = pd.concat([_df for _df in df_list],ignore_index=True,sort=False)
print(df)
姓名  年龄 性别  住址   班级
0  张三   7  男 NaN  一年级
1  李四   6  男 NaN  一年级
2  王芳   6  女 NaN  一年级
3  李明   8  男 NaN  二年级
4  刘敏   8  女 NaN  二年级
5  张强   7  男 NaN  二年级

修改列名为英文

df = df.rename(columns={'姓名': 'name', '年龄': 'age', '性别': 'sex', '住址': 'address', '班级': 'class'})
print(df)
name  age sex  address class
0   张三    7   男      NaN   一年级
1   李四    6   男      NaN   一年级
2   王芳    6   女      NaN   一年级
3   李明    8   男      NaN   二年级
4   刘敏    8   女      NaN   二年级
5   张强    7   男      NaN   二年级

将df保存为CSV、Excel文件

df.to_csv('../data/sheet合并.csv',index=False) 
df.to_excel('../data/sheet合并.xls',index=True) 

五、总结

可以发现Python读写Excel文件还是很方便的!

/python/blob/master/data/sheet%E5%90%88%E5%B9%B6.xls)

df.to_csv('../data/sheet合并.csv',index=False) 
df.to_excel('../data/sheet合并.xls',index=True) 

到此这篇关于教你用Python实现Excel表格处理的文章就介绍到这了,更多相关Python处理Excel内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • pandas groupby 分组取每组的前几行记录方法

    pandas groupby 分组取每组的前几行记录方法

    下面小编就为大家分享一篇pandas groupby 分组取每组的前几行记录方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • python try except 捕获所有异常的实例

    python try except 捕获所有异常的实例

    今天小编就为大家分享一篇python try except 捕获所有异常的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • Python cookbook(数据结构与算法)让字典保持有序的方法

    Python cookbook(数据结构与算法)让字典保持有序的方法

    这篇文章主要介绍了Python让字典保持有序的方法,涉及Python基于collections模块中的OrderedDict类实现控制字典顺序的相关操作技巧,需要的朋友可以参考下
    2018-02-02
  • 详解python连接telnet和ssh的两种方式

    详解python连接telnet和ssh的两种方式

    本文主要介绍了python连接telnet和ssh的两种方式,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • Python简单实现网页内容抓取功能示例

    Python简单实现网页内容抓取功能示例

    这篇文章主要介绍了Python简单实现网页内容抓取功能,结合实例形式分析了Python基于urllib模块的网页请求、内容读取等相关操作技巧,需要的朋友可以参考下
    2018-06-06
  • python数据分析近年比特币价格涨幅趋势分布

    python数据分析近年比特币价格涨幅趋势分布

    这篇文章主要为大家介绍了python分析近年来比特币价格涨幅趋势的数据分布,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-11-11
  • Python中列表遍历使用range和enumerate的区别讲解

    Python中列表遍历使用range和enumerate的区别讲解

    这篇文章主要介绍了Python中列表遍历使用range和enumerate的区别,在Python编程语言中,遍历list有range和enumerate方法,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • 详解Python中的变量及其命名和打印

    详解Python中的变量及其命名和打印

    这篇文章主要介绍了Python中的变量及其命名和打印,是Python入门学习中的基础知识,需要的朋友可以参考下
    2016-03-03
  • Python统计单词出现的次数

    Python统计单词出现的次数

    最近经理交给我一项任务,统计一个文件中每个单词出现的次数,列出出现频率最多的5个单词。本文给大家带来了python 统计单词次数的思路解析,需要的朋友参考下吧
    2018-04-04
  • 使用python获取(宜宾市地震信息)地震信息

    使用python获取(宜宾市地震信息)地震信息

    今天这个项目用到了Python的爬虫知识,没有用大家讨厌的正则表达式,而是用一种新的方式解析库,实现对HTML的解析和提取信息,最后又用到前面项目用过的wxpy库,实现了全部功能
    2019-06-06

最新评论