版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE2026年数据分析Python实战:pandas编程技术·实用文档2026年·13043字
目录一、用pandas10分钟重做公司月度报表(从Excel到Python的第一个实战)一、10分钟重做公司月度报表(从Excel到Python的第一个实战)二、2026年日常数据分析Python环境与项目结构搭建三、玩转数据清洗:缺失值、重复值、脏数据一网打尽四、pandas聚合与分组实战:运营、产品、财务3大场景五、时间序列分析:搞定同比、环比和移动平均六、+Excel模板做自动化日报、周报、月报七、常见性能问题与百万行数据加速技巧八、1分钟行动清单:立刻能做的3件事二、2026年日常数据分析Python环境与项目结构搭建三、玩转数据清洗:缺失值、重复值、脏数据一网打尽四、pandas聚合与分组实战:运营、产品、财务3大场景五、时间序列分析:搞定同比、环比和移动平均六、+Excel模板做自动化日报、周报、月报七、常见性能问题与百万行数据加速技巧八、1分钟行动清单:立刻能做的3件事
天天在群里看人晒图说“学了半年Python数据分析,结果在公司只会改同事的脚本”,你可能也是其中一个。做了8年数据分析实战,我见过太多会写for循环却搞不清groupby逻辑的人。过去五年我在3家公司搭过从0到1的数据分析Python体系,带过40多名转岗同事,其中大部分都靠pandas真正把报表效率提了30%-60%。这篇文档,我把那套训练营里最硬的部分抽出来,变成你能照着点鼠标、敲代码就上手的操作手册。从拉数据、清洗、统计,到一键出报表,一个模块一个任务,让你在2026年的数据分析Python实战里真正把pandas用“顺手”。一、用pandas10分钟重做公司月度报表(从Excel到Python的第一个实战)这部分的目标很简单。用你已经有的一个Excel月度报表,10分钟在pandas里完整跑一遍。场景说明:背景是一个电商运营同学。杭州,2025年底,他每月要做一次订单汇总报表,Excel打开就卡,透视表一弄就是半小时。换成pandas后,同一份报表生成时间从40分钟直接降到4分钟,准确率反而更稳定。下面用一个简化版数据做演示,你可以直接照着改自己的字段。准备数据和环境目标:在本地用pandas读取Excel报表,并且能正常显示中文。1.打开浏览器2.搜索:python下载3.113.进入官网,下载适合你系统的安装包4.双击安装,勾选「AddPythontoPATH」,点Install5.安装结束后,在桌面按Win键,输入cmd,回车6.在黑色窗口输入:pipinstallpandasopenpyxl回车,等待出现Successfully的提示检查点:在命令行里输入python回车,再输入:importpandasaspdprint(pd.version)能正常输出版本号,比如2.2.0,就说明环境没问题。版本没问题。避坑提醒:千万别在公司电脑装多个Python版本,又不确认自己在用哪个。否则库装在A,脚本跑在B,会疯。用pandas正确读取一份月度Excel报表目标:1秒钟内把Excel拉进来。假设你的文件名叫:去年12月订单明细.xlsx,放在D盘data文件夹。1.在桌面空白处右键2.选择新建→文本文档3.命名为demomonthreport.py4.右键用记事本或VSCode打开5.在文件里输入:importpandasaspdfile_path=r"D:\data\去年12月订单明细.xlsx"df=pd.readexcel(filepath,sheet_name="明细",engine="openpyxl")print(df.head)6.保存文件7.回到命令行窗口8.输入:pythonD:\data\demomonthreport.py回车检查点:屏幕上应该打印出前5行数据,字段名类似:订单号、下单日期、店铺、商品名称、数量、单价、实付金额、渠道。能看到中文字段就行。常见报错:报错一:ModuleNotFoundError:Nomodulenamed'openpyxl'解决:再装一次openpyxlpipinstallopenpyxl报错二:UnicodeDecodeError或者文件路径相关的问题解决:路径加前缀r"",不要手动写反斜杠转义。我当时看到这个数据也吓了一跳。用pandas重做一张最常用的“按店铺汇总销售额”报表目标:算出每个店铺的订单数、总销售额、均单价,一步到位。假设字段:店铺列叫store订单号列叫order_id实付金额列叫pay_amount数量列叫qty1.在刚才demomonthreport.py下面继续写:group_cols=["store"]result=df.groupby(group_cols).agg(ordercnt=("orderid","nunique"),totalamount=("payamount","sum"),total_qty=("qty","sum")).reset_indexresult["avgprice"]=result["totalamount"]/result["total_qty"]print(result.head)2.保存文件3.在命令行里再执行:pythonD:\data\demomonthreport.py4.观察输出结果里每个店铺的4个指标是否正常检查点:1个店铺一行。ordercnt是订单数,totalamount是销售额,avg_price是平均成交价。这些都应该能对得上你原来的Excel透视表。场景对比:原来你在Excel会这样操作:1.选中整表2.插入数据透视表3.行:店铺4.值:订单号计数、金额求和、数量求和5.再新建列写公式=金额/数量这个流程大约需要2-3分钟,而且每次都要点一遍。在pandas里,这段代码写好之后,每月只要改一下文件名再跑,出表时间稳定在5秒以内。提升很明显。避坑提醒:千万别直接用count统计订单数,如果原始数据有重复订单行,会严重偏大。要用nunique。导出成Excel给老板看目标:把result这张汇总表导出为新的Excel,格式干净。1.在脚本末尾添加:output_path=r"D:\data\去年12月店铺汇总.xlsx"result.toexcel(outputpath,index=False)2.保存文件3.命令行再次执行脚本4.打开D:\data文件夹5.双击去年12月店铺汇总.xlsx检查点:文件能正常打开,首行是字段名。行数等于你的店铺数量。很多人做到这里会觉得:就这些?但更关键的是下面这些操作。因为真正节省时间的,不是这一张表,而是一整套流程自动化。而pandas在数据分析Python里,价值就体现在这种“先累一次,后面省一百次”。下面进入完整目录。目录结构预览:一、10分钟重做公司月度报表(从Excel到Python的第一个实战)二、2026年日常数据分析Python环境与项目结构搭建三、玩转数据清洗:缺失值、重复值、脏数据一网打尽四、pandas聚合与分组实战:运营、产品、财务3大场景五、时间序列分析:搞定同比、环比和移动平均六、+Excel模板做自动化日报、周报、月报七、常见性能问题与百万行数据加速技巧八、1分钟行动清单:立刻能做的3件事二、2026年日常数据分析Python环境与项目结构搭建这章解决的问题是:告别“脚本到处乱丢”的状态。很多人在公司电脑上是这样:一个桌面放20个.py文件,名字是demo1、test2、临时脚本。过两周自己都认不出哪个脚本对哪个报表。说句不好听的,这种管理方式会让你在团队里看起来很不专业。2026年推荐的pandas环境版本组合目标:选一套稳定组合,避免莫名其妙的兼容问题。1.确认系统:Windows10或112.Python版本建议用3.10或3.113.pandas建议用2.2.x4.Excel互动依赖openpyxl3.1.x安装方式:1.打开命令行2.输入:pipinstall"pandas==2.2.0""openpyxl==3.1.2"检查点:在Python里输入:importpandasaspdimportopenpyxlprint(pd.version)能正常输出2.2.0且不报错。版本锁定了。避坑提醒:千万不要“能装就行”,版本差太多时,有些函数参数会不同。尤其是在公司多人工程里,统一版本是底线。为数据分析Python项目规划一个干净目录目标:你以后所有pandas脚本都按项目分类,再也不乱。举例一个“电商运营分析”项目目录:D:\dataprojects\ecanalytics\1.data_raw2.data_clean3.scripts4.outputs5.docs操作步骤:1.打开资源管理器2.在D盘新建文件夹data_projects3.进入dataprojects,新建ecanalytics4.在ecanalytics里新建4个子文件夹:dataraw、data_clean、scripts、outputs5.把原始Excel报表放进data_raw检查点:以后你只做一件事:所有原始数据只放data_raw,不要改名,不要乱到桌面。所有脚本只放scripts。这一点很多人不信,但确实如此。在scripts里创建标准化脚本模板目标:每个脚本都有统一结构,别人打开能看懂。1.在scripts下新建文件monthlyreport202512.py2.用编辑器打开3.写入模板:importpandasaspdfrompathlibimportPathBASEDIR=Path(file__).resolve.parent.parentRAWDIR=BASEDIR/"data_raw"CLEANDIR=BASEDIR/"data_clean"OUTPUTDIR=BASEDIR/"outputs"defloadsourcedata(month_str:str)->pd.DataFrame:filename=f"{monthstr}订单明细.xlsx"filepath=RAWDIR/file_namedf=pd.readexcel(filepath,sheet_name="明细")returndfdefmain:month_str="去年12月"df=loadsourcedata(month_str)#TODO:清洗+汇总print(df.shape)ifname=="main":main4.保存文件5.在命令行cd到scripts目录6.执行:pythonmonthlyreport202512.py检查点:能输出数据的行数和列数,比如(120345,15)。这说明路径引用都正常。场景对比:2026年一个上海的零售企业数据团队里,新来的分析师照此结构改完项目后,团队从5个人到12个人协作,脚本照样干净。以前每次交接都得解释半天脚本结构,现在直接发目录截图就懂。避坑提醒:Path的写法要一次学会。不要继续用"D:\\data\\xxx"这种写法,迁移环境时容易崩。三、玩转数据清洗:缺失值、重复值、脏数据一网打尽这一章解决的问题是:保证你算的每一个指标都有“干净数据”撑腰。有个真实案例。深圳某互联网公司2024年做用户留存分析,一开始用Excel直接求和,结果把测试账号和退款订单都算进去了,结论偏差12%。换成pandas之后,先系统清洗再统计,最后调整营销预算时少烧了约30万广告费。代价不小。快速识别缺失值分布,知道“哪里脏”目标:一眼看出哪些列缺失多,哪些值得填补。1.打开你的月度明细脚本2.在loadsourcedata之后加入:defquickmissingreport(df:pd.DataFrame)->pd.DataFrame:total=len(df)res=(df.isna.sum.toframe("missingcnt").assign(missingratio=lambdax:x["missingcnt"]/total).sortvalues("missingratio",ascending=False))returnres3.在main里,读完df后加:missingreport=quickmissing_report(df)print(missing_report.head(10))4.保存并运行脚本检查点:能看到每列的缺失数量和缺失比例。比如phone列缺失25%,address缺失5%。可量化效果:在一家公司里,分析师据此直接删除缺失率>95%的字段,建模时字段数从120个降到65个,训练时间从40分钟缩短到18分钟。时间减半。避坑提醒:缺失多不等于没用。客户手机号缺失多,但在营销场景里非常关键。删除前要先给业务看。用pandas填补缺失值的标准方法目标:针对不同类型的字段填补方式不同。1.数值列用中位数填(对极端值更稳):numcols=["payamount","qty"]forcolinnum_cols:median_val=df[col].mediandf[col]=df[col].fillna(median_val)2.类别列用众数填:cat_cols=["store","channel"]forcolincat_cols:mode_val=df[col].mode(dropna=True)[0]df[col]=df[col].fillna(mode_val)3.日期列可以用前向填充:df["paytime"]=pd.todatetime(df["pay_time"])df=df.sortvalues("paytime")df["paytime"]=df["paytime"].ffill4.清洗完成后导出一个clean版本:cleanpath=CLEANDIR/"去年12月订单明细_clean.xlsx"df.toexcel(cleanpath,index=False)检查点:再次跑quickmissingreport,缺失率应明显下降。关键字段不再是NaN。场景案例:2025年广州一家公司做库存周转分析,用pandas填补错误日期和缺失数量后,周转天数的计算偏差从20%拉回到3%以内,库存决策更靠谱。避坑提醒:千万别一上来就用0填所有数值缺失。0有实际业务含义,会影响均值和总量。删除重复订单和明显脏数据目标:保证每个订单在数据里只出现一次。1.检查重复订单:duporders=df[df.duplicated(subset=["orderid"],keep=False)]print(dup_orders.head)2.如果确认是重复行,删除:df=df.dropduplicates(subset=["orderid"],keep="first")3.清理明显不合理的金额(比如金额为负且不是退款表):df=df[df["pay_amount"]>=0]4.清理test订单:df=df[~df["customer_name"].str.contains("测试",na=False)]检查点:清洗后df.shape[0]是否减少。同时随机抽几条检查是否误删正常订单。这一套做完,你的数据结构就算“能下锅”了。很多人嫌麻烦,一年下来报表偏差累积非常可观。这就是差距。四、pandas聚合与分组实战:运营、产品、财务3大场景这一章是pandas在数据分析Python实战里最常用的部分。聚合做得好,你一个人可以顶半个报表团队。运营场景:看渠道转化效果目标:统计每个渠道的下单人数、订单数、总金额和客单价。1.假设字段:渠道channel,用户user_id2.在脚本中加入:group_cols=["channel"]aggdf=df.groupby(groupcols).agg(usercnt=("userid","nunique"),ordercnt=("orderid","nunique"),totalamount=("payamount","sum")).reset_indexaggdf["avgordervalue"]=aggdf["totalamount"]/aggdf["order_cnt"]aggdf["avguservalue"]=aggdf["totalamount"]/aggdf["user_cnt"]print(agg_df)3.导出到outputs:outputpath=OUTPUTDIR/"去年12月渠道统计.xlsx"aggdf.toexcel(output_path,index=False)检查点:每个渠道一行,指标完整。你可以直接发给运营同事评估投放效果。数据案例:在一个真实项目里,通过这类统计发现某短视频渠道订单数不高,但客单价比主渠道高52%,后续加大预算后,季度营收额外多了约80万。避坑提醒:千万别用sum统计user_id数量,那只是粗暴计数。用户去重必须用nunique。产品场景:分析功能使用情况(事件明细表)目标:统计每个功能的使用用户数、使用次数。假设你有一张app行为日志:字段包括userid、eventname、event_time。1.读取行为日志:events=pd.readparquet(RAWDIR/"2025Q4appevents.parquet")2.统计:featurestats=events.groupby("eventname").agg(usercnt=("userid","nunique"),eventcnt=("userid","count")).reset_indexfeaturestats["avgeventperuser"]=featurestats["eventcnt"]/featurestats["usercnt"]3.按用户数排序:featurestats=featurestats.sortvalues("usercnt",ascending=False)4.导出:featurestats.toexcel(OUTPUTDIR/"功能使用统计2025Q4.xlsx",index=False)检查点:功能列表按用户数从高到低排序。每个功能有3个关键指标。量化收益:2025年北京某SaaS产品团队,用类似统计发现“导出报表”功能的活跃用户数只有整体的15%,但抱怨导出慢的投诉却占40%。团队集中优化这块,功能流失率下降了30%,续费率提升约8个百分点。避坑提醒:行为事件日期要先统一转成datetime类型再分组,否则跨天统计会乱。财务场景:毛利、成本结构分析目标:按品类看收入、成本、毛利。假设字段:category、payamount、costamount。1.聚合:profit_df=df.groupby("category").agg(totalrevenue=("payamount","sum"),totalcost=("costamount","sum")).reset_indexprofitdf["grossprofit"]=profitdf["totalrevenue"]-profitdf["totalcost"]profitdf["grossmargin"]=profitdf["grossprofit"]/profitdf["totalrevenue"]2.按毛利排序:profitdf=profitdf.sortvalues("grossprofit",ascending=False)3.导出:profitdf.toexcel(OUTPUTDIR/"品类毛利分析去年12月.xlsx",index=False)检查点:毛利率为小数,比如0.35表示35%。可以在Excel里改显示格式。业务效果:有家公司按品类毛利做完分析后,直接砍掉毛利率低于5%的3个品类,资源集中到高毛利品类,半年下来整体毛利率从18%提到24%。数字很清楚。避坑提醒:成本字段不能为空,否则毛利计算会直接出错。缺失成本要先补齐或排除。五、时间序列分析:搞定同比、环比和移动平均这一章解决的问题是:在时间维度上看趋势,而不是只看一张静态汇总表。坦白讲,会不会做这部分,是区分普通分析师和“能跟业务对话”的分析师的分水岭。按日汇总销售额,画出趋势线的来源数据目标:得到每天的总销售额和订单数。1.确保pay_time已转成datetime:df["paytime"]=pd.todatetime(df["pay_time"])2.创建日期列:df["date"]=df["pay_time"].dt.date3.按日分组:daily=df.groupby("date").agg(ordercnt=("orderid","nunique"),totalamount=("payamount","sum")).reset_index4.导出:daily.toexcel(OUTPUTDIR/"2025Q4_日度销售趋势.xlsx",index=False)检查点:date从2025-10-01一直到2025-12-31。每天一行。计算同比、环比增长率目标:算出某天相对于上一天、去年同一天的增长率。假设你现在有连贯两年的日度数据dailyall,包含date、totalamount。1.按日期排序:dailyall=dailyall.sort_values("date")2.计算环比(前一天):dailyall["amountlag1"]=dailyall["totalamount"].shift(1)dailyall["daygrowthrate"]=(dailyall["totalamount"]-dailyall["amountlag1"])/dailyall["amount_lag1"]3.计算同比(同一天去年):dailyall["amountlag365"]=dailyall["totalamount"].shift(365)dailyall["yoygrowthrate"]=(dailyall["totalamount"]-dailyall["amountlag365"])/dailyall["amount_lag365"]4.导出:dailyall.toexcel(OUTPUTDIR/"日度销售含同比环比.xlsx",index=False)检查点:部分行的daygrowthrate和yoygrowthrate会是NaN(比如第一天、没有去年数据的日期),这是正常的。真实收益:2025年某跨境电商通过日度同比数据,提前抓住了一个品类在黑五前10天的异常下滑,及时调整广告预算,避免了预计约50万的销售损失。时间序列的价值就在这里。避坑提醒:同比的shift(365)适用于非闰年且数据连续的情况。更严谨的方法是按日期匹配上一年同月同日,而不是纯偏移,但实务中不少公司还是用偏移。滚动平均和滚动合计,平滑掉噪音目标:构建7日滚动平均销售额,看趋势更稳。1.将date转回datetime类型方便排序:daily["date"]=pd.to_datetime(daily["date"])daily=daily.sort_values("date")2.计算7日滚动平均:daily["amountma7"]=daily["totalamount"].rolling(window=7,min_periods=1).mean3.计算7日滚动总额:daily["amountsum7"]=daily["totalamount"].rolling(window=7,min_periods=1).sum4.导出:daily.toexcel(OUTPUTDIR/"日度销售_含滚动指标.xlsx",index=False)检查点:前6天的滚动平均是“从第一天到当天”的平均值,第7天开始才是标准7日窗口。场景应用:某运营团队用7日滚动平均看活动效果,能过滤掉单日波动,预算调整不再“今天加明天砍”,整体ROI稳定性提升了约15%。避坑提醒:滚动窗口要在按日期排序后的数据上算。顺序错了,滚动就完全没意义。六、+Excel模板做自动化日报、周报、月报很多人学pandas最大的期望就是:把自己从各种日报地狱里解救出来。这章就是把你从“每天整理汇编”里拉出来,至少帮你节省30%-50%的报表时间。准备一个固定的Excel模板目标:你只改模板一次,以后全靠pandas填数据。1.打开Excel2.新建一个工作簿,命名为报表模板_销售日报.xlsx3.Sheet1改名为汇总4.在A1:F1填标题,比如:日期、渠道、订单数、销售额、客单价、新客数5.保存到docs目录检查点:模板结构固定,不要每天乱改列顺序。用pandas填充模板数据并生成日报目标:你每天只执行脚本一次,不再手工整理汇编。1.在scripts新建daily_report.py2.写入:defbuilddailyreport(target_date:str)->pd.DataFrame:filename="去年12月订单明细clean.xlsx"df=pd.readexcel(RAWDIR/file_name)df["paytime"]=pd.todatetime(df["pay_time"])df["date"]=df["pay_time"].dt.date.astype(str)df=df[df["date"]==target_date]aggdf["date"]=targetdateaggdf["avgordervalue"]=aggdf["totalamount"]/aggdf["order_cnt"]cols=["date","channel","ordercnt","totalamount","avgordervalue","newusercnt"]aggdf=aggdf[cols]returnagg_dfdefmain:target_date="2025-12-15"reportdf=builddailyreport(targetdate)outputfile=OUTPUTDIR/f"销售日报{targetdate}.xlsx"reportdf.toexcel(output_file,index=False)3.保存并执行:pythondaily_report.py检查点:在outputs目录下生成销售日报_2025-12-15.xlsx,结构和模板一致。你只要再用模板做一点样式,就能用。可量化收益:杭州一个运营团队用类似脚本,把每天做日报的时间从平均40分钟降到8分钟,一个月下来节省了约10个小时,加到其他分析工作上,实际带来的转化收益远高于这10小时工资。避坑提醒:target_date要和数据里的格式一致。建议统一用yyyy-MM-dd。进一步:一键生成整月日报文件目标:一次运行,生成30个日报文件。1.修改main函数:defmain:datelist=pd.daterange("2025-12-01","2025-12-31",freq="D")fordindate_list:target_date=d.strftime("%Y-%m-%d")reportdf=builddailyreport(targetdate)outputfile=OUTPUTDIR/f"销售日报{targetdate}.xlsx"reportdf.toexcel(output_file,index=False)2.保存并执行。检查点:outputs下出现31个日报文件。如果某天没有数据,对应文件可以为空表或自动跳过。这种写法,让你把日常报表彻底从“手工重复工作”变成一次代码循环。我见过有同事靠这一点,把自己从纯报表岗,升到了分析岗。七、常见性能问题与百万行数据加速技巧做数据分析Python项目,数据量一上来,很多人第一反应是“pandas不行,得上大数据”。实际上,百万级别的数据,pandas还是完全能扛住的,只要你别乱写。优先用readcsv、readparquet,提高IO速度目标:大文件加载速度提升至少30%。1.如果你拿到的是CSV文件,优先用:df=pd.readcsv(RAWDIR/"2025Q4orders.csv",dtype={"orderid":"string"})2.如果你可以自己存储数据,优先存成parquet:df.toparquet(CLEANDIR/"2025Q4_orders.parquet",index=False)3.下次读取:df=pd.readparquet(CLEANDIR/"2025Q4_orders.parquet")检查点:同样100万行的数据,parquet的读取速度相对于Excel通常能快3-5倍。真实对比:一个仓储公司把90多万行的库存流水从Excel换成parquet存储后,分析脚本的启动时间从40秒下降到7秒。体验差距非常明显。避坑提醒:parquet需要安装pyarrow或fastparquet。缺哪个pipinstall哪个即可。用as
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026 年中职给排水(水泵安装)试题及答案
- 办公空间概念方案设计
- 幼儿园教师防拐骗安全培训
- 成功从员工做起培训心得
- 安全目标分析报告
- 荔枝宣传及营销推广方案
- 雨课堂学堂在线学堂云《农产品检验技术(锡林郭勒职业学院)》单元测试考核答案
- 参展工作制度
- 合同科工作制度
- 哺乳室工作制度
- 2024ABB PIHF谐波滤波器用户手册
- DB3305∕T276-2023 生态联勤警务站建设与管理规范
- 国家职业标准 -碳排放管理员
- T-WSJD 67-2024 职业病诊断质量控制评估指南
- 销售加速公式培训课件
- 琉璃瓦施工合同协议书
- 办理证件合同协议书
- 《动物营养学》全套教学课件
- 设计变更时的协调与应对措施
- 早产儿特点及护理要点
- 《人工智能安全导论》 课件 第五章 人工智能技术在网络入侵检测领域
评论
0/150
提交评论