pandas教程:Interfacing Between pandas and Model Code pandas与建模代码间的交互

文章目录

  • Chapter13 Introduction to Modeling Libraries in Python(Python中建模库的介绍)
  • 13.1 Interfacing Between pandas and Model Code(pandas与建模代码间的交互)

Chapter13 Introduction to Modeling Libraries in Python(Python中建模库的介绍)

这一章回顾一下之间pandas的一些特性,希望能在我们处理数据的时候有所帮助。然后会简要介绍两个很有用的建模工具:statsmodelsscikit-learn

13.1 Interfacing Between pandas and Model Code(pandas与建模代码间的交互)

一个通常的工作流程中,在建模之前,会用pandas来加载数据并清理。模型开发过程中,一个很重要的部分就是特征工程(feature engineering),指的是通过数据变换或分析,从原始数据中提取出对建模有用的信息。之前介绍的聚合(aggregation)和GroupBy就经常用于特征工程。

至于什么样才是好的特征工程,这就超出了本书的范围。这里会简单介绍如何在数据处理与建模之间切换。

连接pandas和其他一些分析库的点,通常是Numpy数组。要想把一个DataFrame变为Numpy数组,使用.values属性:

import numpy as np
import pandas as pd
data = pd.DataFrame({'x0': [1, 2, 3, 4, 5], 'x1': [0.01, -0.01, 0.25, -4.1, 0.], 'y': [-1.5, 0., 3.6, 1.3, -2.]})
data
x0x1y
010.01-1.5
12-0.010.0
230.253.6
34-4.101.3
450.00-2.0
data.columns
Index(['x0', 'x1', 'y'], dtype='object')
data.values
array([[ 1.  ,  0.01, -1.5 ],[ 2.  , -0.01,  0.  ],[ 3.  ,  0.25,  3.6 ],[ 4.  , -4.1 ,  1.3 ],[ 5.  ,  0.  , -2.  ]])

变回DataFrame的方法是,传入一个二维ndarray,并指定列名:

df2 = pd.DataFrame(data.values, columns=['one', 'two', 'three'])
df2
onetwothree
01.00.01-1.5
12.0-0.010.0
23.00.253.6
34.0-4.101.3
45.00.00-2.0

.values属性最好用于同质的数据,即数据类型都是数值型。如果有异质的数据,结果会变为python对象:

df3 = data.copy()
df3['strings'] = ['a', 'b', 'c', 'd', 'e']
df3
x0x1ystrings
010.01-1.5a
12-0.010.0b
230.253.6c
34-4.101.3d
450.00-2.0e
df3.values
array([[1, 0.01, -1.5, 'a'],[2, -0.01, 0.0, 'b'],[3, 0.25, 3.6, 'c'],[4, -4.1, 1.3, 'd'],[5, 0.0, -2.0, 'e']], dtype=object)

对于一些模型,我们可能希望使用列中的一部分数据。建议使用loc,然后用values进行索引:

model_cols = ['x0', 'x1']
data.loc[:, model_cols].values
array([[ 1.  ,  0.01],[ 2.  , -0.01],[ 3.  ,  0.25],[ 4.  , -4.1 ],[ 5.  ,  0.  ]])

一些库对于pandas的支持非常好:能自动把DataFrame转换为numpy,并把模型的参数名字作为输出的列名。对于其他的一些库,就必须要自己手动操作了。

在第十二章里,我们学习了pandasCategorical数据类型和pandas.get_dummies函数。假设我们的数据集中有一个非数值列:

data['category'] = pd.Categorical(['a', 'b', 'a', 'a', 'b'],categories=['a', 'b'])
data
x0x1ycategory
010.01-1.5a
12-0.010.0b
230.253.6a
34-4.101.3a
450.00-2.0b

如果想要哑变量来代替category这一列,我们可以创建哑变量,去除category列,然后把结果合并起来:

dummies = pd.get_dummies(data.category, prefix='category')
dummies
category_acategory_b
010
101
210
310
401
data_with_dummies = data.drop('category', axis=1).join(dummies)
data_with_dummies
x0x1ycategory_acategory_b
010.01-1.510
12-0.010.001
230.253.610
34-4.101.310
450.00-2.001

在不同的统计模型上使用哑变量有一些细微的不同。当我们有很多非数值型列的时候,使用Patsy的话会更简单易用一些。关于Patsy的内容会在下一节进行介绍。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/174661.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MyBatisPlus】通俗易懂 快速入门 详细教程

目录 学习目标 一、MyBatisPlus简介 1. 入门案例 问题导入 1.1 SpringBoot整合MyBatisPlus入门程序 ①:创建新模块,选择Spring初始化,并配置模块相关基础信息 ②:选择当前模块需要使用的技术集(仅保留JDBC&…

bodymovin:AE动画导出为JSONforMac/win中文版下载

对于动画制作爱好者和专业设计师来说,Adobe After Effects(AE)是一个强大的工具,可以创造出惊人的动画效果。然而,将这些动画导出为可交互的格式一直是一个挑战。现在,有了bodymovin,你可以轻松…

[原创][1]探究C#多线程开发细节-“Thread类的简单使用“

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XXQQ: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delphi…

搜索百度可以直接生成代码拉

先看效果图: 使用示例: 比如我要搜索“JS取一个数在两个数更近”的方法,直接搜“JS取一个数在两个数更近”,点击百度一下,就会出现想要的代码,如上图。

基于OpenCV+YOLOv5实现车辆跟踪与计数(附源码)

导 读 本文主要介绍基于OpenCVYOLOv5实现车辆跟踪与计数的应用,并给出源码。 资源下载 基础代码和视频下载地址: https://github.com/freedomwebtech/win11vehiclecount main.py代码:​​​​​​​ import cv2import torchimport numpy as npfrom tr…

Kotlin学习之集合

原文链接 Kotlin Collections 现代的软件一般比较复杂,程序语言中的基本数据类型往往不能满足需要,除了基本的数据类型以外,还有对象的容器也非常的重要,比如线性容器(数组,列表和Set)和二维容…

【SA8295P 源码分析 (四)】134 - Android 侧 NFS Client 挂载 QNX NFS Server 目录不成功 问题排查方法

【SA8295P 源码分析】134 - Android 侧 NFS Client 挂载 QNX NFS Server 目录不成功 问题排查方法 一、QNX侧1. 检查镜像是否挂载成功:/mnt/nfs_shared_dir 目录2. 检查 /mnt/etc/exports 文件配置是否正确3. 检查 nfsd、rpcbind 两个服务程序是否在后台工作正常 二…

Arkts web组件的使用

访问在线网页时您需要在module.json5文件中申明网络访问权限:ohos.permission.INTERNET。 加载网页效果无法在预览器中查看,需要在模拟器或者真机中展示项目 Web组件的使用非常简单,只需要ArkTS文件中创建一个Web组件,传入两个参数…

C语言:输出所有“水仙花数”。“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身,如153=1^3 +5^3+3^3

分析: 在主函数 main 中,程序首先定义四个整型变量 m、a、b 和 c,并用于计算和判断水仙花数。然后使用 printf 函数输出提示信息。 接下来,程序使用 for 循环结构,从 100 到 999 遍历所有三位数。对于每个遍历到的数 m…

什么是NoOps

过去几年,自动化一直在推动整个 IT 行业向前发展。通过自动化某些任务,开发团队可以提高其能力,而无需感受到雇用新团队成员的预算压力。自动化还保证了更高的效率,特别是在操作和维护方面。 传统的软件开发工作流程涉及开发团队…

CocosCreator 面试题(十八)Cocos Creator 图集打包有什么意义 ,我们一般在项目里面怎么规划

一、Cocos Creator 图集打包有什么意义 Cocos Creator是一款流行的游戏开发引擎,它提供了图集打包的功能。图集打包的主要目的是将游戏中使用的多个小图片(或者称为精灵)合并到一个大的图集中,以优化游戏的性能和资源管理。以下是…

Mac电脑数据库管理 Navicat Premium 15中文 for mac

Navicat Premium 15是一款强大的数据库管理和开发工具。它支持多种数据库类型,包括MySQL、MariaDB、Oracle、PostgreSQL等,可以帮助用户方便地管理和维护数据库。该软件提供了直观的用户界面和强大的功能,可以帮助用户快速创建、编辑和删除数…

ubuntu/vscode下的c/c++开发之-CMake语法与练习

Cmake学习 1 语法特性介绍 基本语法格式:指令(参数 1 参数 2...) 参数使用括弧括起参数之间使用空格或分号分开 指令是大小写无关的,参数和变量是大小写相关的 set(HELLO hello.cpp) add_executable(hello main.cpp hello.cpp) ADD_EXECUTABLE(hello ma…

2023大模型安全解决方案白皮书

今天分享的是大模型系列深度研究报告:《2023大模型安全解决方案白皮书》。 (报告出品方:百度安全) 报告共计:60页 前言 在当今迅速发展的数字化时代,人工智能技术正引领着科技创新的浪潮而其中的大模型…

C语言:写一个函数,实现3*3矩阵的转置(指针)

分析: 在主函数 main 中,定义一个 3x3 的整型数组 a,并定义一个指向整型数组的指针 p。然后通过循环结构和 scanf 函数,从标准输入中读取用户输入的 3x3 矩阵的值,并存储到数组 a 中。 接下来,调用 mov…

Java——继承

继承是面向对象编程的三大特征之一,它让我们更加容易实现对已有类的扩展、更加容易实现对现实世界的建模。 继承有两个主要作用: 代码复用,更加容易实现类的扩展方便建模 继承的实现 继承让我们更加容易实现对类的扩展。比如我们定义了人…

Docker 的诅咒:曾以为它是终极解法,最后却是“罪大恶极”?

系统管理中的基础问题 打包软件一直是系统管理中的一大基础问题。它非常重要,对系统的使用方式有着巨大影响,甚至让包管理器成为区分操作系统的一项重要指标。 以 Windows 为例:在很多“Linux 派”眼中,这款操作系统最不讨喜的就…

docker 安装oracle 11,配置客户端远程连接

最近由于工作需要,oracle11数据库的导入导出,所以自己在电脑上模拟个数据库环境, 1.docker的安装,可以参考之前文档,也可以直接yum install 包名字安装 2.下载镜像 docker pull registry.cn-hangzhou.aliyuncs…

数据结构 | 堆排序

数据结构 | 堆排序 文章目录 数据结构 | 堆排序建立大堆排序结果以及全部代码 如果没有看过堆的实现的话可以先看前面的一章堆的实现,然后再来看这个堆排序,都是比较简单的~~ 这里堆排序首先建堆,建堆是要建小堆还是大堆呢? 在堆排…

案例029:基于微信小程序的阅读网站设计与实现

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…