Python中如何处理Excel文件的问题
如何实现单元格的对角线格式? 单元格有个属性是对角线,也就是在单元格中插入一条对角线,请问用 python 怎么实现
Python中如何处理Excel文件的问题
3 回复
Python处理Excel文件主要用pandas和openpyxl/xlrd这几个库。pandas是主力,openpyxl处理.xlsx,xlrd处理老格式.xls。
1. 基础读写:
import pandas as pd
# 读取Excel
df = pd.read_excel('文件.xlsx', sheet_name='Sheet1') # sheet_name可以是名称或索引
# 查看数据
print(df.head()) # 前几行
print(df.columns) # 列名
# 写入Excel
df.to_excel('新文件.xlsx', index=False) # index=False不保存行索引
2. 处理多个sheet:
# 读取所有sheet
excel_file = pd.ExcelFile('文件.xlsx')
sheet_names = excel_file.sheet_names # 获取所有sheet名
# 读取特定sheet
df_dict = pd.read_excel('文件.xlsx', sheet_name=None) # 返回字典,key是sheet名
df_sheet1 = df_dict['Sheet1']
# 写入多个sheet
with pd.ExcelWriter('输出.xlsx') as writer:
df1.to_excel(writer, sheet_name='Sheet1', index=False)
df2.to_excel(writer, sheet_name='Sheet2', index=False)
3. 常见操作:
# 选择列
df['列名'] # 单列
df[['列1', '列2']] # 多列
# 筛选行
df[df['列名'] > 100] # 条件筛选
df.iloc[0:10] # 按位置选择
# 修改数据
df['新列'] = df['列1'] + df['列2'] # 新增列
df.loc[df['列名'] > 100, '目标列'] = 新值 # 条件修改
# 处理空值
df.dropna() # 删除含空值的行
df.fillna(0) # 填充空值为0
4. 格式处理(用openpyxl):
from openpyxl import load_workbook
from openpyxl.styles import Font, Alignment
wb = load_workbook('文件.xlsx')
ws = wb.active
# 设置字体
ws['A1'].font = Font(bold=True, size=12)
# 设置对齐
ws['A1'].alignment = Alignment(horizontal='center')
# 设置列宽
ws.column_dimensions['A'].width = 20
wb.save('新文件.xlsx')
5. 大数据处理技巧:
# 分块读取大文件
chunk_size = 10000
chunks = pd.read_excel('大文件.xlsx', chunksize=chunk_size)
for chunk in chunks:
# 处理每个数据块
process(chunk)
# 只读取需要的列(减少内存)
df = pd.read_excel('文件.xlsx', usecols=['列1', '列2'])
6. 常见问题解决:
# 编码问题
df = pd.read_excel('文件.xlsx', engine='openpyxl') # 明确指定引擎
# 日期格式
df['日期列'] = pd.to_datetime(df['日期列'], errors='coerce')
# 去重
df.drop_duplicates(inplace=True)
# 类型转换
df['数值列'] = pd.to_numeric(df['数值列'], errors='coerce')
简单总结:pandas做数据处理,openpyxl搞格式,按需选工具。


