• Numpy:Numerical Python :
  • Numpy概念

Numpy即数值Python包,是Python进行科学计算一个基础包。

包括:

  • 一个具有矢量运算和复杂广播能力的快速且节省空间的多维数组,称为ndarray(N-dimensional array object);
  • 用于对数组数据进行快速运算的标准科学函数,ufunc(unviersal function object);
  • 用于整合c/c++和fortran代码的工具包;
  • 实用的线性代数,博里叶变换和随机数生成函数。Numpy和稀疏矩阵运算包scipy配合使用更加方便。
  • Numpy数据结构

Numpy的数据结构:ndarray

  • ndarry:N维数组
  • 一种相同类型元素组成的多维数组,元素数量是事先指定好的。
  • 元素的数据类型由dtype(data-type)对象来指定,每个ndarry只有一种dtype。
  • 大小固定,创建好数组时一旦指定好大小,就不会再发生改变。
  • Numpy主要用途、常用函数
  • 创建数组:
  1. np.array() 创建一维或多维数组
  2. np.linspace() 创建一个具有指定间隔的浮点数的数组
  3. np.arange() 在给定的间隔内返回具有一定步长的整数。
  4. np.random.uniform() 在上下限之间的均匀分布中生成随机样本。
  5. np.random.randint() 在一个范围内生成n个随机整数样本。
  6. np.random.random() 生成n个随机浮点数样本。
  7. np.logspace() 在对数尺度上生成间隔均匀的数字。
  8. np.zeros() 创建一个全部为0的数组。
  9. np.ones() 函数创建一个全部为1的数组。
  10. np.full() 创建一个单独值的n维数组。
  11. np.identity() 创建具有指定维度的单位矩阵。
  • 数组操作:
  1. np.min()返回数组中的最小值。
  2. np.max()返回数组中的最大值。
  3. np.unique()返回一个所有唯一元素排序的数组。
  4. np.mean()返回数组的平均数
  5. np.medain()返回数组的中位数。
  6. np.digitize()返回输入数组中每个值所属的容器的索引。
  7. np.reshape()它返回一个数组,其中包含具有新形状的相同数据。
  8. np.expand_dims() 用于扩展数组的维度。
  9. np.squeeze() 通过移除一个单一维度来降低数组的维度。
  10. np.count_nonzero() 计算所有非零元素并返回它们的计数。
  11. np.argwhere() 查找并返回非零元素的所有下标。
  12. np.argmax() argmax返回数组中Max元素的索引
  13. np.argmin() argmin将返回数组中min元素的索引。
  14. np.sort() 对数组排序。
  15. np.abs() 返回数组中元素的绝对值
  16. np.round() 将浮点值四舍五入到指定数目的小数点。
  17. np.clip() 将数组的裁剪值保持在一个范围内。
  • 替换数组中的值:
  1. np.where() 返回满足条件的数组元素。
  2. np.put() 用给定的值替换数组中指定的元素。
  3. np.copyto将一个数组的内容复制到另一个数组中。
  • 集合操作:
  1. np.intersect1d() 函数以排序的方式返回两个数组中所有唯一的值。
  2. np.setdiff1d() 函数返回arr1中在arr2中不存在的所有唯一元素。
  3. np.setxor1d() 将按顺序返回两个数组中所有唯一的值。
  4. np.union1d() 函数将两个数组合并为一个。
  • 数组分割:
  1. np.hsplit() 函数将数据水平分割为n个相等的部分。
  2. np.vsplit() 将数据垂直分割为n个相等的部分。
  • 数组叠加:
  1. np.hstack() 将在另一个数组的末尾追加一个数组。
  2. np.vstack() 将一个数组堆叠在另一个数组上。
  • 数组比较:
  1. np.allclose() 根据公差值查找两个数组是否相等或近似相等
  2. np.equal() 比较两个数组的每个元素,如果元素匹配就返回True
  • 重复的数组元素:
  1. np.repeat() 用于重复数组中的元素n次
  2. np.title() 通过重复A,rep次来构造一个数组
  • 爱因斯坦求和:
  1. umpy.einsum() 用于计算数组上的多维和线性代数运算
  • 统计分析:
  1. np.histogram() 计算一组数据的直方图值
  2. np.percentile() 沿指定轴计算数据的Q-T-T百分位数
  3. np.std() 用于计算沿轴的标准偏差
  4. np.var() 用于计算沿轴的方差
  • 数组打印:
  1. np.set_printoptions() 显示带有浮点数的十进制值
  • 保存和加载数据:
  1. np.savetxt() 用于在文本文件中保存数组的内容
  2. np.loadtxt() 用于从文本文件加载数组,它以文件名作为参数

  • Pandas 
  • Pandas概念

是 Python 语言的一个扩展程序库,用于数据分析。

  • Pandas 一个强大的分析结构化数据的工具集,基础是Numpy(提供高性能的矩阵运算)
  • Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据
  • Pandas 可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征
  • Pandas数据结构

Pandas 在 ndarray 数组(Numpy中的数组)的基础上构建出了两种不同的数据结构,分别是 Series(一维数据结构)、DataFrame(二维数据结构):

  • Series 是带标签的一维数组,这里的标签可以理解为索引,但这个索引并不局限于整数,它也可以是字符类型,比如 a、b、c 等
  • DataFrame 是一种表格型数据结构,它既有行标签,又有列标签

  • Pandas的主要用途、常用函数

Pandas的主要用途:

  • 数据导入导出(读取/保存各种格式)
  • 数据探索(查看、统计、描述)
  • 数据清洗(缺失值、重复值、类型转换)
  • 数据变换(排序、筛选、新增列)
  • 数据整合(合并、拼接、分组聚合)
  • 时间序列分析(重采样、滚动计算)
  • 数据可视化(快速绘图)

具体函数:

  • 读取数据

pd.read_csv() 读取CSV文件

pd.read_excel() 读取Excel文件

pd.read_json() 读取JSON文件

pd.read_sql() 读取SQL数据库

pd.read_html() 读取网页中的表格

  • 导出数据

df.to_csv() 导出为CSV

df.to_excel() 导出为Excel

df.to_json() 导出为JSON

df.to_sql() 导出到数据库

  • 查看数据

df.head() 查看前n行(默认5行)

df.tail() 查看后n行

df.sample() 随机查看n行

df.info() 查看数据基本信息(类型、非空值数量)

df.describe() 查看数值型数据的统计描述

df.shape 查看行数和列数

df.columns 查看列名

df.index 查看索引

df.dtypes 查看每列的数据类型

  • 统计信息

df.count() 非空值计数

df.sum() 求和

df.mean() 均值

df.median() 中位数

df.mode() 众数

df.std() 标准差

df.var() 方差

df.min() 最小值

df.max() 最大值

df.quantile() 分位数

df.corr() 相关系数矩阵

df.cov() 协方差矩阵

  • 选择列

df[] 选择单列,返回Series

df[[]] 选择多列,返回DataFrame

  • 选择行

python

df.loc[] 按标签选择行

df.iloc[] 按位置选择行

df.iloc[:] 选择前n行

df.iloc[[]] 选择指定行

  • 条件筛选

df[df[] > 10] 单条件筛选

df[(df[] > 10) & (df[] < 20)] 多条件与

df[(df[] > 10) | (df[] < 20)] 多条件或

df[df[].isin([])] 包含在列表中

df[~df[].isin([])] 不包含在列表中

df[df[].str.contains()] 字符串包含

  • 常用筛选函数

python

df.query('列 > 10')                         # 使用表达式筛选

df.nlargest(n, '列')                        # 前n个最大值

df.nsmallest(n, '列')                       # 前n个最小值

df.between()                          # 在区间内(需配合loc使用)

  • 缺失值处理

python

df.isnull() 判断缺失值

df.isnull().sum() 统计每列缺失值数量

df.dropna() 删除包含缺失值的行

df.dropna(axis=1) 删除包含缺失值的列

df.dropna(subset=['列1', '列2']) 指定列有缺失才删除

df.fillna(0) 填充缺失值为0

df.fillna(method='ffill') 向前填充

df.fillna(method='bfill') 向后填充

df.fillna(df.mean()) 用均值填充

df.interpolate() 插值填充

  • 重复值处理

python

df.duplicated() 判断重复行

df.duplicated().sum() 统计重复行数量

df.drop_duplicates() 删除重复行

df.drop_duplicates(subset=['列1']) 指定列判断重复

df.drop_duplicates(keep='last') 保留最后一个

  • 数据类型转换

df['列'] = df['列'].astype('float') 转换数据类

df['列'] = pd.to_datetime(df['列']) 转换为日期类型

df['列'] = pd.to_numeric(df['列'], errors='coerce') 转换为数值类型

  • 重命名

df.rename(columns={'旧名':'新名'}) 重命名列

df.rename(index={0:'行0'}) 重命名行

df.columns = ['新列1', '新列2'] 批量重命名

  • 排序

df.sort_values(by='列', ascending=True) 按列升序排序

df.sort_values(by=['列1', '列2']) 多列排序

df.sort_index(ascending=False) 按索引降序排序

  • 应用函数

df.apply(lambda x: x*2) 对整个DataFrame应用函数

df['新列'] = df['列'].apply(lambda x: x*2) 对单列应用函数

df.applymap(lambda x: x*2) 元素级应用函数

df.map({'A':1, 'B':2}) 映射替换

  • 新增列

df['新列'] = 值 添加新列

df.insert(0, '新列', 值) 在指定位置插入列

df.assign(新列 = lambda x: x['列1'] + x['列2']) 使用assign添加

  • 删除

df.drop('列名', axis=1) 删除列

df.drop(['列1', '列2'], axis=1) 删除多列

df.drop(0, axis=0) 删除行(第0行)

df.drop([0, 1, 2], axis=0) 删除多行

  • 拼接

pd.concat([df1, df2]) 纵向拼接(行)

pd.concat([df1, df2], axis=1) 横向拼接(列)

pd.concat([df1, df2], ignore_index=True) 重置索引

  • 合并

pd.merge(df1, df2, on='键') 按键合并(内连接)

pd.merge(df1, df2, on='键', how='left') 左连接

pd.merge(df1, df2, on='键', how='right') 右连接

pd.merge(df1, df2, on='键', how='outer') 外连接

pd.merge(df1, df2, left_on='键1', right_on='键2') 不同键名合并

  • 连接

df1.join(df2) 按索引连接

df1.join(df2, how='outer') 外连接

  • 分组

df.groupby('列') 按单列分组

df.groupby(['列1', '列2']) 按多列分组

df.groupby('列').groups 查看分组情况

  1. 聚合

df.groupby('列').sum() 分组求和

df.groupby('列').mean() 分组求均值

df.groupby('列').agg(['mean', 'std']) 多个聚合函数

df.groupby('列').agg({'列1':'mean', '列2':'sum'}) 不同列不同聚合

df.groupby('列').transform('mean') 转换(保持原形状)

  1. 透视表

pd.pivot_table(df, values='值', index='行', columns='列', aggfunc='mean')

pd.pivot_table(df, aggfunc=['mean', 'sum'], fill_value=0)

df.pivot(index='行', columns='列', values='值')

  1. 交叉表

pd.crosstab(df['列1'], df['列2']) 频数交叉表

pd.crosstab(df['列1'], df['列2'], margins=True) 含总计

  1. 日期时间

pd.to_datetime(df['日期列']) 转换为日期格式

df.set_index('日期列', inplace=True) 设置日期为索引

df.resample('M').mean() 按月重采样

df.resample('D').sum() 按天重采样

  1. 时间偏移

df.shift(1) 数据下移1行

df.shift(-1) 数据上移1行

df.diff() 差分

df.pct_change() 百分比变化

df.rolling(window=3).mean() 滚动均值

df.expanding().mean() 扩展均值

  1. 数据可视化

df.plot() 折线图

df.plot(kind='bar') 柱状图

df.plot(kind='hist') 直方图

df.plot(kind='box') 箱线图

df.plot(kind='scatter', x='列1', y='列2') 散点图

df.corr().plot(kind='heatmap') 热力图(需seaborn)

  1. 设置显示选项

pd.set_option('display.max_rows', 100) 最大显示行数

pd.set_option('display.max_columns', 50) 最大显示列数

pd.set_option('display.float_format', '{:.2f}'.format) 小数格式

  1. 链式操作

python

(df .query('成绩 > 60') .groupby('班级') .agg({'成绩': ['mean', 'std']}) .reset_index() .sort_values(('成绩', 'mean'), ascending=False))

  1. 性能优化

df.memory_usage() 查看内存使用

df['列'] = df['列'].astype('category') 转换为类别类型节省内存

pd.read_csv('file.csv', dtype={'列': 'category'}) 读取时指定类型

  • Python工具在数据挖掘领域中的应用展望
  • AI驱动的全流程自动化挖掘

数据挖掘的起点不再是“打开Jupyter Notebook写import”,而是用自然语言描述业务问题。分析师对着麦克风说:“分析近三年客户流失特征,找出关键预警指标并建立预测模型”,Python生态中的PandasAI、LangChain等工具会自动完成:

  • 数据理解阶段:AI自动扫描数据字典,识别字段含义,生成数据质量报告
  • 特征工程阶段:自动进行特征交叉、分箱、编码,甚至发现人工难以察觉的高阶组合特征
  • 模型迭代阶段:PyCaret 3.0、Auto-Sklearn 2.0在后台并行跑数十个模型,自动选择最优集成方案
  • 结果解读阶段:AI不仅输出预测准确率,还能用业务语言解释:“价格敏感度是流失的首要因素,建议优先优化会员定价策略”

价值点:

门槛革命:业务人员不再依赖技术团队排期,可直接用自然语言完成挖掘任务

效率跃迁:原本需要2周的挖掘项目,压缩到2小时内完成从数据到洞察的全流程

质量提升:AI自动探索的特征组合远超人工经验,模型准确率提升15%-30%

  • 云原生+大模型驱动的海量数据挖掘

Python挖掘工具正经历云原生化改造:

  • 分布式挖掘成为默认选项:Dask、Ray让Pandas和scikit-learn代码无缝迁移到云端集群,单机内存限制被打破。分析师写的df.groupby().apply(),底层自动分配到100个节点并行计算
  • 大模型作为挖掘引擎:传统挖掘依赖结构化数据,2025年LLM即挖掘引擎成为新范式。利用LangChain编排,直接对非结构化的客服对话、用户评论进行情感挖掘、主题建模,输出结构化洞察
  • 实时挖掘与决策闭环:结合Databricks、FineBI云版,挖掘模型不再是离线跑批,而是嵌入业务系统。用户点击网站的同时,后台Python模型实时计算流失概率,动态调整优惠策略

价值点:

算力无限扩展:从单机到云端,挖掘数据量级从GB跃升至PB

模态融合挖掘:结构化数据+非结构化文本+图像视频的统一挖掘成为现实

决策实时化:挖掘结果从“事后复盘”变为“实时干预”

  • 可解释AI与数据治理:挖掘结果的“信任基石”

数据挖掘的价值不再取决于模型精度,而取决于业务方是否敢用。Python生态中的可解释性和治理工具正成为挖掘流程的“标配”:

  • 自动化数据质量治理:Great Expectations、Pandera在挖掘前自动执行数百条质量规则(空值率、异常值、逻辑一致性),不达标的数据根本无法进入挖掘管道
  • 挖掘过程全链路审计:每个特征衍生、每次模型调参都被自动记录,结合FineBI指标中心,实现从原始数据到业务指标的完整血缘追踪
  • 可解释性成为交付物:SHAP、LIME不再是可选项,而是挖掘报告的必备章节。模型不仅要告诉你“谁可能流失”,还要说清楚“为什么是这5个客户”,让业务人员敢于采取行动

价值点:

合规无忧:满足GDPR、个人信息保护法等法规要求,敏感数据在挖掘前自动脱敏

信任建立:可解释的挖掘结果让业务部门从“怀疑模型”转为“依赖模型”

模型持续优化:数据质量监控+模型监控形成闭环,自动发现数据漂移,触发模型重训

  • Python工具在日常生活工作中的潜在应用场景
  • Python 量化金融实战:突破传统框架的技术革新之路

在金融科技浪潮席卷全球的今天,Python 凭借其独特的技术优势,正重新定义着量化金融的边界。本文将从技术瓶颈突破的角度,为您揭示 Python 在量化金融领域的创新应用。

量化金融的技术困境与 Python 破局:当前传统量化方法面临着数据处理效率低、模型验证周期长、策略迭代速度慢等核心问题。Python 通过以下方式实现技术突破:

数据处理能力对比分析

技术方案

数据处理速度

开发效率

模型精度

维护成本

传统 Excel 分析

缓慢

中等

一般

专业金融软件

快速

Python 技术栈

极快

优秀

中等

Python 量化金融的技术优势体现在三个层面:

  • 底层架构优势:基于 NumPy 和 Pandas 的向量化计算,相比传统循环处理提升数十倍性能。
  • 中层框架完备:scikit-learn、statsmodels 等机器学习库提供丰富的算法实现。
  • 上层应用灵活:可根据具体业务需求快速构建定制化分析系统。

Python 量化金融技术的深度应用能够实现:

  • 投资效率提升:通过算法优化减少人工干预,提高决策速度。
  • 风险控制强化:构建多维度的风险评估体系,降低系统性风险。
  • 业务模式创新:基于技术优势开发新的金融服务产品。
  • Python在人工智能领域的价值

Python已构建覆盖数据科学与机器学习、深度学习、自然语言处理、计算机视觉四大领域的完整AI技术栈,凭借NumPy、PyTorch、Transformers、OpenCV等核心工具链,形成从底层计算到垂直场景的全链路支撑;更重要的是,Python生态打破了领域边界,支持计算机视觉与自然语言处理的跨模态融合,让开发者能够基于统一的语言环境,灵活组合不同工具构建复杂的多模态AI系统,真正实现“一套语言,全栈智能”。

核心优势与价值:

  • 简洁易学
    语法接近自然语言,降低了AI技术的学习门槛。研究者可以专注于算法创新而非语言细节,业务人员也能通过AutoML工具参与数据分析。
  • 丰富的库与框架

计算层:NumPy/SciPy提供科学计算基础

算法层:scikit-learn覆盖90%的传统机器学习需求

深度学习层:PyTorch/TensorFlow支撑SOTA模型研发

应用层:Hugging Face提供数千个预训练模型

  • 跨平台性
    Windows、Linux、macOS以及云端、边缘设备均可运行,实现“一次开发,多处部署”。结合ONNX、TensorRT等工具,可高效部署到移动端和嵌入式设备。
  • 社区活跃

Stack Overflow上Python/AI类问题响应速度快

GitHub上AI开源项目超90%使用Python

形成了从学术论文到开源实现的快速转化链路

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐