PythonCSV与Excel数据处理教程_批量读取与写入实战
技术百科
舞姬之光
发布时间:2025-12-31
浏览: 次 Python处理CSV和Excel需选对工具:CSV用csv模块更轻量,注意编码和分隔符;Excel分析用pandas,读样式/合并单元格用openpyxl;读写时注意索引、编码、空值、千分位等细节。
用 Python 处理 CSV 和 Excel 文件,核心在于选对工具、搞清格式差异、避免常见坑。pandas 是主力,但 openpyxl 和 csv 模块在特定场景下更轻量、更可控。
CSV 批量读取:用 csv 模块更稳,尤其处理大文件或特殊编码
当文件不含公式、不需样式、行数超 10 万,csv 模块比 pandas.read_csv 更省内存、更快启动。关键注意编码(如 GBK 中文 Windows 默认)和分隔符(逗号、制表符、分号都可能)。
- 统一用 with open(..., encoding='utf-8-sig') 开头,自动跳过 BOM;中文 Windows 文件常用 encoding='gbk'
- 用 csv.reader 逐行读,或 csv.DictReader 按列名映射,避免手动切分字符串出错
- 批量读多个 CSV?用 pathlib.Path('data/').glob('*.csv') 获取路径列表,循环处理,比 os.listdir 更简洁安全
Excel 批量读取:pandas 适合分析,openpyxl 适合读样式或单元格值
pandas.read_excel() 默认调用 openpyxl(.xlsx)或 xlrd(旧版 .xls),但 xlrd 从 2.0 版起已不支持 .xlsx。现在统一推荐 openpyxl 引擎,尤其要读合并单元格、批注或指定 sheet 时。
- 读多个 Excel:用 pd.concat([pd.read_excel(f, engine='openpyxl') for f in files], ignore_index=True) 合并成一张表
- 若某列是日期却读成字符串,加参数 parse_dates=['date_col'];数值带千分位(如 "1,234"),先用 thousands=','
- 只读某个 sheet 的某块区域?openpyxl 可直接定位:ws['A1:C10'] 返回单元格对象,再取 .value
批量写入 CSV:用 pandas.to_csv 最省心,但注意 index 和 encoding
to_csv 默认保存索引列,导出后多一列“Unnamed: 0”?加 index=False。Windows 打开乱码?不是 UTF-8 就是编码没声明——用 encoding='utf-8-sig'(加 BOM)或 encoding='gbk'。
- 写入前检查缺失值:pandas 默认把 NaN 写成 nan 字符串,想留空用 na_rep=''
- 字段含逗号、换行符?quoting=csv.QUOTE_ALL 强制加双引号,防止 CSV 结构错乱
- 追加写入(不覆盖)?用 mode='a' + header=False(第二次起不写列名)
批量写入 Excel:openpyxl 支持追加、样式、多 sheet,pandas.to_excel 适合单表快写
pandas.to_excel 简单表一键落地;但要往已有 Excel 追加 sheet、写入特定位置、加粗标题、设置列宽?必须切到 openpyxl。
- 追加 sheet:用 openpyxl.load_workbook('out.xlsx') 打开,wb.create_sheet('new_data'),再循环写入
- 写入整张 DataFrame:用 openpyxl.utils.dataframe.dataframe_to_rows(df, index=False, header=True) 转为行数据,再逐行赋值给 ws.append()
- 设置列宽:循环 for col in ['A', 'B', 'C']: ws.column_dimensions[col].width = 15
不复杂但容易忽略:CSV 和 Excel 的默认行为不同,比如空值表示、日期识别、数字格式。动手前先用 head 或 Excel 打开看一眼原始结构,比硬写十行代码更省时间。
# excel
# python
# windows
# app
# 工具
# win
# 编码
# csv
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- VSC怎么在PHP中调试MySQL_数据库交互排查
- Python与OpenAI接口集成实战_生成式AI
- Win11怎么清理C盘下载文件夹_Win11清理下
- windows 10应用商店区域怎么改_windo
- 如何在Golang中理解指针比较_Golang地址
- Win11输入法切换快捷键怎么改_Windows
- Win11怎么格式化U盘_Win11系统U盘格式化
- MAC如何快速搜索大文件_MAC磁盘空间分析与冗余
- Python网络日志追踪_请求定位解析【教程】
- 如何在 Go 项目开发中正确处理本地包导入与远程模
- c++ try_emplace用法_c++ map
- 如何在Golang中优化文件读写性能_使用缓冲和并
- Python字符串操作教程_切片拼接与格式化详解
- Go 语言标准库为何不提供泛型切片的 Contai
- Win11怎么更改系统语言为中文_Windows1
- Win11用户账户控制怎么关_Win11关闭UAC
- C++如何使用std::async进行异步编程?(
- Go 中实现 Python urllib.quot
- Windows如何查看和管理已安装的字体?(字体文
- Python日志系统设计与实现_高可观测性架构实战
- c++ atoi和atof函数用法_c++字符数组
- 一文详解网站被黑客入侵挂马解决办法
- Win10怎样设置闹钟贪睡时间 Win10闹钟贪睡
- php后缀怎么变mp4能播放_让php伪装mp4正
- Win11怎么修复系统文件_使用sfc命令修复Wi
- 如何在 Go 开发中正确处理本地包导入与远程模块路
- 如何使用正则表达式提取以编号开头、后接多个注解的逻
- Win11怎么关闭任务栏小组件_Windows11
- c++如何使用std::bind绑定函数参数_c+
- Win10怎样清理C盘浏览器缓存_Win10清理浏
- c++输入输出流 c++ cin与cout格式化输
- MAC怎么解压RAR格式文件_MAC第三方解压工具
- 如何在Golang中编写异步函数测试_Golang
- Win11怎么关闭通知中心_Windows11系统
- Win11怎么连接蓝牙耳机_Win11蓝牙设备配对
- 如何使用Golang开发基础文件下载功能_Gola
- Python爬虫项目实战教程_Scrapy抓取与存
- Win11如何设置文件权限 Win11 NTFS文
- Mac如何解压zip和rar文件?(推荐免费工具)
- Win11怎么关闭自动调节亮度_Windows11
- Python并发安全问题_资源竞争说明【指导】
- c++23 std::expected怎么用 c+
- Win11任务栏颜色怎么改_Win11自定义任务栏
- Win11如何更新显卡驱动 Win11检查和安装设
- C#怎么使用委托和事件 C# delegate与e
- Win10怎样卸载TeamViewer_Win10
- LINUX怎么设置系统语言_LINUX修改中文环境
- 如何在 Go 中判断变量是否为函数类型
- Win11怎么硬盘分区 Win11新建磁盘分区详细
- php8.4新语法match怎么用_php8.4m

QQ客服