网络编程
位置:首页>> 网络编程>> Python编程>> Pandas处理DataFrame稀疏数据及维度不匹配数据分析详解

Pandas处理DataFrame稀疏数据及维度不匹配数据分析详解

作者:fanstuck  发布时间:2023-08-20 02:44:38 

标签:Pandas,DataFrame,数据分析,维度不匹配

前言

众所周知我们获取的第一手数据往往都是比较杂乱无章的,这些文件保存一般都是csv文件或者是excel文件,读取转换成DataFrame还有可能因为缺少列索引或者是各类数据维度不相等而报错。读取成功为DataFrame仍然有很多问题存在,比如列索引缺失,众多NaN数据以及合并计算问题等,这篇文章将具体解决此场景下的内容。

一、索引缺失

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

Pandas处理DataFrame稀疏数据及维度不匹配数据分析详解

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

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

Pandas处理DataFrame稀疏数据及维度不匹配数据分析详解

二、负值取正

若是要对整个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的情况:

Pandas处理DataFrame稀疏数据及维度不匹配数据分析详解

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

def fill_conver(df):
   df_fill=df.astype('float')
   df_fill=abs(df_fill)
   df_fill=df_fill.fillna('')
   df_fill=df_fill.replace('',-1)
   df_fill=df_fill.astype(int)
   return df_fill
fill_conver(df)

Pandas处理DataFrame稀疏数据及维度不匹配数据分析详解

三、提取数值

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

def get_features(df):
   list_all_link=[]
   df=df.iloc[:,2:]
   for i in range(df.shape[0]):
       #flag为控制外层循环开关
       flag=1
       for j in range(df.shape[1]):
           if(flag==0):
               break
           if(j%2==0):
               if(df.iloc[i:i+1,j].item()==-1):
                   flag=0
               else:
                   list_all_link.append(list(df.iloc[i:i+1,j]))
   return list_all_link
get_features(df)

Pandas处理DataFrame稀疏数据及维度不匹配数据分析详解

四、提取唯一值

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

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

来源:https://juejin.cn/post/7200288095559581752

0
投稿

猜你喜欢

  • 在看到7yue博客——“换手来用”的思考 有这么一句话:RIA是一个更趋向于“体验”设计的领域,不仅仅包括“开发人员”,还包括“设计人员”,
  • 今天我们看看所有的类!由于工作的上的事有点忙!点图!以后讲解这是我编译好了的类的结构图,我们可以用很多软件可以从原板的DLL看到这些内容!当
  • Python单元测试unittest中提供了一下四种装饰器实现测试跳过和预期故障。(使用Python 2.7.13)请查考Python手册中
  • Python爬取网页信息的步骤以爬取英文名字网站(https://nameberry.com/)中每个名字的评论内容,包括英文名,用户名,评
  • 总结调试网站获取cookies时请查看,r.header和r.request.header这两个属性,因为cookie说不准出现在他们俩谁里
  • 一、判断类型的函数is_bool()    //判断是否为布尔型is_float()   //判断是否为浮点型
  • 声明定位元素:position属性值设置除默认值static以外的元素,包括relative,absolute,fixed。平台:win/I
  • BP神经网络是最简单的神经网络模型了,三层能够模拟非线性函数效果。难点:如何确定初始化参数?如何确定隐含层节点数量?迭代多少次?如何更快收敛
  • Python函数库众多,而且在不断更新,所以学习这些函数库最有效的方法,就是阅读Python官方文档。同时借助Google和百度。本文介绍的
  • 很多现代的浏览器在地址栏的右边有个搜索框,默认的安装有 Google 搜索等。如下图所示:其实这是 OpenSearch 的一个应用,只要编
  • 在查询语句中使用 NOLOCK 和 READPAST 处理一个数据库死锁的异常时候,其中一个建议就是使用 NOLOCK 或者 READPAS
  • 题目:轮盘分为三部分: 一等奖, 二等奖和三等奖;轮盘转的时候是随机的,如果范围在[0,0.08)之间,代表一等奖,如果范围在[0.08,0
  • 在本地使用pycharm连接databricks,大致步骤如下:首先,为了让本地环境能够识别远端的databricks集群环境,需要收集da
  • ASP里两种常用的生成文件的方式是:利用ADODB.Stream生成文件和利用Scripting.FileSystemObject生成文件1
  • 在multiIndex中选定指定索引的行我们在用pandas类似groupby来使用多重index时,有时想要对多个level中的某个ind
  • 一种很常见的写法: document.write('<scr'+'ipt src=&quo
  • 前言:数据库是大多数 Web 应用的基础设施,只要想把数据存储下来,就离不开数据库,下面将一起学习一下如何给 Flask 应用添加数据库支持
  • ⛳️ 本次反反爬实战案例背景本篇博客选择的案例是由 VX 好友提出,他希望有一篇博客能简单的介绍清楚下面这个问题。快速定位加密参数逻辑,快速
  • 前言由与上不了学,教我们Mastercam的老师提前给我们布置了4道习题。对我们太好了,谢谢老师�没办法,干就完了。只是要求附上制作过程视频
  • 互联网上不计其数的信息本质上都是一个一个的HTML文档组成的,通过链接将它们串联起整个互联网。这就犹如骨肉之于人体一样,只有通过经脉才能将它
手机版 网络编程 asp之家 www.aspxhome.com