[Pandas]Dataframe赋值

在进行Titanic幸存者预测的过程中,数据预处理涉及到空值填充。我的想法是以Pclass分组,为Age的空值填充随机值x~ U(mean-σ,mean+σ)

开始是参考其他文章的做法,但情况不一样,那篇文章并没有分组赋值,由于不涉及分组,所以对dataframe赋值时是一整列进行赋值的,而这是pandas官方建议的赋值方法之一

import pandas as pd
import numpy as np

train_data = pd.read_csv('data/train.csv')

for pclass in train_data.Pclass.unique():
    class_age = train_data['Age'][train_data.Pclass == pclass]
    age_null = class_age.isnull().sum()
    mean = class_age.mean()
    std = class_age.std()
    randage = np.random.randint(mean - std, mean + std, size=age_null)
    age_slice = class_age.copy()
    age_slice[np.isnan(age_slice)] = randage
    train_data['Age'][train_data.Pclass == pclass] = age_slice

在for循环的最后一行

train_data['Age'][train_data.Pclass == pclass] = age_slice

等号左边由于有[train_data.Pclass == pclass],因此是一个Dataframe的切片(slice),对一个切片赋值会有如下警告,当然这种赋值是可以完成的,但我想要使用官方推荐的方法来完成

SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame

1.取值赋值

Dataframe取值赋值有多种方法,但我认为可以分为两类
第一类:使用方括号[]


df.B
df[B]

df.B[df.A>4]
df.B[df.A>4][df.B.isnull()]

第二类:使用函数.loc()/.iloc()(本文不讨论两者区别)


df.iloc[2,2]

df.loc['一','B']

df.loc[:,"年龄"]

2. .loc()

pandas官方的建议是使用.loc()来完成。
.loc()可以读取指定位置的值,也可以对指定位置进行赋值
.loc()的第一个参数(index)指定行,第二个参数(columns)指定列,而且使用:取多行/列时,是”前闭后闭”,也就是:两边都能取到

但我希望的是为行添加多个条件
这是能办到的,如下

mask = (df.A==a)&(df.b>20)&(df.c.isnull())
df.loc[mask,'d']

注意各条件使用()括起来,如果条件简单,不使用mask也是可行的,如

df.d.loc[(df.d>20)&(df.d30)]

那么我的原代码,在for循环的最后三行改为以下代码即可

mask = (train_data.Pclass == pclass) & (train_data.Age.isnull())
train_data.loc[mask, 'Age'] = randage

Original: https://blog.csdn.net/Je_san/article/details/121209893
Author: Je_san
Title: [Pandas]Dataframe赋值

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/739333/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 深度学习参数初始化(一)Xavier初始化 含代码

    目录 一、简介 二、基础知识 三、标准初始化方法 四、Xavier初始化的假设条件 五、Xavier初始化的简单的公式推导: 六、Pytorch实现: 七、对比实验 1.各层激活值…

    Python 2023年8月3日
    067
  • Python 模块搜索路径

    由于某些原因,在使用 ​ ​import​​​ 时,Python 找不到相应的模块。这时,解释器就会发牢骚 – ​ &amp…

    Python 2023年5月24日
    092
  • 华为云部署YOLOv5

    本文基于华为云服务器,主要使用flask,gunicorn和niginx框架的一个YOLO部署项目,本文主要参考代码的是链接: link这里主要是记录过程中遇到的一些问题及解决办法…

    Python 2023年8月10日
    055
  • 系统移植第一天

    1.1 系统移植就是给开发板搭建一个Linux操作系统 1.2 从官方获取源码,进行配置和编译,生成板子需要的镜像文件 2.1 为后面学驱动开发课程打基础 2.2 驱动开发工程必备…

    Python 2023年9月15日
    032
  • 多远线性算法预测房价

    一、基于统计分析库statsmodels 1.数据读取 import pandas as pd import numpy as np import seaborn as sns i…

    Python 2023年8月8日
    043
  • 科技交流英语(2022秋)Unit 6 test

    科技交流英语(2022秋)Unit 6 test 简介 由电子科技大学组织开设,授课教师为李京南、庞慧、刘兆林等5位老师。 课程介绍 英语广泛用于工程技术领域的国际交流。如何使用简…

    Python 2023年9月30日
    063
  • Python实现中文字幕雨+源代码

    Original: https://www.cnblogs.com/123456feng/p/16174261.htmlAuthor: 蚂蚁ailingTitle: Python实…

    Python 2023年5月24日
    062
  • Python Scrapy爬虫框架详解

    Python Scrapy爬虫框架详解 Scrapy 是一个基于 Twisted 实现的异步处理爬虫框架,该框架使用纯 Python 语言编写。Scrapy 框架应用广泛,常用于数…

    Python 2023年10月1日
    053
  • python之面向对象的程序开发

    oop面向对象的程序开发 使用几个功能来表达这种事务称为类,而类更像是一幅图,表达了一个抽象的概念。 [En] Using several features to express …

    Python 2023年5月24日
    0106
  • 人均瑞数系列,瑞数 4 代 JS 逆向分析

    声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者…

    Python 2023年5月23日
    069
  • 爬虫日记(86):Scrapy的Scheduler类(二)

    上面已经准备了所有队列的对象,下一步我们就来分析怎么进入队列,以及怎么实现优先级队列管理这些请求。这些函数的调用关系如下: 因此我们需要从函数enqueue_request入手,先…

    Python 2023年10月5日
    041
  • 使用Python的tenacity库实现异常重试机制

    undefined Python异常重试如果某些方法需要重试,之前都是自己在except里写代码,很多时候实现起来并不方便,而且复杂逻辑下大大增加代码量和影响可读性,尝试了一下te…

    Python 2023年6月12日
    078
  • 用Taro配合微信云托管做了一个AI画图小程序

    我用一天时间做了一个AI画图小程序 事情是这样的,最近工作比较空闲,就到处逛帖子,发现每到一个地方都能发现有关于 AI画图的影子。 于是…

    Python 2023年10月29日
    041
  • 点乘与叉乘

    几何含义 0.1 点乘 点乘,又称向量的内积,结果为一个数,计算公式如下: 上述公式的推导过程如下: 因此,通过点乘可以得出两个向量之间的夹角,向量垂直时,点乘结果为0. 0.2 …

    Python 2023年8月26日
    056
  • 【JAVA高级】——Druid连接池和Apache的DBUtils使用

    ✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。🍎个人主页:Java Fans的博客🍊个人信条:不迁怒,不贰过。小知识,大智慧。💞当前专栏:JAVA开发者成长之路✨特…

    Python 2023年8月30日
    078
  • 在VScode中配置Python开发环境

    1、安装python 官网下载地址:https://www.python.org/ftp/python/3.8.0/python-3.8.0-amd64.exe双击打开.exe文件…

    Python 2023年7月31日
    067
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球