Pandas DataFrame数据分析入门与实战指南
1. DataFrame数据分析入门指南第一次接触DataFrame这个概念时我正面临着一个棘手的问题需要快速分析上万条销售记录。当时用Excel处理不仅卡顿严重而且每次修改公式都要等上几分钟。直到一位同事推荐了Pandas的DataFrame我才发现数据分析原来可以如此高效。DataFrame就像一张智能电子表格但它能轻松处理百万级数据支持各种复杂运算还能与Python生态无缝衔接。2. DataFrame核心概念解析2.1 什么是DataFrameDataFrame是Pandas库中的二维表格型数据结构可以理解为升级版的Excel表格。但与Excel不同DataFrame在内存中运行支持矢量化运算处理速度能快上百倍。每列可以是不同的数据类型数值、字符串、布尔值等并且自带行索引和列标签。创建DataFrame的典型方式import pandas as pd # 从字典创建 data {产品: [手机, 笔记本, 平板], 销量: [120, 85, 64], 单价: [2999, 5999, 3999]} df pd.DataFrame(data) # 从CSV文件读取 df pd.read_csv(sales_data.csv)2.2 DataFrame的核心优势处理海量数据轻松应对百万行级别的数据集丰富的数据操作筛选、分组、聚合、透视等操作一站式解决缺失值处理提供多种填充和删除缺失值的策略时间序列支持内置强大的时间类型处理和重采样功能可视化集成与Matplotlib/Seaborn无缝配合提示对于小于1GB的数据Pandas性能表现最佳。更大数据集建议使用Dask或PySpark的DataFrame实现。3. 数据分析实战全流程3.1 数据加载与初步探索拿到数据后的第一步永远是先了解数据全貌。假设我们有一份电商销售数据sales.csv# 加载数据时指定解析日期列 df pd.read_csv(sales.csv, parse_dates[order_date]) # 查看前5行 print(df.head()) # 获取数据概览 print(df.info()) # 描述性统计 print(df.describe(includeall))关键检查点各列数据类型是否正确特别是日期时间是否存在缺失值df.isnull().sum()数值列的分布情况df.describe()3.2 数据清洗技巧真实数据总是充满惊喜。这是我总结的清洗套路处理缺失值# 删除全为空的行 df.dropna(howall, inplaceTrue) # 用中位数填充数值列 df[price].fillna(df[price].median(), inplaceTrue) # 用众数填充类别列 df[category].fillna(df[category].mode()[0], inplaceTrue)处理异常值# 基于标准差过滤 mean df[amount].mean() std df[amount].std() df df[(df[amount] mean - 3*std) (df[amount] mean 3*std)] # 或者使用分位数 Q1 df[amount].quantile(0.25) Q3 df[amount].quantile(0.75) IQR Q3 - Q1 df df[~((df[amount] (Q1 - 1.5*IQR)) | (df[amount] (Q3 1.5*IQR)))]类型转换# 字符串转日期 df[date] pd.to_datetime(df[date], format%Y-%m-%d) # 类别型数据转换 df[category] df[category].astype(category)3.3 数据分析核心操作3.3.1 数据筛选与排序# 多条件筛选 high_value df[(df[amount] 1000) (df[status] completed)] # 字符串包含查询 phone_orders df[df[product].str.contains(手机, naFalse)] # 排序 df.sort_values([date, amount], ascending[True, False], inplaceTrue)3.3.2 分组聚合分析# 基础分组 daily_sales df.groupby(date)[amount].sum() # 多维度分组 category_city df.groupby([category, city])[amount].agg([sum, mean, count]) # 使用transform保持原数据形状 df[category_avg] df.groupby(category)[price].transform(mean)3.3.3 透视表与交叉分析# 简单透视表 pivot pd.pivot_table(df, valuesamount, indexdate, columnscategory, aggfuncsum) # 多维度透视 pivot_multi pd.pivot_table(df, values[amount, quantity], index[region, sales_rep], columns[quarter], aggfunc{amount: sum, quantity: mean}, fill_value0)3.4 可视化分析数据分析的最终目的是为了获得洞见而可视化是最直接的表达方式import matplotlib.pyplot as plt import seaborn as sns # 设置样式 sns.set_style(whitegrid) # 时间序列图 plt.figure(figsize(12, 6)) df.groupby(date)[amount].sum().plot(titleDaily Sales Trend) plt.ylabel(Sales Amount) plt.show() # 箱线图分析 plt.figure(figsize(10, 6)) sns.boxplot(xcategory, yprice, datadf) plt.title(Price Distribution by Category) plt.xticks(rotation45) plt.show() # 热力图展示相关性 plt.figure(figsize(10, 8)) sns.heatmap(df.corr(), annotTrue, cmapcoolwarm) plt.title(Feature Correlation Matrix) plt.show()4. 实战案例电商用户行为分析让我们通过一个真实案例巩固所学知识。假设我们有用户行为数据user_behavior.csv包含user_id: 用户IDitem_id: 商品IDbehavior_type: 行为类型pv浏览cart加购fav收藏buy购买timestamp: 行为时间4.1 数据预处理# 加载数据 df pd.read_csv(user_behavior.csv) # 转换时间戳 df[datetime] pd.to_datetime(df[timestamp], units) # 提取日期和时间特征 df[date] df[datetime].dt.date df[hour] df[datetime].dt.hour df[weekday] df[datetime].dt.weekday # 删除原始时间戳列 df.drop(timestamp, axis1, inplaceTrue)4.2 用户行为分析4.2.1 行为分布统计behavior_counts df[behavior_type].value_counts() plt.figure(figsize(8, 6)) behavior_counts.plot(kindbar) plt.title(User Behavior Distribution) plt.xlabel(Behavior Type) plt.ylabel(Count) plt.xticks(rotation0) plt.show()4.2.2 用户活跃时段分析hourly_activity df.groupby(hour)[user_id].count() plt.figure(figsize(12, 6)) hourly_activity.plot(kindline, markero) plt.title(User Activity by Hour) plt.xlabel(Hour of Day) plt.ylabel(Activity Count) plt.grid(True) plt.show()4.2.3 转化漏斗分析# 计算各行为独立用户数 funnel df.groupby(behavior_type)[user_id].nunique().sort_values(ascendingFalse) # 计算转化率 pv funnel[pv] funnel[pv_to_cart] funnel[cart] / pv funnel[pv_to_fav] funnel[fav] / pv funnel[pv_to_buy] funnel[buy] / pv print(funnel[[pv_to_cart, pv_to_fav, pv_to_buy]])4.3 RFM用户分群RFM是经典的客户价值分析模型# 计算Recency(最近购买时间) now df[datetime].max() rfm df[df[behavior_type] buy].groupby(user_id).agg({ datetime: lambda x: (now - x.max()).days, # Recency item_id: count, # Frequency # 假设我们有金额数据这里用购买次数代替Monetary user_id: count # Monetary (用次数代替) }) rfm.columns [recency, frequency, monetary] # 评分 (这里使用简单的五分制) rfm[R_Score] pd.qcut(rfm[recency], 5, labels[5,4,3,2,1]) rfm[F_Score] pd.qcut(rfm[frequency], 5, labels[1,2,3,4,5]) rfm[M_Score] pd.qcut(rfm[monetary], 5, labels[1,2,3,4,5]) # 计算RFM总分 rfm[RFM_Score] rfm[R_Score].astype(int) rfm[F_Score].astype(int) rfm[M_Score].astype(int) # 用户分群 rfm[Segment] Low Value rfm.loc[rfm[RFM_Score] 8, Segment] High Value rfm.loc[(rfm[RFM_Score] 5) (rfm[RFM_Score] 8), Segment] Medium Value5. 性能优化与高级技巧5.1 处理大数据集的技巧当数据量超过内存时可以使用分块读取chunk_size 100000 # 每次读取10万行 chunks pd.read_csv(large_file.csv, chunksizechunk_size) for chunk in chunks: process(chunk) # 处理每个数据块指定数据类型dtypes { user_id: int32, price: float32, category: category } df pd.read_csv(data.csv, dtypedtypes)使用高效的数据格式# 保存为parquet格式 df.to_parquet(data.parquet) # 读取parquet df pd.read_parquet(data.parquet)5.2 加速DataFrame操作使用向量化操作# 慢 - 使用循环 for i in range(len(df)): df.loc[i, discount] df.loc[i, price] * 0.9 # 快 - 向量化操作 df[discount] df[price] * 0.9避免链式索引# 不好 - 链式索引 df[df[price] 100][discount] 0.9 # 好 - 使用loc df.loc[df[price] 100, discount] 0.9使用eval()进行复杂运算# 常规方式 df[total] df[price] * df[quantity] - df[discount] # 使用eval (对于大型DataFrame更快) df[total] df.eval(price * quantity - discount)5.3 时间序列分析进阶Pandas为时间序列分析提供了强大支持# 重采样到周级别 weekly df.set_index(datetime).resample(W).sum() # 滚动计算 df[7day_avg] df[sales].rolling(window7).mean() # 时间差计算 df[days_since_last_purchase] df.groupby(user_id)[datetime].diff().dt.days # 节假日处理 from pandas.tseries.holiday import USFederalHolidayCalendar cal USFederalHolidayCalendar() holidays cal.holidays(startdf[date].min(), enddf[date].max()) df[is_holiday] df[date].isin(holidays)6. 常见问题与解决方案6.1 内存不足问题问题处理大型DataFrame时出现MemoryError。解决方案使用dtype参数指定更小的数据类型只加载需要的列pd.read_csv(data.csv, usecols[col1, col2])使用chunksize分块处理考虑使用Dask或PySpark6.2 合并数据时的性能问题问题合并多个大型DataFrame速度很慢。优化方案# 使用merge而不是concat pd.merge(df1, df2, onkey) # 设置索引后使用join df1.set_index(key).join(df2.set_index(key)) # 对于大型合并可以先减少数据集 df1_small df1[df1[key].isin(df2[key])]6.3 处理类别不平衡问题分类分析中某些类别样本极少。解决方法# 过采样少数类 from sklearn.utils import resample df_majority df[df[class] 0] df_minority df[df[class] 1] df_minority_upsampled resample(df_minority, replaceTrue, n_sampleslen(df_majority), random_state42) df_balanced pd.concat([df_majority, df_minority_upsampled])6.4 处理文本数据问题如何高效分析文本列文本处理技巧# 文本长度分析 df[text_length] df[comments].str.len() # 词频统计 from sklearn.feature_extraction.text import CountVectorizer vectorizer CountVectorizer(stop_wordsenglish) X vectorizer.fit_transform(df[comments]) word_counts pd.DataFrame(X.toarray(), columnsvectorizer.get_feature_names_out()) # 情感分析 from textblob import TextBlob df[sentiment] df[comments].apply(lambda x: TextBlob(x).sentiment.polarity)7. 数据分析项目实战建议7.1 典型数据分析流程明确分析目标确定要解决的业务问题数据收集获取相关数据源数据清洗处理缺失值、异常值、格式转换探索性分析(EDA)发现数据模式和异常特征工程创建衍生特征建模分析应用统计或机器学习模型结果可视化有效传达发现报告撰写总结结论和建议7.2 常用分析场景与对应方法分析场景适用方法Pandas实现示例用户分群RFM模型、聚类分析groupby agg qcut转化漏斗行为路径分析crosstab/pivot_table cumsum时间序列预测移动平均、ARIMArolling mean diff关联分析购物篮分析merge value_countsA/B测试评估分组统计检验groupby t-test7.3 项目经验分享在实际电商分析项目中我发现几个关键点数据质量检查先花30%时间验证数据准确性否则后续分析都是徒劳。常见陷阱包括测试数据混入生产数据时区不一致导致的时间偏差枚举值变更历史记录分析维度选择不要一开始就陷入细节。我的分析顺序通常是整体趋势时间维度品类/地域维度用户分层维度交叉分析可视化原则一张图只讲一个故事使用合适的图表类型趋势用折线图分布用直方图/箱线图标注关键数据点和异常点性能优化经验对于1GB以上的数据考虑使用Pandas的eval()和query()分类数据转换为category类型可节省大量内存避免在循环中修改DataFrame尽量使用向量化操作8. 学习资源与进阶方向8.1 推荐学习路径基础阶段Pandas官方文档必读《Python for Data Analysis》作者是Pandas创始人Kaggle的Pandas教程中级阶段参加Kaggle竞赛从Titanic等入门赛开始学习使用Pandas进行时间序列分析掌握数据可视化Matplotlib/Seaborn高级阶段学习Pandas源码实现掌握Dask处理超大数据集学习PySpark的DataFrame API8.2 常用工具链搭配数据获取数据库SQLAlchemy PandasWeb数据Requests BeautifulSoup/ScrapyAPI数据Requests Pandas数据处理基础Pandas大数据Dask/PySpark高性能NumPy Numba可视化静态Matplotlib/Seaborn交互Plotly/Bokeh仪表盘Panel/Dash部署应用报告Jupyter Notebook → HTML/PDFWeb应用Flask/Dash Pandas自动化Airflow Pandas8.3 实战项目建议想真正掌握DataFrame数据分析建议从这些实际项目入手电商分析用户购买行为分析商品关联推荐销售预测金融分析股票价格分析投资组合优化风险管理社交网络分析用户互动模式内容传播路径社群发现物联网数据分析传感器数据分析异常检测预测性维护每个项目都应该包含完整的数据获取→清洗→分析→可视化→报告流程。开始时可以使用公开数据集如Kaggle数据集UCI机器学习仓库政府开放数据上市公司财报数据9. 数据分析师的工作日常作为一名数据分析师我的日常工作通常围绕DataFrame展开上午检查数据管道是否正常运行处理业务部门的临时数据请求更新日常报表下午进行专题分析如用户流失分析优化现有分析代码性能与产品经理讨论分析需求常用工具栈Jupyter Lab交互式分析环境VS Code脚本开发Git版本控制Docker环境隔离效率技巧为常用分析创建模板代码使用%%time魔法命令监控代码性能定期整理可复用的工具函数建立数据分析文档库10. 数据分析思维培养10.1 业务问题转化技巧当接到一个模糊的业务需求时我通常这样拆解明确核心指标确定要优化的关键指标如转化率、留存率定义分析范围时间范围、用户群体、产品类别等识别影响因素列出可能影响核心指标的因素数据可行性评估检查是否有相应数据支持分析10.2 分析框架应用常用的分析框架5W2H分析法What发生了什么问题Why为什么发生Where发生在哪里When何时发生Who影响哪些用户How如何发生的How much影响程度AARRR模型海盗指标Acquisition获取用户Activation激活Retention留存Revenue收入Referral推荐对比分析法时间对比同比、环比群体对比新老用户、不同渠道实验对比A/B测试结果10.3 分析报告撰写要点一份好的分析报告应该结论先行开头直接说明主要发现数据支撑每个结论都有数据支持可视化表达多用图表少用文字建议具体提出可执行的改进建议附录详细技术细节放在附录11. 数据分析职业发展11.1 数据分析师的能力模型技术能力数据处理Pandas/SQL统计分析假设检验、回归分析可视化Matplotlib/Seaborn/Tableau机器学习Scikit-learn基础业务能力行业知识指标体系建设需求理解与转化软技能沟通表达能力项目管理能力批判性思维11.2 常见职业路径技术路线数据分析师 → 高级数据分析师 → 数据科学家需要加强编程和算法能力业务路线数据分析师 → 业务分析师 → 产品经理/运营总监需要加强业务理解和沟通能力管理路线数据分析师 → 数据分析主管 → 数据部门负责人需要加强团队管理和战略思维11.3 面试准备建议技术面试重点SQL窗口函数应用Pandas数据处理技巧统计知识p值、置信区间等案例分析思路项目经验准备选择2-3个完整项目重点准备能够详细说明项目背景分析方法遇到的挑战最终成果后续优化方向业务问题应对练习如何将模糊业务问题转化为分析问题准备常用指标的计算逻辑如DAU、留存率、GMV等了解行业常用分析框架12. 数据分析的未来趋势12.1 技术发展方向自动化分析AutoML工具普及自然语言生成报告异常自动检测实时分析流数据处理实时仪表盘即时决策支持增强分析AI辅助洞察发现智能数据准备预测性建议12.2 工具演进Pandas 2.0更强的类型系统更快的执行引擎更好的互操作性交互式分析Jupyter生态持续演进可视化编程界面协作分析环境云原生分析基于云的数据湖分析弹性计算资源按需扩展12.3 职业建议为了适应未来发展建议夯实基础深入理解统计学原理掌握SQL和Pandas核心能力培养数据思维拓展边界学习基础机器学习了解数据工程知识培养业务敏感度关注行业跟踪所在行业的数据应用参与行业数据分析社区积累领域专业知识在实际工作中我发现最宝贵的能力是将业务问题转化为数据分析问题的能力。这需要既懂数据又懂业务能够用数据讲好故事。建议从小的业务问题开始练习逐步培养这种转化能力。

相关新闻

XXL-JOB分布式任务调度系统核心原理与实践指南

XXL-JOB分布式任务调度系统核心原理与实践指南

1. 分布式任务调度平台XXL-JOB概述 XXL-JOB是一款由国内开发者开源的轻量级分布式任务调度系统,其设计初衷是为了解决传统定时任务在分布式环境下的可靠性、扩展性和管理难题。我第一次接触这个系统是在2018年一个电商项目中,当时我们需要处理每天数百万…

2026/10/10 20:23:04 阅读更多 →
C++ shared_mutex lock_shared实现原理与高并发优化实践

C++ shared_mutex lock_shared实现原理与高并发优化实践

1. 项目概述:为什么shared_mutex是C并发编程的“瑞士军刀”?在C高并发编程的世界里,锁是绕不开的话题。从最基础的std::mutex到各种花哨的无锁数据结构,我们总在性能与安全之间寻找平衡。但有一个场景特别常见:读多写少…

2026/10/11 7:36:34 阅读更多 →
SVM分类器原理与工业实践指南

SVM分类器原理与工业实践指南

1. SVM分类器基础解析支持向量机(Support Vector Machine)作为机器学习领域的经典算法,已经在我过去五年的工业级项目中证明了其稳定性和可靠性。不同于神经网络的黑箱特性,SVM通过清晰的数学推导构建决策边界,这种白盒…

2026/10/10 21:04:42 阅读更多 →

最新新闻

删数问题与贪心算法:从错误直觉到单调栈最优解

删数问题与贪心算法:从错误直觉到单调栈最优解

上个月帮几位朋友看算法实验作业,他们在头歌平台上刷贪心算法关卡,卡得最久的不是那些需要长篇大论设计的题目,而是一道看起来非常简单的"删数问题"。代码量不到二十行,解题思路也说得头头是道,可提交上去就…

2026/10/12 7:33:21 阅读更多 →
自研测试平台开发实战:从架构设计到落地踩坑全记录

自研测试平台开发实战:从架构设计到落地踩坑全记录

1. 为什么我决定自研测试平台做测试平台开发这件事,起因其实很朴素:手工测试的产出效率到顶了,市面上的工具又各有各的别扭,团队里测试、开发、运维三拨人每天在来回拉扯。与其继续在Excel和聊天窗口里打转,不如自己动…

2026/10/12 7:33:21 阅读更多 →
C++装饰器模式实战指南:从继承替代到三种现代实现方案

C++装饰器模式实战指南:从继承替代到三种现代实现方案

装饰器模式在C里总是被低估。很多C开发者觉得这是Java系的东西,或者说“我有继承就够了”,但等到真正需要给一个类动态加功能、又不能把继承树搞成爆炸形状的时候,才会发现装饰器这东西是真能救命的。尤其是维护老代码、做游戏技能系统、写日…

2026/10/12 7:33:21 阅读更多 →
Cloudera Manager集成OpenLDAP认证实战:账号体系收口与排障指南

Cloudera Manager集成OpenLDAP认证实战:账号体系收口与排障指南

从 2018 年开始在大规模 CDH 集群上做运维,我最大的痛苦来源不是 HDFS NameNode 的 Full GC,也不是 Yarn 资源池调参,而是账号体系乱成一锅粥。开发提工单要开 CM 账号,临时同事走了账号还在,安全审计一问三不知&#…

2026/10/12 7:33:21 阅读更多 →
WSL2+Docker+Ollama,本地部署大模型实践(Qwen1.8b)

WSL2+Docker+Ollama,本地部署大模型实践(Qwen1.8b)

本篇文章主要讲解部署思路和实践经验,先解释一下WSL2、Docker、Ollama。 WSL2:可以通俗理解成轻量化虚拟机,但和传统 VMware/VirtualBox 虚拟机不一样。它是 Windows 内置的轻量 Linux 内核,不用单独装完整的 Linux 虚拟机&#…

2026/10/12 7:33:21 阅读更多 →
天津图文广告店实测:社区老店、快印店、印刷厂怎么选?

天津图文广告店实测:社区老店、快印店、印刷厂怎么选?

开头我不绕弯子:天津图文广告店哪家强?这个问题在网上搜一圈,答案基本集中在“离家近的那家”和“价格最便宜的那家”,但真到了要做标书、喷门头、印宣传单的时候,这两个标准远远不够用。过去一个月,我因为…

2026/10/12 7:32:21 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →