Python 的Numpy与Pandas的介绍
更重要的是,Python生态打破了领域边界,支持计算机视觉与自然语言处理的跨模态融合,让开发者能够基于统一的语言环境,灵活组合不同工具构建复杂的多模态AI系统,真正实现“一套语言,全栈智能”。(df .query('成绩 > 60') .groupby('班级') .agg({'成绩': ['mean', 'std']}) .reset_index() .sort_values(('成绩', 'm
- 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主要用途、常用函数
- 创建数组:
- np.array() 创建一维或多维数组
- np.linspace() 创建一个具有指定间隔的浮点数的数组
- np.arange() 在给定的间隔内返回具有一定步长的整数。
- np.random.uniform() 在上下限之间的均匀分布中生成随机样本。
- np.random.randint() 在一个范围内生成n个随机整数样本。
- np.random.random() 生成n个随机浮点数样本。
- np.logspace() 在对数尺度上生成间隔均匀的数字。
- np.zeros() 创建一个全部为0的数组。
- np.ones() 函数创建一个全部为1的数组。
- np.full() 创建一个单独值的n维数组。
- np.identity() 创建具有指定维度的单位矩阵。
- 数组操作:
- np.min()返回数组中的最小值。
- np.max()返回数组中的最大值。
- np.unique()返回一个所有唯一元素排序的数组。
- np.mean()返回数组的平均数
- np.medain()返回数组的中位数。
- np.digitize()返回输入数组中每个值所属的容器的索引。
- np.reshape()它返回一个数组,其中包含具有新形状的相同数据。
- np.expand_dims() 用于扩展数组的维度。
- np.squeeze() 通过移除一个单一维度来降低数组的维度。
- np.count_nonzero() 计算所有非零元素并返回它们的计数。
- np.argwhere() 查找并返回非零元素的所有下标。
- np.argmax() argmax返回数组中Max元素的索引
- np.argmin() argmin将返回数组中min元素的索引。
- np.sort() 对数组排序。
- np.abs() 返回数组中元素的绝对值
- np.round() 将浮点值四舍五入到指定数目的小数点。
- np.clip() 将数组的裁剪值保持在一个范围内。
- 替换数组中的值:
- np.where() 返回满足条件的数组元素。
- np.put() 用给定的值替换数组中指定的元素。
- np.copyto将一个数组的内容复制到另一个数组中。
- 集合操作:
- np.intersect1d() 函数以排序的方式返回两个数组中所有唯一的值。
- np.setdiff1d() 函数返回arr1中在arr2中不存在的所有唯一元素。
- np.setxor1d() 将按顺序返回两个数组中所有唯一的值。
- np.union1d() 函数将两个数组合并为一个。
- 数组分割:
- np.hsplit() 函数将数据水平分割为n个相等的部分。
- np.vsplit() 将数据垂直分割为n个相等的部分。
- 数组叠加:
- np.hstack() 将在另一个数组的末尾追加一个数组。
- np.vstack() 将一个数组堆叠在另一个数组上。
- 数组比较:
- np.allclose() 根据公差值查找两个数组是否相等或近似相等
- np.equal() 比较两个数组的每个元素,如果元素匹配就返回True
- 重复的数组元素:
- np.repeat() 用于重复数组中的元素n次
- np.title() 通过重复A,rep次来构造一个数组
- 爱因斯坦求和:
- umpy.einsum() 用于计算数组上的多维和线性代数运算
- 统计分析:
- np.histogram() 计算一组数据的直方图值
- np.percentile() 沿指定轴计算数据的Q-T-T百分位数
- np.std() 用于计算沿轴的标准偏差
- np.var() 用于计算沿轴的方差
- 数组打印:
- np.set_printoptions() 显示带有浮点数的十进制值
- 保存和加载数据:
- np.savetxt() 用于在文本文件中保存数组的内容
- 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 查看分组情况
- 聚合
df.groupby('列').sum() 分组求和
df.groupby('列').mean() 分组求均值
df.groupby('列').agg(['mean', 'std']) 多个聚合函数
df.groupby('列').agg({'列1':'mean', '列2':'sum'}) 不同列不同聚合
df.groupby('列').transform('mean') 转换(保持原形状)
- 透视表
pd.pivot_table(df, values='值', index='行', columns='列', aggfunc='mean')
pd.pivot_table(df, aggfunc=['mean', 'sum'], fill_value=0)
df.pivot(index='行', columns='列', values='值')
- 交叉表
pd.crosstab(df['列1'], df['列2']) 频数交叉表
pd.crosstab(df['列1'], df['列2'], margins=True) 含总计
- 日期时间
pd.to_datetime(df['日期列']) 转换为日期格式
df.set_index('日期列', inplace=True) 设置日期为索引
df.resample('M').mean() 按月重采样
df.resample('D').sum() 按天重采样
- 时间偏移
df.shift(1) 数据下移1行
df.shift(-1) 数据上移1行
df.diff() 差分
df.pct_change() 百分比变化
df.rolling(window=3).mean() 滚动均值
df.expanding().mean() 扩展均值
- 数据可视化
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)
- 设置显示选项
pd.set_option('display.max_rows', 100) 最大显示行数
pd.set_option('display.max_columns', 50) 最大显示列数
pd.set_option('display.float_format', '{:.2f}'.format) 小数格式
- 链式操作
python
(df .query('成绩 > 60') .groupby('班级') .agg({'成绩': ['mean', 'std']}) .reset_index() .sort_values(('成绩', 'mean'), ascending=False))
- 性能优化
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
形成了从学术论文到开源实现的快速转化链路
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐


所有评论(0)