处理Excel文件是数据分析师日常工作中的常见任务之一。
幸运的是,Python的Pandas库提供了一套强大的工具,使得读取、处理和写入Excel文件变得既清晰又快捷。
在本篇博客中,我们将探讨如何使用Pandas的 read_excel
方法来读取Excel文件,以及如何遍历和修改DataFrame中的数据。
安装
openpyxl是因为pandas读完excel需要。
pip install openpyxl
pip install pandas
读取
导入Pandas库,并使用 read_excel
方法来读取Excel文件。需要注意的是,对于 .xlsx
文件,我们需要指定 engine='openpyxl'(默认xlrd)
,因为Pandas需要一个额外的库来处理这种格式的文件。
字段格式的锁定可以使用 dtype,
锁定sheet可以使用 sheet_name。
import pandas as pddf_map = pd.read_excel(io="excels/xxx.xlsx",engine='openpyxl')
# len(df_map) # 读取df的行数据# 有时,excel里的字符串型数字,在read_excel读取时可能会被识别成int整型,这时候可以设置dtype:
df_map = pd.read_excel(io="excels/xxx.xlsx",dtype={'列字段A': str},engine='openpyxl'
)# 锁定sheet有两种方式,比如第二个sheet名称为sheet2
#(1)索引式,索引从零开始
df_map = pd.read_excel(io="excels/xxx.xlsx",engine='openpyxl',sheet_name=1
)
#(2)直接sheet名称(推荐)
df_map = pd.read_excel(io="excels/xxx.xlsx",engine='openpyxl',sheet_name='sheet2'
)
遍历DataFrame
Pandas的DataFrame对象提供了 iterrows()
方法,允许我们遍历DataFrame中的每一行。在遍历过程中,index
代表行索引,而 row
代表行内容。
for index, row in df_map_kpi.iterrows():if not pd.isnull(row["列字段A"]): # isnull判断是否为空,不能直接用Python对象判空形式print(row["列字段A"]) else:df_map.at[index, "列字段A"] = "A" # 修改改行某行数据
例子中,检查了 "列字段A" 是否为空。如果不为空,打印出该值;如果为空,我们将其设置为 "A"(还未实际生效)。
同时判断多列是否同时都为空或有一个为空。
row_list = [row["列字段A"], row["列字段B"], row["列字段C"]]
# 是否全部为空
pd.isnull(row_list).all()
# 是否有一个为空
pd.isnull(row_list).any()
写回Excel文件
通常会设置 index=False
来防止将行索引写入文件
# 将修改后的DataFrame写回Excel文件(这里使修改生效)
df.to_excel('excels/xxx.xlsx', index=False)
Pandas是一个功能强大的数据处理工具,帮助高效地处理Excel文件。无论是读取数据、遍历DataFrame还是写入更改,Pandas都能提供简洁的解决方案。