当前位置: 首页 > article >正文

量化分析第一步:手把手教你用Pandas清洗网易金融下载的股票CSV数据

量化分析第一步手把手教你用Pandas清洗网易金融下载的股票CSV数据刚拿到网易金融导出的股票CSV数据时很多人会直接扔进分析工具——直到发现中文列名报错、日期格式混乱、停牌日数据缺失等问题才手忙脚乱。作为量化分析的真正起点数据清洗的质量直接决定后续策略回测的可靠性。本文将带你用Pandas完成从原始CSV到分析就绪数据集的完整蜕变解决那些没人告诉你的实战细节。1. 数据加载与初步观察拿到CSV文件后别急着动手清洗。先用pd.read_csv()的这几个参数避开初期陷阱import pandas as pd raw_data pd.read_csv(300001.csv, encodinggbk, # 处理网易中文编码 parse_dates[日期], # 自动解析日期列 na_values[None, --]) # 自定义缺失值标记首次检查必做三件事执行raw_data.head(3)确认中文列名是否正常显示用raw_data.info()查看各列数据类型——特别注意数字列是否被误判为object运行raw_data.isnull().sum()统计缺失值分布常见问题示例表问题类型典型表现解决方案编码问题列名显示为乱码指定encodinggbk日期格式日期列仍是字符串设置parse_dates参数数字异常成交量显示为object使用pd.to_numeric转换提示网易数据中涨跌幅列可能含有%需先去除符号再转换数据类型2. 列标准化处理金融数据分析最忌讳不规范的列名。建议按国际惯例重命名column_mapping { 日期: date, 股票代码: symbol, 名称: name, 收盘价: close, 最高价: high, 最低价: low, 开盘价: open, 成交量: volume, 成交金额: amount } clean_data raw_data.rename(columnscolumn_mapping)关键操作细节使用英文列名避免编码问题统一命名风格全部小写避免空格保留原始数据副本以备核查特殊列处理技巧# 处理复权因子列 if 复权因子 in clean_data.columns: clean_data[adj_factor] pd.to_numeric(clean_data[复权因子]) # 转换涨跌幅百分比 clean_data[pct_change] ( clean_data[涨跌幅].str.replace(%, ).astype(float) / 100 )3. 深度清洗实战3.1 处理缺失值与停牌日网易数据中停牌日通常表现为成交量/成交金额为0或NaNOHLC价格相同但需注意涨跌停情况# 标记停牌日 clean_data[is_trading] ~( (clean_data[volume].isna()) | (clean_data[volume] 0) ) # 前向填充关键价格数据 fill_cols [open, high, low, close] clean_data[fill_cols] clean_data[fill_cols].fillna(methodffill)3.2 复权价格计算若数据集包含复权因子建议同时保存原始价格和复权后价格if adj_factor in clean_data.columns: for price_col in [open, high, low, close]: clean_data[fadj_{price_col}] ( clean_data[price_col] * clean_data[adj_factor] )3.3 日期维度增强为后续时间序列分析添加实用时间特征clean_data[day_of_week] clean_data[date].dt.dayofweek clean_data[month] clean_data[date].dt.month clean_data[quarter] clean_data[date].dt.quarter4. 数据存储优化CSV已无法满足量化分析需求推荐两种高性能存储格式Parquet格式适合长期归档clean_data.to_parquet(300001.parquet, enginepyarrow, compressionsnappy)Feather格式适合快速读写clean_data.to_feather(300001.feather)格式对比表特性CSVParquetFeather读取速度慢快最快磁盘占用大小中等跨语言支持好优秀有限适合场景原始数据交换长期存储临时分析5. 数据质量验证清洗完成后必须进行完整性检查# 检查时间连续性 date_diff clean_data[date].diff().dt.days missing_dates date_diff[date_diff 1] print(f发现{len(missing_dates)}个时间间隔异常) # 验证价格逻辑 price_check ( (clean_data[high] clean_data[low]) (clean_data[high] clean_data[close]) (clean_data[high] clean_data[open]) (clean_data[low] clean_data[close]) (clean_data[low] clean_data[open]) ) assert price_check.all(), 存在价格逻辑错误6. 进阶处理技巧6.1 多股票数据合并当处理多个股票CSV时使用concat前注意all_stocks [] for file in csv_files: stock_data pd.read_csv(file) # 添加股票代码标识 stock_data[symbol] file.stem all_stocks.append(stock_data) combined pd.concat(all_stocks).sort_values([symbol, date])6.2 内存优化技巧处理大规模数据时可大幅减少内存占用dtype_optimized { open: float32, high: float32, low: float32, close: float32, volume: int32 } clean_data clean_data.astype(dtype_optimized)6.3 快速查看清洗效果制作关键指标对比图import matplotlib.pyplot as plt fig, ax plt.subplots(2, 1, figsize(12, 8)) raw_data[收盘价].plot(axax[0], title原始数据) clean_data[close].plot(axax[1], title清洗后数据) plt.tight_layout()清洗过程中最常遇到的坑是复权因子处理不当——有次我直接使用后复权价格计算收益率结果导致整个月的夏普比率计算失真。后来发现网易的复权因子需要与最新交易日同步更新现在我会定期检查调整系数的基准日期。另一个经验是永远保留原始数据的副本在清洗过程的每个阶段都添加版本标记这样当发现逻辑错误时可以快速回溯。

相关文章:

量化分析第一步:手把手教你用Pandas清洗网易金融下载的股票CSV数据

量化分析第一步:手把手教你用Pandas清洗网易金融下载的股票CSV数据 刚拿到网易金融导出的股票CSV数据时,很多人会直接扔进分析工具——直到发现中文列名报错、日期格式混乱、停牌日数据缺失等问题才手忙脚乱。作为量化分析的真正起点,数据清洗…...

用Vue3 + CSS动画复刻扭蛋抽奖效果:从产品原型到流畅交互的完整实现

Vue3 CSS动画打造高沉浸感扭蛋抽奖:工程化实现与性能优化实战 扭蛋机抽奖效果在营销活动中总能吸引用户眼球——那些跳跃的彩球、戏剧性的下落过程、充满惊喜的开启瞬间,构成了完美的用户体验闭环。作为前端开发者,我们不仅要还原视觉效果&a…...

IDEA调试必备:VM options和Program arguments的10个高级用法(含Spring/MyBatis实战)

IDEA调试进阶:VM Options与Program Arguments的10个企业级实战技巧 在Java开发领域,IDEA作为主流IDE,其调试功能的高阶使用往往能显著提升开发效率。特别是VM Options和Program Arguments这两个看似基础的配置项,实则蕴含着许多未…...

【SketchUp 2024】从模糊到清晰:二维图像交互全流程优化与三维模型导入/导出实战解析

1. SketchUp 2024图像处理全流程优化 每次打开SketchUp准备大展拳脚时,最让人头疼的就是导入的参考图总是糊成一片。这个问题在2024版其实有更智能的解决方案。在系统设置里找到OpenGL选项时,会发现新增了"智能纹理优化"选项,这个功…...

【IMX6ULL驱动开发实战】03.打通开发环境:从零配置IMX6ULL与虚拟机的静态IP网络

1. 为什么需要配置静态IP网络环境 刚接触IMX6ULL开发板的朋友经常会遇到一个头疼的问题:为什么我在虚拟机里编译好的程序,死活传不到开发板上?这就像你写了一封信,却找不到收件人的具体地址一样让人抓狂。其实核心原因就在于网络…...

如何用MTB Nodes轻松制作专业级ComfyUI动画:免费开源终极指南

如何用MTB Nodes轻松制作专业级ComfyUI动画:免费开源终极指南 【免费下载链接】comfy_mtb Animation oriented nodes pack for ComfyUI 项目地址: https://gitcode.com/gh_mirrors/co/comfy_mtb 想用ComfyUI创作惊艳动画却不知从何开始?MTB Nodes…...

STM32 HAL库驱动NRF24L01老是失败?这份避坑指南帮你搞定SPI配置、电源和天线

STM32 HAL库驱动NRF24L01实战避坑指南 调试NRF24L01模块时,明明硬件连接正确,代码也照着示例写了,可就是无法正常通信——这种抓狂的经历相信不少开发者都遇到过。作为一款经典的2.4GHz无线模块,NRF24L01以其低成本和高性能在物联…...

深度学习模型解释:SHAP与LIME

深度学习模型解释:SHAP与LIME 引言 深度学习模型在各个领域取得了显著的成功,但它们往往被视为"黑盒",难以理解其决策过程。模型解释性已成为深度学习应用中的关键挑战,尤其是在医疗、金融等对决策可解释性要求较高的领…...

2023最新GPS星历下载指南:从广播星历到精密星历(附RINEX/SP3文件解析)

2023最新GPS星历数据获取与实战应用全解析 在卫星导航定位领域,GPS星历数据的质量直接影响着定位精度。无论是测绘工程中的厘米级作业,还是自动驾驶车辆的高精度导航,都离不开准确的星历数据支撑。2023年,随着全球导航卫星系统&am…...

国民技术 N32G457VEL7 LQFP-100 单片机

关键特性 内核CPU一32位ARM Cortex-M4内核FPU,单周期硬件乘除法指令,支持DSP指令和MPU 内置8KB指令缓存,支持Flash加速单元执行程序0等待最高主频144MHz,180DMIPS 加密存储器 硬件ECC校验,10万次擦写次数,10年数据保持…...

国民技术 N32G451RCL7 LQFP-64 单片机

关键特性 内核CPU 32位ARM Cortex-M4内核FPU,单周期硬件乘除法指令,支持 DSP指令和 MPU 内置8KB指令Cache缓存,支持Flash加速单元执行程序0等待 最高主频144MHz,180DMIPS 加密存储器 高达512KByte片内Flash,支持加密存…...

别再乱用本地布线了!7系列FPGA时钟设计避坑指南:BUFG、BUFH、BUFR到底怎么选?

7系列FPGA时钟架构深度解析:BUFG、BUFH与BUFR的黄金选择法则 当你在Vivado中看到时序报告里那些令人头疼的红色警告时,是否曾怀疑过自己的时钟方案出了问题?7系列FPGA的时钟架构就像一座精密的钟表,每个齿轮(时钟缓冲…...

EXPKEYSIG签名失效:Open Robotics密钥更新与APT源安全修复实战

1. 当APT更新报错时发生了什么? 那天我正在给一台Ubuntu 18.04的机器人开发机做例行更新,突然在终端里看到一串刺眼的红色错误提示:"下列签名无效:EXPKEYSIG F42ED6FBAB17C654"。作为一个常年和Linux打交道的开发者&am…...

终极指南:如何用Bioicons免费矢量图标库快速制作专业科研图表

终极指南:如何用Bioicons免费矢量图标库快速制作专业科研图表 【免费下载链接】bioicons A library of free open source icons for science illustrations in biology and chemistry 项目地址: https://gitcode.com/gh_mirrors/bi/bioicons Bioicons是一个免…...

INAV/Ardupilot固件Mixer进阶:手把手教你为自定义飞行器(如扑翼机)编写动力分配函数

INAV/Ardupilot固件Mixer进阶:手把手教你为自定义飞行器编写动力分配函数 当四轴飞行器和固定翼已经无法满足你的创造力时,或许该考虑为那只机械蜂鸟或矢量推进的异形飞行器编写专属的动力分配逻辑了。作为开源飞控领域的双子星,INAV和Ardupi…...

GHelper:如何用10MB替代华硕官方控制中心,实现极致轻量化的硬件掌控

GHelper:如何用10MB替代华硕官方控制中心,实现极致轻量化的硬件掌控 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyr…...

TI毫米波雷达选型指南:IWR6843 vs IWR1843性能对比与实战场景解析

TI毫米波雷达选型指南:IWR6843 vs IWR1843性能对比与实战场景解析 毫米波雷达技术正在重塑工业检测、智能交通和自动化控制领域的感知能力。作为该领域的核心器件,德州仪器(TI)的IWR系列毫米波雷达凭借其高集成度和卓越性能&…...

3分钟搞定:Windows 11 LTSC完整恢复微软商店终极方案

3分钟搞定:Windows 11 LTSC完整恢复微软商店终极方案 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore Windows 11 LTSC(长期服务…...

Universal Control Remapper:3步搞定游戏控制器终极映射

Universal Control Remapper:3步搞定游戏控制器终极映射 【免费下载链接】UCR Universal Control Remapper [ALPHA] 项目地址: https://gitcode.com/gh_mirrors/ucr/UCR 想要让老游戏手柄在新游戏中焕发新生?或者想在模拟器上获得更精准的控制体验…...

终极macOS视频预览解决方案:QLVideo让你的Finder支持所有视频格式

终极macOS视频预览解决方案:QLVideo让你的Finder支持所有视频格式 【免费下载链接】QuickLookVideo This package allows macOS Finder to display thumbnails, static QuickLook previews, cover art and metadata for most types of video files. 项目地址: htt…...

AGI不是“是否”,而是“谁先”:SITS2026圆桌首次公开全球TOP12机构AGI路线图对比(含训练成本曲线、对齐成熟度、安全冗余等级)

第一章:SITS2026圆桌:AGI何时到来 2026奇点智能技术大会(https://ml-summit.org) 圆桌共识与分歧焦点 在SITS2026主会场举行的“AGI何时到来”圆桌论坛中,来自DeepMind、Anthropic、中科院自动化所及OpenAI前核心架构师的六位专家展开激烈交…...

图像预处理:腐蚀与膨胀操作(形态学处理入门)

图像预处理:腐蚀与膨胀操作(形态学处理入门)📚 本章学习目标:深入理解腐蚀与膨胀操作(形态学处理入门)的核心概念与实践方法,掌握关键技术要点,了解实际应用场景与最佳实…...

DPO:直接偏好优化入门详解

DPO:直接偏好优化入门详解📝 本章学习目标:通过本章学习,你将全面掌握"DPO:直接偏好优化入门详解"这一核心主题,建立系统性认知。一、引言:为什么这个话题如此重要 在人工智能快速发展…...

**Deno从零搭建高性能 Web 服务:权限控制 + 日志审计一体化实践**在现代Node.js 生态中,**Deno**

Deno 从零搭建高性能 Web 服务:权限控制 日志审计一体化实践 在现代 Node.js 生态中,Deno 凭借其原生 TypeScript 支持、安全沙箱机制和模块化设计迅速崛起。相比传统 Node.js,Deno 更适合构建轻量级、可维护性强的后端服务,尤其…...

Vue2项目实战:从零构建store模块与核心API应用——配置、mutations与getters详解

1. Vuex核心概念与项目初始化 在Vue2项目中,当应用规模逐渐扩大时,组件间的状态管理会变得复杂。Vuex作为官方推荐的状态管理方案,通过集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。想…...

从‘速度饱和’到‘并联谐振’:拆解一个LNA设计笔记里的高频电路思维

从‘速度饱和’到‘并联谐振’:高频LNA设计中的工程思维跃迁 站在实验室的示波器前,看着那组不断跳动的波形,我突然意识到——教科书上那些完美的公式与实际的电路板之间,隔着一整个太平洋。这个认知在我第一次尝试设计低噪声放大…...

用Global Wheat Detection数据集做目标检测?这份保姆级数据预处理与可视化教程请收好

Global Wheat Detection数据集实战:从数据解析到可视化洞察 小麦作为全球最重要的粮食作物之一,其产量预测对农业决策至关重要。而准确检测田间小麦头数量是产量估算的关键步骤。Global Wheat Detection数据集正是为此而生,它包含了来自全球…...

告别Breakpad!在Qt项目中迁移到Google Crashpad的完整指南与踩坑实录

从Breakpad到Crashpad:Qt项目崩溃捕获系统升级实战手册 当你的Qt应用程序在客户现场突然崩溃时,能否快速定位问题可能决定了用户留存率。过去十年间,Google Breakpad一直是C开发者捕获崩溃信息的首选工具,但随着技术演进&#xff…...

终极FanControl中文配置指南:3步实现Windows智能风扇控制

终极FanControl中文配置指南:3步实现Windows智能风扇控制 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending…...

浦语灵笔2.5-7B应用场景:跨境电商卖家上传商品图→多语言描述生成

浦语灵笔2.5-7B应用场景:跨境电商卖家上传商品图→多语言描述生成 1. 引言:跨境电商卖家的“描述”之痛 如果你是做跨境电商的卖家,每天最头疼的事情是什么?不是选品,不是物流,而是给商品写描述。 想象一…...