数据分析中的数据处理以及特征分析
主要讲述在数据处理及特征分析中利用到的pandas库中的功能,该文以Datawhale提供的资料以及网络搜集的资源整理而成,如有错误欢迎指正。
目录
一.查看空缺的数值所在的位置
二.对缺失值进行处理
1.判断缺失值
2.处理缺失值
三.重复值观察与处理
1.查看数据中的重复值
2.对重复值经行处理
四. 特征观察与处理
1.列如对年龄进行分箱(离散化)处理
五.对文本变量进行转换
1. 查看类别文本变量名及种类
2.将类别文本转换为12345
3. 将类别文本转换为one-hot编码
一.查看空缺的数值所在的位置
方法一
作用为给出样本数据的相关信息概览 :行数,列数,列索引,列非空值个数,列类型,内存占用
df.info()
方法二 作用为给出所有的列名,并在后显示各列的空值个数
df.isnull().sum()
二.对缺失值进行处理
1.判断缺失值
方法1:is的判断速度要快于==,适用于数值,字符串等简单的结构,像列表,元组等复杂些的则无法判断
df[df['Age'] is None] = 0
方法 2:判断数据是否为NAN,为缺失值返回True,否则为False,比上述is判断范围更大
df[df['Age'].isnull()] = 0
方法3:此判断方法比上述两种更具优势,能够判断数据类型为float64
df[df['Age'] == np.nan] = 0
2.处理缺失值
方法1:删除
df.dropna().head(3)
用法dropna()删除所有存在缺失值的行
dropna(axis='columns')删除所有存在缺失值的列
dropna(how='all')删除缺失所有值的行
dropna(thresh=2)删除最少缺失两个值的行
dropna(subset=['列名', '列名'])删除缺失该任一列名下的值的行
dropna(inplace=True)将具有有效条目的数据帧保留在同一变量中,与第一相似
方法2:替换
df.fillna(0).head(3)
用法 fillna(0)将所有的NaN替换为0 #
fillna(method="ffill")将NaN替换为其前方非空值中的元素
values = {"列名": 替换成的值} , df.fillna(value=values) 完成对应列空值的替换
fillna(value=values, limit=1),仅替换第一行的NaN
df2 = pd.DataFrame(np.zeros((行数, 列数)), columns=list("列名")), df.fillna(df2) df2中的值会替代df的相同位置且为NaN,位置相同为列名相同和所在行数相等
三.重复值观察与处理
1.查看数据中的重复值
df[df.duplicated()]
用法df.duplicated()默认情况下,对于每组重复值,第一个匹配项设置为 False,所有其他值都设置为 True。
#df.duplicated(keep='last')通过使用“last”,每组重复值的最后一次出现设置在 False 上,所有其他值都设置为 True。
df.duplicated(keep=False)通过设置 False,所有重复项均为 True
df.duplicated(subset=['列名'])要查找特定列上的重复项
2.对重复值经行处理
df = df.drop_duplicates() # 删除重复的数据,其它用法与subset=['列名']删除特定的一样
df.head()
df.to_csv('test_clear.csv') # 保存清洗后的数据
四. 特征观察与处理
1.列如对年龄进行分箱(离散化)处理
方法一、将连续变量Age平均分箱成5个年龄段,并分别用类别变量12345表示
df['AgeBand'] = pd.cut(df['Age'], 5, labels=[1, 2, 3, 4, 5])
用法pd.cut(数组(必须是一维的),分组数,labels=['分组名称'])
方法二、将连续变量Age划分为(0,5] (5,15] (15,30] (30,50] (50,80]五个年龄段,并分别用类别变量12345表示
df['AgeBand'] = pd.cut(df['Age'], [0, 5, 15, 30, 50, 80], labels=[1, 2, 3, 4, 5])
方法三、将连续变量Age按10% 30% 50 70% 90%五个年龄段,并用分类变量12345表示
df['AgeBand'] = pd.qcut(df['Age'], [0, 0.1, 0.3, 0.5, 0.7, 0.9], labels=[1, 2, 3, 4, 5])
五.对文本变量进行转换
1. 查看类别文本变量名及种类
value_counts
df['Sex'].value_counts()
df['Cabin'].value_counts()
DataFrame.value_counts(subset=None, normalize=False, sort=True, ascending=False, dropna=True)
subset:对唯一组合进行计数时要使用的列
normalize:返回比例而不是频率
sort:按频率排序
ascending:按升序排序
dropna:不要包含包含 NA 值的行计数
2.将类别文本转换为12345
方法一: replace
df['Sex_num'] = df['Sex'].replace(['male', 'female'], [1, 2])
df.head()
用法:将['male','female'],替换成[1,2]
通过replace({0:10,1:100})可以将列表中的所有0替换成10,1替换成100
replace({'列名': 0, '列名': 5}, 100)将特定列名的0,5替换成100
replace({'列名': {0: 100, 4: 400}})将特定列中的0替换成100,将4替换成400
df.replace(regex=r'^”特征“.$', value='目标')将具有包含“特征”的元素替换成‘目标’
replace({'A': r'^ba.$'}, {'A': 'new'}, regex=True)作用同上但有列的范围
方法二:map
df['Sex_num'] = df['Sex'].map({'male': 1, 'female': 2})
df.head()
3. 将类别文本转换为one-hot编码
OneHotEncoder
for feat in ["Age", "Embarked"]:# x = pd.get_dummies(df["Age"] // 6)# x = pd.get_dummies(pd.cut(df['Age'],5))x = pd.get_dummies(df[feat], prefix=feat) # 将类别变量转换为虚拟/指示符变量,即将feat中不同类别的量转化成二维的0与1df = pd.concat([df, x], axis=1) # 将x中的数据连接转化到表格上axis=1即为转化成列的形式,axis=0时为行# df[feat] = pd.get_dummies(df[feat], prefix=feat)
df.head()
df['Title'] = df.Name.str.extract('([A-Za-z]+)\.', expand=False)
# 如果为 True,则返回 DataFrame,每个捕获组包含一列。如果为 False,则返回序列/索引(如果有一个捕获组)或 DataFrame(如果有多个捕获组)
数据分析中的数据处理以及特征分析相关推荐
- 频率波数域matlab,频率-波数域方法的发展及其在台阵数据分析中的应用
0 引言 自1960年起,地震台阵作为一种新型的地震学研究工具,已经广泛应用于不同类型波场信号的检测及地球内部不同尺度结构的成像( 传统的F-K方法( 各种不同类型台阵的陆续建设,为F-K分析提供了大 ...
- 比较两组数据的差异用什么图更直观_芯片数据分析中常见的一些图的作用
今天给大家讲讲芯片数据分析中常见的一些图的作用,让大家伙儿知道它们在BB些啥. 箱式图(Box plot) 基因芯片的原始数据是需要进行标准化处理的,主要目的是消除由于实验技术(如荧光标记效率.扫描参 ...
- 云计算已在大数据分析中发挥重要作用
大数据并不是实时vs.批处理的问题.正如Ovum的分析师Tony Baer和其他一些分析师所指出的那样,这不是一个非此即彼的问题.鉴于现如今的企业用户在制定一套成功的大数据战略方面有着广泛的选择和大量 ...
- 试述hadoop生态系统以及每个部分的具体功能_Hadoop在大数据分析中的意义和作用...
什么是Hadoop? Apache Hadoop是一个开放源代码软件框架,用于开发在分布式计算环境中执行的数据处理应用程序. 使用HADOOP构建的应用程序可在分布在商用计算机群集上的大型数据集上运行 ...
- 去除dataframe中的空行_Python数据分析中的处理与数值加速技巧简介
微信公众号:cha-diary 大家好! 在这一段时间呢,我主要针对自己调研的一个机器学习模型进行了复现.俗话说得好,读论文一时爽,到复现火葬场.我可能现在后悔就后悔在习惯了Py的解释型环境,把C的那 ...
- 高斯拟合原理_数据分析中的插值与拟合(2) —— 拟合
引言 前文介绍了通过插值来估计未知数据的方法. 蒙特遇见卡罗:数据分析中的插值与拟合(1) -- 插值zhuanlan.zhihu.com 拟合的方法应用非常广泛,数据处理.参数估计和统计学习等:可 ...
- python在大数据分析中的应用
每个人都喜欢Python,如果您打算开始从事数据科学事业,我们可以肯定Python在您心中已经占有特殊的位置.它直观且易于在任何平台上运行,并且具有大量令人惊叹的库和工具.与其他编程语言相比,Pyth ...
- 用python处理excel数据做函数_如何使用python通过函数式编程完成excel中的数据处理及分析工作...
Excel是数据分析中最常用的工具,本篇文章通过python与excel的功能对比介绍如何使用python通过函数式编程完成excel中的数据处理及分析工作.在Python中pandas库用于数据处理 ...
- 数据分析中常见的存储方式
点击上方"大话coding",选择"星标"公众号 重磅干货,第一时间送达 大家好,我是小轩 这两天整理了在数据分析中常见的5种存储格式 内容比较多,只是简要整理 ...
最新文章
- ZippyPoint: 一种基于学习的特征点提取+二进制描述子,速度提升5倍+,为移动平台提供一种ORB的替代方案...
- RTP(Robi改造计划)--- 觉得还是搞风火轮(leg-wheel)好
- Spark快速上手-WordCount案例
- java的lookingat_Java Matcher.lookingAt()部分匹配字符串
- VTK:InfoVis之PassThrough
- 随机排列_图片视频特效一键生成,27 种特效可随机排列组合!
- html视频位置控制器,html5中返回音视频的当前媒体控制器的属性controller
- JavaScript创建命名空间
- python解析pdf得到每个字符的坐标
- 压缩数据成JPG到内存-windows
- UI效率实用素材|WEB数据可视化最佳实践
- putty如何登陆oracle,利用putty的SSH tunnel连接Oracle
- Android GIS开发系列-- 入门季(5) FeatureLayer加载本地shp文件与要素查询
- [导入]哀悼与感动同在[转载]
- paip.log4j 日志系统 参数以及最佳实践
- m115b linux 驱动下载,富士施乐m115b打印机驱动
- pb与java_Java中使用PB教程
- python 通达信公式函数,python使用通达信公式,请人用python编写如下公式,我对编程一窍不通...
- ubuntu 16.04 单用户____修改忘记密码
- 计算机操作中常用的几种快捷方式,常用的30个电脑快捷操作技巧