【Python】pandas中的read
😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。
🤓 同时欢迎大家关注其他专栏,我将分享Web前后端开发、人工智能、机器学习、深度学习从0到1系列文章。
🌼 同时洲洲已经建立了程序员技术交流群,如果您感兴趣,可以私信我加入社群,可以直接vx联系(文末有名片)v:bdizztt
🖥 随时欢迎您跟我沟通,一起交流,一起成长、进步!点此也可获得联系方式~
本文目录
- 前言
- 一、read_excel()函数简介
- 1.1 基础语法
- 二、to_excel()函数简介
- 三、代码案例
- 读取并处理Excel数据
- 场景2:合并多个Excel工作表
- 写入格式化的Excel文件
- 四、read_excel()数据实战
- 函数原型
- sheetname
- header
- skiprows
- skip_footer
- index_col
- names
- 五、to_excel()数据实战
- excel_writer
- sheet_name
- na_rep
- colums
- header
- index
- 总结
前言
Pandas是Python中用于数据分析和操作的强大库,它提供了许多方便的函数来处理各种格式的数据。
Excel文件作为一种常见的数据存储格式,在数据处理中经常用到。
Pandas提供了read_excel()函数来读取Excel文件,以及to_excel()函数将数据写入Excel。
本文将详细解析这两个函数的用法,并通过代码示例展示它们在不同场景下的应用。
一、read_excel()函数简介
Pandas是一个开源的数据分析和操作库,它提供了快速、灵活和表达力强的数据结构,旨在使数据清洗和分析工作变得更加简单易行。Pandas是基于NumPy构建的,因此可以与NumPy无缝集成。
read_excel()函数用于读取Excel文件并将其转换为Pandas的DataFrame对象。这是处理Excel数据的基础。
1.1 基础语法
pandas.read_excel(io, sheet_name=0, header=0, names=None, index_col=None, usecols=None, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skiprows=None, nrows=None, na_values=None, keep_default_na=True, verbose=True, parse_dates=False, date_parser=None, thousands=None, comment=None, skipfooter=0, convert_float=True, mangle_dupe_cols=True, **kwds)
常用的参数说明:
io : string, path object ; excel 路径。 sheetname : string, int, mixed list of strings/ints, or None, default 0 返回多表使用sheetname=[0,1],若sheetname=None是返回全表 注意:int/string 返回的是dataframe,而none和list返回的是dict of dataframe header : int, list of ints, default 0 指定列名行,默认0,即取第一行,数据为列名行以下的数据 若数据不含列名,则设定 header = None skiprows : list-like,Rows to skip at the beginning,省略指定行数的数据 skip_footer : int,default 0, 省略从尾部数的int行数据 index_col : int, list of ints, default None指定列为索引列,也可以使用u”strings” names : array-like, default None, 指定列的名字。
示例代码
import pandas as pd # 读取Excel文件 df = pd.read_excel('path_to_your_excel_file.xlsx') # 只读取特定的列 df = pd.read_excel('path_to_your_excel_file.xlsx', usecols=['Column1', 'Column2'])二、to_excel()函数简介
to_excel()函数用于将DataFrame对象写入Excel文件。你可以控制输出的格式、工作表名称等。
基础语法
DataFrame.to_excel(io, excel_writer, sheet_name='Sheet1', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, merge_cells=True, encoding=None, inf_rep='inf', verbose=True, freeze_panes=None, storage_options=None)
常用的参数说明:
io: Excel文件的路径或文件对象。 sheet_name: 写入的工作表名称。 na_rep: 缺失值的表示方式,默认为空字符串。 columns: 指定要写入的列。 header: 是否写入列名。 index: 是否写入索引。
示例代码
# 将DataFrame写入Excel文件 df.to_excel('output_excel_file.xlsx', sheet_name='Sheet1') # 只写入特定的列 df.to_excel('output_excel_file.xlsx', columns=['Column1', 'Column2'])三、代码案例
读取并处理Excel数据
# 读取Excel文件 df = pd.read_excel('data.xlsx') # 数据清洗:去除重复记录 df = df.drop_duplicates() # 将处理后的数据写回Excel df.to_excel('cleaned_data.xlsx')场景2:合并多个Excel工作表
# 读取Excel文件中的所有工作表 xls = pd.ExcelFile('multi_sheets.xlsx') # 遍历工作表并读取数据 dfs = {sheet: xls.parse(sheet) for sheet in xls.sheet_names} # 合并所有工作表的数据 combined_df = pd.concat(dfs.values(), ignore_index=True) # 将合并后的数据写入新的Excel文件 combined_df.to_excel('combined_data.xlsx', index=False)写入格式化的Excel文件
# 写入Excel文件,指定列名和不写入索引 df.to_excel('formatted_data.xlsx', index=False, header=True, columns=['Column1', 'Column2']) # 使用ExcelWriter来设置工作表的格式 with pd.ExcelWriter('styled_data.xlsx', engine='xlsxwriter') as writer: df.to_excel(writer, sheet_name='Sheet1', startrow=2, startcol=3, index=False) workbook = writer.book worksheet = writer.sheets['Sheet1'] worksheet.set_column('A:D', 15) # 设置列宽四、read_excel()数据实战
假设我们拥有数据源如下:
sheet1: ID NUM-1 NUM-2 NUM-3 36901 142 168 661 36902 78 521 602 36903 144 600 521 36904 95 457 468 36905 69 596 695 sheet2: ID NUM-1 NUM-2 NUM-3 36906 190 527 691 36907 101 403 470
函数原型
basestation ="F://pythonBook_PyPDAM/data/test.xls" data = pd.read_excel(basestation) print data
输出一个dataframe
ID NUM-1 NUM-2 NUM-3 0 36901 142 168 661 1 36902 78 521 602 2 36903 144 600 521 3 36904 95 457 468 4 36905 69 596 695
sheetname
sheetname参数:返回多表使用sheetname=[0,1],若sheetname=None是返回全表
注意:int/string 返回的是dataframe,而none和list返回的是dict of dataframe
data_1 = pd.read_excel(basestation,sheetname=[0,1]) print data_1 print type(data_1)
输出:dict of dataframe
OrderedDict([(0, ID NUM-1 NUM-2 NUM-3 0 36901 142 168 661 1 36902 78 521 602 2 36903 144 600 521 3 36904 95 457 468 4 36905 69 596 695), (1, ID NUM-1 NUM-2 NUM-3 0 36906 190 527 691 1 36907 101 403 470)])
header
指定列名行,默认0,即取第一行,数据为列名行以下的数据 若数据不含列名,则设定 header = None ,注意这里还有列名的一行。
data = pd.read_excel(basestation,header=None) print data 输出: 0 1 2 3 0 ID NUM-1 NUM-2 NUM-3 1 36901 142 168 661 2 36902 78 521 602 3 36903 144 600 521 4 36904 95 457 468 5 36905 69 596 695 data = pd.read_excel(basestation,header=[3]) print data 输出: 36903 144 600 521 0 36904 95 457 468 1 36905 69 596 695skiprows
省略指定行数的数据
data = pd.read_excel(basestation,skiprows = [1]) print data 输出: ID NUM-1 NUM-2 NUM-3 0 36902 78 521 602 1 36903 144 600 521 2 36904 95 457 468 3 36905 69 596 695skip_footer
省略从尾部数的int行的数据
data = pd.read_excel(basestation, skip_footer=3) print data 输出: ID NUM-1 NUM-2 NUM-3 0 36901 142 168 661 1 36902 78 521 602index_col
指定列为索引列,也可以使用u”strings”
data = pd.read_excel(basestation, index_col="NUM-3") print data 输出: ID NUM-1 NUM-2 NUM-3 661 36901 142 168 602 36902 78 521 521 36903 144 600 468 36904 95 457 695 36905 69 596names
指定列的名字。
data = pd.read_excel(basestation,names=["a","b","c","e"]) print data a b c e 0 36901 142 168 661 1 36902 78 521 602 2 36903 144 600 521 3 36904 95 457 468 4 36905 69 596 695五、to_excel()数据实战
数据源
ID NUM-1 NUM-2 NUM-3 0 36901 142 168 661 1 36902 78 521 602 2 36903 144 600 521 3 36904 95 457 468 4 36905 69 596 695 5 36906 165 453 加载数据: basestation ="F://python/data/test.xls" basestation_end ="F://python/data/test_end.xls" data = pd.read_excel(basestation)
excel_writer
参数excel_writer,输出路径。
data.to_excel(basestation_end) 输出: ID NUM-1 NUM-2 NUM-3 0 36901 142 168 661 1 36902 78 521 602 2 36903 144 600 521 3 36904 95 457 468 4 36905 69 596 695 5 36906 165 453sheet_name
将数据存储在excel的那个sheet页面。
data.to_excel(basestation_end,sheet_name="sheet2")
na_rep
缺失值填充
data.to_excel(basestation_end,na_rep="NULL") 输出: ID NUM-1 NUM-2 NUM-3 0 36901 142 168 661 1 36902 78 521 602 2 36903 144 600 521 3 36904 95 457 468 4 36905 69 596 695 5 36906 165 453 NULLcolums
sequence, optional,Columns to write 选择输出的的列。
data.to_excel(basestation_end,columns=["ID"]) 输出 ID 0 36901 1 36902 2 36903 3 36904 4 36905 5 36906header
boolean or list of string,默认为True,可以用list命名列的名字。header = False 则不输出题头。
data.to_excel(basestation_end,header=["a","b","c","d"]) 输出: a b c d 0 36901 142 168 661 1 36902 78 521 602 2 36903 144 600 521 3 36904 95 457 468 4 36905 69 596 695 5 36906 165 453 data.to_excel(basestation_end,header=False,columns=["ID"]) header = False 则不输出题头 输出: 0 36901 1 36902 2 36903 3 36904 4 36905 5 36906index
index:boolean, default True Write row names (index)
默认为True,显示index,当index=False 则不显示行索引(名字)。
index_label : string or sequence, default None 设置索引列的列名。
data.to_excel(basestation_end,index=False) 输出: ID NUM-1 NUM-2 NUM-3 36901 142 168 661 36902 78 521 602 36903 144 600 521 36904 95 457 468 36905 69 596 695 36906 165 453 data.to_excel(basestation_end,index_label=["f"]) 输出: f ID NUM-1 NUM-2 NUM-3 0 36901 142 168 661 1 36902 78 521 602 2 36903 144 600 521 3 36904 95 457 468 4 36905 69 596 695 5 36906 165 453
总结
📝Hello,各位看官老爷们好,我已经建立了CSDN技术交流群,如果你很感兴趣,可以私信我加入我的社群。
📝社群中不定时会有很多活动,例如每周都会包邮免费送一些技术书籍及精美礼品、学习资料分享、大厂面经分享、技术讨论谈等等。
📝社群方向很多,相关领域有Web全栈(前后端)、人工智能、机器学习、自媒体副业交流、前沿科技文章分享、论文精读等等。
📝不管你是多新手的小白,都欢迎你加入社群中讨论、聊天、分享,加速助力你成为下一个大佬!
📝想都是问题,做都是答案!行动起来吧!欢迎评论区or后台与我沟通交流,也欢迎您点击下方的链接直接加入到我的交流社群!~ 跳转链接社区~


