ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

10-Pandas导出Excel

10-Pandas导出Excel 数据分析完了总得有个产出——给老板看、给自己留档、做报告都需要一份规整的报表。这一篇教你把分析结果导出成专业的 Excel 文件把前面学的读取、清洗、分组、筛选全部串起来最后落地到一份漂漂亮亮的报表上。先补上CSV这课前面用过to_csv()df.to_csv(结果.csv,indexFalse,encodingutf-8-sig)CSV 纯文本、兼容性无敌但没有格式、不能分 Sheet、不能做透视表。自己存数据、给程序读够用要给人看、做报告、交老板还是 Excel 专业。最基础的导出一行代码importpandasaspd df.to_excel(销售报表.xlsx,indexFalse)前提是先装openpyxlPandas 底层靠它写 ExcelpipinstallopenpyxlindexFalse一定要加——不加的话导出的第一列是 0、1、2、3……的索引老板看了会问你这列啥意思。一个Excel放多张表一份报表往往不止一张表总览、明细、趋势用pd.ExcelWriterimportpandasaspd df_overviewpd.DataFrame({类别:[电子产品,服装,食品],销售额:[12500,8900,6700],订单数:[156,230,310]})df_monthlypd.DataFrame({月份:[1月,2月,3月],销售额:[28100,31200,29800]})withpd.ExcelWriter(销售报表.xlsx,engineopenpyxl)aswriter:df_overview.to_excel(writer,sheet_name总览,indexFalse)df_monthly.to_excel(writer,sheet_name月度趋势,indexFalse)用with把写入包起来每个 DataFrame 指定一个sheet_name。with 会自动保存关闭不用手动writer.save()。让报表看起来像那么回事表头加个颜色、列宽调一下、金额加货币符号瞬间就专业了。用openpyxl来做。表头加粗加背景色fromopenpyxlimportload_workbookfromopenpyxl.stylesimportFont,PatternFill,Alignment wbload_workbook(销售报表.xlsx)wswb[总览]header_fontFont(boldTrue,colorFFFFFF)header_fillPatternFill(start_color4472C4,end_color4472C4,fill_typesolid)centerAlignment(horizontalcenter,verticalcenter)forcellinws[1]:# 遍历第一行表头cell.fontheader_font cell.fillheader_fill cell.alignmentcenter wb.save(销售报表.xlsx)调整列宽ws.column_dimensions[A].width15ws.column_dimensions[B].width20想自动适配内容宽度就遍历每列找出最长内容按长度算个宽度最长内容 2 再乘 1.2。数字格式金额加货币符号forrowinrange(2,ws.max_row1):ws.cell(rowrow,column2).number_format¥#,##0.00¥#,##0.00 人民币符号 千分位 两位小数数字一下就财务报表起来了。透视表一行代码生成汇总报表做分析最常用的交叉汇总——按类别看每个月的销售情况pivot_table专门干这个importpandasaspd data{日期:[2026-01-05,2026-01-12,2026-01-20,2026-02-03,2026-02-15,2026-01-08,2026-01-22,2026-02-10,2026-02-25,2026-03-05],类别:[电子产品,服装,食品,电子产品,服装,食品,电子产品,服装,食品,电子产品],金额:[2999,299,89.5,3599,459,128.8,1899,369,156.2,4299]}dfpd.DataFrame(data)df[月份]pd.to_datetime(df[日期]).dt.month.astype(str)月pivotpd.pivot_table(df,values金额,# 用什么值汇总index类别,# 行columns月份,# 列aggfuncsum,# 聚合方式fill_value0# 空值填0)print(pivot)然后导出pivot.to_excel(销售透视表.xlsx)就是一份专业的交叉报表。aggfunc还能用meancountmax想同时看多个指标传列表aggfunc[sum,mean,count]。按类别分别生成文件给每个类别各出一份报表用循环importos dfpd.DataFrame({类别:[电子产品,服装,食品,电子产品,服装,食品],商品:[手机,T恤,零食,平板,裤子,饮料],金额:[2999,129,39.9,1999,259,5.5]})os.makedirs(分类报表,exist_okTrue)forcategory,groupindf.groupby(类别):filenamef分类报表/{category}销售明细.xlsxgroup.to_excel(filename,indexFalse)有多少个类别就生成多少个文件全自动。想加格式美化把 openpyxl 代码塞循环里就行。真实运行效果把上面的透视表、多 Sheet 导出和批量导出代码实际跑一遍终端输出长这样截图依次展示了 pivot_table 按类别交叉汇总的结果、一个 Excel 里三个 Sheet 的回读确认以及按类别批量生成的三个明细文件。格式怎么选一张表说清楚格式优点缺点适用场景CSV兼容性最好、文件小无格式、单表数据交换、给程序读Excel多Sheet、带格式文件稍大、需Excel给人看、做报告JSON结构化、程序易读人看不懂API交互、前后端传输Pickle保留Pandas类型二进制、人读不了Python内部快速存取简单记给人看 → Excel给程序读 → CSV 或 JSON自己临时存中间结果 → Pickle。这10篇下来你能搞定什么Python数据实战系列前10篇串一遍数据采集部分5篇requests入门、BeautifulSoup提取、表格抓取、CSV保存、爬虫工程化。Pandas分析部分5篇读取CSV、数据清洗、分组统计、筛选归类、结果导出。10篇学完完整的数据分析流程你已经跑通读取数据 → 清洗处理 → 分组分析 → 筛选挖掘 → 导出报表。从拿到一份原始数据到产出一份能交差的报表这条路自己走通了。接下来还会更新数据可视化——折线图看趋势、柱状图比高低、饼图看占比把数字变成图表说服力翻倍。几个常见的坑1. 导出的Excel是空的大概率忘了保存。优先用with语句手动创建的 ExcelWriter 记得writer.save()和writer.close()。2. 中文文件名乱码老版本环境偶发尽量用英文文件名或确保 Python 是 UTF-8 环境。3. 报 PermissionError 文件被占用十有八九是你把 Excel 开着先关掉再跑代码。4. 数字导出来是文本格式左上角小三角df.dtypes看是不是 object 类型先转数值df[金额]pd.to_numeric(df[金额],errorscoerce)梅雅达编程工作室 · Python数据实战系列第10篇分析做得再好最后能交出去的那份报表才算真的落地。到这儿从采集到分析这条路你已经自己走通了一遍。
返回列表