影刀RPA Pandas数据分析入门:处理表格数据的核心操作 title: “影刀RPA Pandas数据分析入门处理表格数据的核心操作”date: 2026-07-01author: 林焱影刀RPA Pandas数据分析入门处理表格数据的核心操作影刀的Python节点里最常用的数据处理库就是Pandas。很多人看到Pandas文档就头大其实日常用到的就那几十个方法。本文只讲最实用的核心操作每个都附真实场景。什么情况用Pandas必须用Pandas的场景处理几千行以上的Excel数据Excel公式太慢需要多条件筛选、分组统计、多表合并数据清洗处理空值、重复值、格式问题数据分析汇总、排序、透视不用Pandas直接用Excel就够的场景数据量小几十行用openpyxl写入就行只是简单的读写不涉及复杂计算店群矩阵自动化突破运营极限怎么做核心操作1读取和写入【影刀操作】importpandasaspd# 读取Excel最常用dfpd.read_excel(rC:\数据\销售.xlsx,sheet_nameSheet1)# 读取CSVdfpd.read_csv(rC:\数据\数据.csv,encodingutf-8-sig)# utf-8-sig处理BOM# 读取数据库需要SQLAlchemyfromsqlalchemyimportcreate_engine enginecreate_engine(mysqlpymysql://user:passhost/db?charsetutf8mb4)dfpd.read_sql(SELECT * FROM orders WHERE date 2024-06-26,engine)# 写入Exceldf.to_excel(rC:\输出\结果.xlsx,indexFalse,sheet_name汇总)# 多Sheet写入withpd.ExcelWriter(rC:\输出\报告.xlsx,engineopenpyxl)aswriter:df1.to_excel(writer,sheet_name销售明细,indexFalse)df2.to_excel(writer,sheet_name分类汇总,indexFalse)核心操作2查看和基本信息print(df.shape)# 行数和列数如 (1000, 12)print(df.columns.tolist())# 所有列名print(df.dtypes)# 每列的数据类型print(df.head(5))# 前5行print(df.tail(3))# 后3行# 统计信息![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/73734701f1d445bd84f3f48d53b9693d.png#pic_center)print(df.describe())# 数值列的统计信息均值、标准差等# 空值检查print(df.isnull().sum())# 每列有多少空值核心操作3选择数据# 选择列df[销售额]# 单列返回Seriesdf[[产品,销售额,日期]]# 多列返回DataFrame# 按条件筛选行df[df[销售额]10000]# 单条件df[(df[销售额]5000)(df[区域]华东)]# 多条件用不用anddf[df[状态].isin([已完成,已发货])]# 值在列表中# 排除某些值df[~df[状态].isin([已取消,已退款])]# 按索引/位置选择df.iloc[0]# 第1行df.iloc[0:5]# 前5行df.iloc[:,0:3]# 前3列核心操作4数据清洗# 删除空值df.dropna()# 删除任何有空值的行df.dropna(subset[订单号,金额])# 只看这几列有空值才删# 填充空值df[备注].fillna(无,inplaceTrue)# 文本列填无df[折扣].fillna(0,inplaceTrue)# 数值列填0df[金额].fillna(df[金额].mean(),inplaceTrue)# 用平均值填# 去重df.drop_duplicates()# 完全相同的行去重df.drop_duplicates(subset[订单号])# 按订单号去重# 类型转换df[日期]pd.to_datetime(df[日期])# 转日期df[金额]pd.to_numeric(df[金额],errorscoerce)# 转数字转不了的变NaN# 字符串清洗df[产品名]df[产品名].str.strip()# 去首尾空格df[电话]df[电话].str.replace(-,).str.replace( ,)# 去除分隔符核心操作5计算和统计# 新增计算列df[利润率]df[利润]/df[销售额]*100# 分组统计最常用summarydf.groupby(区域).agg({销售额:sum,订单数:count,利润:[sum,mean]}).reset_index()# 排序df.sort_values(销售额,ascendingFalse)# 按销售额降序df.sort_values([区域,销售额],ascending[True,False])# 多列排序# 排名df[销售额排名]df[销售额].rank(ascendingFalse,methoddense).astype(int)核心操作6多表合并# 内连接只保留两表都有的记录类似SQL INNER JOINmergedpd.merge(df_orders,df_products,on产品ID,howinner)# 左连接保留左表所有记录mergedpd.merge(df_orders,df_customers,on客户ID,howleft)# 纵向合并行数增加列数不变combinedpd.concat([df_jan,df_feb,df_mar],ignore_indexTrue)实战示例完整的销售数据分析【影刀操作】importpandasaspdfromdatetimeimportdatetime# 1. 读取数据dfpd.read_excel(rC:\销售数据\2024Q2.xlsx)# 2. 数据清洗df[下单日期]pd.to_datetime(df[下单日期])df[金额]pd.to_numeric(df[金额],errorscoerce)df.dropna(subset[订单号,金额],inplaceTrue)dfdf[~df[状态].isin([已取消])]# 3. 新增派生字段df[月份]df[下单日期].dt.to_period(M).astype(str)df[是否大单]df[金额]10000# 4. 分析各区域月度销售额[video(video-dHwmgbAD-1783577399764)(type-csdn)(url-https://live.csdn.net/v/embed/524992)(image-https://v-blog.csdnimg.cn/asset/b59aed2f01d4fe8583467562aaf4dcfd/cover/Cover0.jpg)(title-temu店群自动化报活动案例)]monthly_by_regiondf.groupby([区域,月份])[金额].sum().unstack(fill_value0)print(各区域月度销售额)print(monthly_by_region)# 5. Top客户排名top_customersdf.groupby(客户名称)[金额].sum().reset_index()top_customerstop_customers.sort_values(金额,ascendingFalse).head(20)top_customers[排名]range(1,len(top_customers)1)# 6. 输出报告withpd.ExcelWriter(rC:\销售报告\Q2分析.xlsx,engineopenpyxl)aswriter:monthly_by_region.to_excel(writer,sheet_name月度区域分析)top_customers.to_excel(writer,sheet_nameTop20客户,indexFalse)print(分析报告已生成)有什么坑坑1groupby后的MultiIndex列头用agg传字典指定多个聚合时列名变成元组(金额, sum)打印出来很丑。解决方法df.columns[_.join(col).strip(_)forcolindf.columns]坑2日期格式识别错误pd.to_datetime(06/07/2024)在不同系统可能解析成6月7日或7月6日。解决方法明确指定格式pd.to_datetime(df[日期], format%d/%m/%Y)坑3对原始DataFrame的副作用做了筛选赋值给新变量但修改新变量时原始df也被改了浅拷贝问题。解决方法筛选后加.copy()df_filtered df[df[金额] 1000].copy()总结Pandas最核心的就是6类操作读写、查看、筛选、清洗、统计、合并。把这6类搞熟90%的数据处理需求都能覆盖。遇到不熟的操作去Pandas文档搜索API设计很一致举一反三很快。