Python pandas与建模代码的结合


pandas与建模代码的结合

在建模竞赛中,大家最了解的科学计算工具或者是编程语言的话,估计很多人都是MATLAB。它集数值计算和科学可视化于一身,同时simulink这个杀手锏。只可惜它是商业软件。在开源层面,GNU计划的Octave一直在做与MATLAB的语法兼容。

倘若要寻找一个在建模竞赛中能够像MATLAB那样很方便求解各类的建模算法的编程语言,Python无疑是不二之选。Python众多的第三方库提供了这种可能。

最常见的库有进行矩阵运算的Numpy、进行数据处理的pandas、进行科学计算的Scipy、进行图形绘制及科学可视化的matplotlib、进行符号计算的Sympy以及方便进行机器学习任务的Sklearn。

基本工具Excel肯定没法去完成这些复杂的数据处理任务,而用matlab去完成这些任务的话,又会极为繁琐复杂和不方便。因此,采用python去分析几乎就成了唯一的选择。

恰好Python里面的pandas库提供了大数据处理分析的基本方法,是分析大型数据集的基础武器。

下面就具体讲解一下pandas这个库里面最有用的一些函数操作。

使用pandas用于数据载入和数据清洗,之后切换到模型库去建立模型是一个常见的模型开发工作流。在机器学习中,特征工程是模型开发的重要部分之一。特征工程是指从原生数据集中提取可用于模型上下文的有效信息的数据转换过程或分析。

展示一些可以在利用pandas进行数据操作和建模之间无痛切换的方法。

pandas和其他分析库的结合点通常是NumPy数组。要将DataFrame转换为NumPy数组,使用.values属性:

将数组再转换为DataFrame,可以传递一个含有列名的二维ndarray:

.values属性一般在你的数据是同构化的时候使用——例如,都是数字类型的时候。如果你的数据是异构化的,结果将是Python对象的ndarray:

对于某些模型,可能只想使用一部分列。推荐使用loc索引和values:

有些库对pandas有本地化支持,可以自动做以下工作:将数据从DataFrame转换到NumPy中并将模型参数名称附于输出表的列或Series上。在其他情况下,将不得不手动去处理这些“元数据管理”的操作。

学习了pandas的Categorical类型和pandas.get_dummies函数。假设在示例数据集中,有一个非数字类型的列:

如果想使用虚拟变量替代’category’列,先创建虚拟变量,之后删除’categroy’列,然后连接结果: