码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 一文速学-Pandas处理DataFrame稀疏数据及维度不匹配数据详解


    目录

    前言

    一、索引缺失

    二、负值取正

    三.提取数值

    四、提取唯一值

    点关注,防走丢,如有纰漏之处,请留言指教,非常感谢


    前言

    众所周知我们获取的第一手数据往往都是比较杂乱无章的,这些文件保存一般都是csv文件或者是excel文件,读取转换成DataFrame还有可能因为缺少列索引或者是各类数据维度不相等而报错。

    Pandas的基础数据结构Series和DataFrame。若是还不清楚的可以再去看看我之前的博客详细介绍这两种数据结构的处理方法:

    一文速学-数据分析之Pandas数据结构和基本操作代码

    一文速学-Pandas实现数值替换、排序、排名、插入和区间切片

    一些Pandas基础函数的使用方法:

    DataFrame行列表查询操作详解+代码实战

    一文速学-Pandas索引重塑实现长宽表数据转换

    DataFrame多表合并拼接函数concat、merge参数详解+代码操作展示

    Pandas中read_excel函数参数使用详解+实例代码

    一文速学-Pandas索引设置操作各类方法详解+代码展示

    关于包含在异常值里面的空值和重复值均有三篇博客专门详细介绍了处理他们的方法: 

    一文速学-Pandas处理重复值操作各类方法详解+代码展示

    一文速学-Pandas处理缺失值操作各类方法详解

    一文速学-Pandas异常值检测及处理操作各类方法详解+代码展示

    读取成功为DataFrame仍然有很多问题存在,比如列索引缺失,众多NaN数据以及合并计算问题等,这篇文章将具体解决此场景下的内容。


    一、索引缺失

    读取缺失量较大的数据时,索引并不是能完全覆盖到的。存在着列索引缺失的问题,这是一个比较头疼的问题,使得我们后面的数据特征无法使用:

    这是针对机器学习的数据集特征,面对这种情况我们可以通过重新设置索引的方式,倘若特征之间是有规律的话,例如上表5列以后的数据每列的列索引都是features的话那么我们可以通过reindex的方法给它补全索引:

    1. def deal_defect(df,n):
    2. df_defect=df.iloc[:,n:]
    3. m=4
    4. list_columns=[]
    5. for i in range(df_defect.shape[1]):
    6. list_columns.append('features%d'%m)
    7. m=m+1
    8. df_defect.columns=list_columns
    9. df_all=pd.concat([df.iloc[:,:n],df_defect],axis=1)
    10. return df_all
    11. deal_defect(df,5)

    二、负值取正

    若是要对整个DataFrame的值都取负数,并不需要挨个列都转再使用abs函数,读取的DataFrame一般都是object类型不能直接使用abs,需要使用astype将dataframe类型转换:

    当数据中带有NaN时是不能直接转int的:

    df_fill=df.astype('int')
    IntCastingNaNError: Cannot convert non-finite values (NA or inf) to integer

     但是我们转换为float的时候原始数据集又出现了后面带.0的情况:

    这里我们要使用到fillna函数,先转为float取绝对值之后再填充为空值之后替换为-1,这样以来-1的位置就是缺失值的位置,以便于我们识别:

    1. def fill_conver(df):
    2. df_fill=df.astype('float')
    3. df_fill=abs(df_fill)
    4. df_fill=df_fill.fillna('')
    5. df_fill=df_fill.replace('',-1)
    6. df_fill=df_fill.astype(int)
    7. return df_fill
    8. fill_conver(df)

    三.提取数值

    既然有很多空值我们可以采取侧缺将低于一定比例的数据去除,这部分在上篇缺失值处理文章已经谈到这里不再说明。我们最常遇到的情况就是需要处理空值只提去出相应标签下的数值,这里涉及到列索引的选择和合并操作。例如我们只需要特征列偶数列的数值:

    1. def get_features(df):
    2. list_all_link=[]
    3. df=df.iloc[:,2:]
    4. for i in range(df.shape[0]):
    5. #flag为控制外层循环开关
    6. flag=1
    7. for j in range(df.shape[1]):
    8. if(flag==0):
    9. break
    10. if(j%2==0):
    11. if(df.iloc[i:i+1,j].item()==-1):
    12. flag=0
    13. else:
    14. list_all_link.append(list(df.iloc[i:i+1,j]))
    15. return list_all_link
    16. get_features(df)

    四、提取唯一值

    如果我们需要只需要取到的数列中的唯一值,需要对数据集进行处理,可以使用ravel()和unique()函数。此时我们还需要注意删掉-1:

    1. def unique_df(df):
    2. df_features=df.iloc[:,2:]
    3. unique_series=pd.Series(pd.Series(df_features.iloc[:,[i%2==0 for i in range(len(df_features.columns))]].values.ravel()).unique())
    4. list_series=list(unique_series.values)
    5. return list_series
    6. unique_list=unique_df(df)
    7. unique_list.remove(-1)
    8. unique_list

     

    点关注,防走丢,如有纰漏之处,请留言指教,非常感谢

    以上就是本期全部内容。我是fanstuck ,有问题大家随时留言讨论 ,我们下期见。

  • 相关阅读:
    教你轻松解决win系统ucrtbased.dll丢失的问题,亲测有效!
    酷开科技 | 酷开系统沉浸式大屏游戏更解压!
    计算机视觉——飞桨深度学习实战-深度学习网络模型
    STM32串口发送接收完结
    python基础语法(五)
    4款值得推荐的AI辅助编程工具(支持C#语言)
    Lua 点 冒号面向对象 继承
    Node.js 流 Stream【详解】
    颈肩肌筋膜炎的症状及治疗
    SRTP协议与加密原理
  • 原文地址:https://blog.csdn.net/master_hunter/article/details/126306403
  • 最新文章
  • 【FHE】我们如何实现同态加密推理(八):SiLU 的密文化——两条路径,和一个 8 字节的开关
    SQLcl 中 c/old/new 替换变量为何失效?先定位再替换
    不让模型写作文,直接从它脑子里读答案:Jev 决策在 .NET 的两条路线
    Halo插件:支持GitHub的图床附件策略
    电视投屏界的“一股清流”!SimpleTVCast 6.0.0-beta 抢先体验:无需TV端App,界面大换血!✨
    华三VXLAN集中式网关实战指南:Spine多活网关 + 双活接入(M-LAG)
    软件更好写之后口碑会更重要
    大 O、大 Omega、大 Theta 的区别,O(n) 复杂度是什么意思
    Java标签跳转:一个鲜为人知但却很实用的小技巧
    多智能体系统论文速读
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号