pandas笔记(3)——DataFrame数据查看,缺失值,异常值,重复值预处理
数据情况查看
- 预览数据前n行
Python中预览数据可以使用head()函数,该函数默认展示前5行。
# 查看数据前2行
df.head(2)
- 查看数据末尾n行
可以使用tail()函数,查看数据末尾n行的数据,该函数默认展示5行
# 查看数据前2行
df.tail(2)
- 获取数据表的行列数量
在Python中获取数据表的行列数量,可以通过shape方法
# 获取表格的行列
df.shape
- 获取数据表的数据类型
获取数据表的数据类型,可以使用info()方法。
# 查看数据类型
df.info()# 返回了所有列的数据类型
'''
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 6 entries, 0 to 5
Data columns (total 4 columns):# Column Non-Null Count Dtype
--- ------ -------------- ----- 0 功能 6 non-null object1 关键字 6 non-null object2 说明 6 non-null object3 备注 1 non-null object
dtypes: object(4)
memory usage: 320.0+ bytes
'''
- 获取数据的分布情况
获取数据的分布情况可以用describe()方法。
返回数据的分布情况
df.describe()'''
describe会返回计数,平均值,最小值,最大值,四分位数等
'''
缺失值处理
- 查看缺失值
查看缺失值,可以通过isnull() 或 info()函数实现。
''' 显示各列有多少非空值'''
df.info()''' 显示那个值为缺失值'''
df.isnull()
- 删除缺失值
删除含有缺失值的行可以使用dropna()方法
'''
dropna()方法会删除所有包含NaN值得行,然后返回删除后的数据。
dropna(how = 'all')则删除全部为空值的行
'''df.dropna()
df.dropna(how = 'all')
- 填充缺失值
填充缺失值,可以使用fillna()方法
# 将NaN值全部转换为0
df.fillna(0)'''
单列缺失值替换
将df表中年龄列的NaN值全部转化为0
'''
df.fillna({"年龄":0})'''
多列缺失值替换
将df表中年龄、成绩列的NaN值全部替换成0
'''
df.fillna({"年龄":0,"成绩":0})
重复值处理
删除重复值可以使用drop_duplicates()方法,该函数默认对所有值进行重复值判断,并默认保留第一行的值。
格式:drop_duplicates(subset, keep)
参数:
subset:传入删重依据的列
keep:frist删重时保留第一个值,last保留最后一个值,False把重复值全部删除。
'''创建一个DateFrame'''df1=pd.DataFrame([[1,'张三'],[2,'李四'],[2,'李四'],[2,'王五'],[3,'赵六']],columns=("id","姓名"))
df1# 返回id 姓名
0 1 张三
1 2 李四
2 2 李四
3 2 王五
4 3 赵六'''对df1去重重复值,函数默认根据所有重复值进行了判断去重,并保留了第一行'''print(df1.drop_duplicates())# 返回id 姓名
0 1 张三
1 2 李四
3 2 王五
4 3 赵六'''对df1根据id列去除重复值将列名赋值给subset参数'''print(df1.drop_duplicates(subset="id"))# 返回id 姓名
0 1 张三
1 2 李四
4 3 赵六'''对df1根据id,姓名列去除重复值将列名以列表的形式传给subset参数。'''print(df1.drop_duplicates(subset=['id','姓名']))# 返回id 姓名
0 1 张三
1 2 李四
3 2 王五
4 3 赵六'''对df1根据id列去除重复值并保留重复值的最后一行'''print(df1.drop_duplicates(subset="id",keep='last'))# 返回id 姓名
0 1 张三
3 2 王五
4 3 赵六'''
对df1根据id列去除重复值
并去除所有重复行,注意False的首字母大写,且没有用''引起
'''print(df1.drop_duplicates(subset="id",keep=False))# 返回id 姓名
0 1 张三
4 3 赵六
异常值处理
异常值一般分为数学统计上的异常值和实际业务中的异常值。数理统计上如正态分布中数值与平均值偏差超过3个标差的值。实际业务中如人的年龄小于0岁,重量为1吨等。
- 异常值处理办法
- 删除相关数据
- 对异常值进行替换
- 作为特殊情况进行研究
删除数据:可以使用drop(),pop()等函数,但感觉将需要的数据筛选出来更方便。
''' 创建一个3*3的df2'''
df2= pd.DataFrame(np.arange(9).reshape((3,3)),index = list('abc'),columns=['x','y','z'])# 返回x y z
a 0 1 2
b 3 4 5
c 6 7 8'''删除a行'''
df2.drop('a',axis=0)# 返回x y z
b 3 4 5
c 6 7 8'''删除x列,pop会修改原数据'''
df2.pop('x')
df2# 返回y z
a 1 2
b 4 5
c 7 8
对异常值替换:可以使用replace()函数。
import pandas as pd
import numpy as np
df3 = pd.DataFrame(np.arange(16).reshape((4,4)),index = [1,2,3,4],columns=['A','B','C','D'])'''将A列中0替换成10'''
df3[['A']].replace(0,10)# 返回A
a 0
b 4
c 8
d 0
单列多值替换
'''将将A列中0替换成10,4替换成20'''
df3[['A']].replace({0:10,4:20})"""也可以用列表的方式展示 """
df3[['A']].replace([0,4],[10,20])# 返回A
a 10
b 20
c 8
d 12
多列相同值替换规则
'''将将A、B列中0替换成10,1替换成20'''
df3[['A','B']].replace([0,1],[10,20])# 返回A B
a 10 20
b 4 5
c 8 9
d 12 13
空值替换(np.NaN是python对缺失值的一种表达方法)
'''将空值替换成0。由于df3没有空值,所以原数据无修改'''
df3.replace(np.NaN,0)# 返回A B C D
a 0 1 2 3
b 4 5 6 7
c 8 9 10 11
d 12 13 14 15
数据类型转换
Python中常用的数据类型有以下6种:
类型 | 说明 |
---|---|
int | 整数型 |
float | 浮点型 |
object | 对象类型 |
string_ | 字符串 |
unicode_ | 固定长度的Unicode类型 |
datatime64[ns] | 时间格式 |
在Python中可以使用info()函数查看每一列的数据类型,也可以用dtype()函数来查看具体某一列的数据类型。
df1=pd.DataFrame([[1,'张三'],[2,'李四'],[2,'李四'],[2,'王五'],[3,'赵六']],columns=("id","姓名"))'''查看df1的数据类型'''
df1.info()# 返回
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5 entries, 0 to 4
Data columns (total 2 columns):# Column Non-Null Count Dtype
--- ------ -------------- ----- 0 id 5 non-null int64 1 姓名 5 non-null object
dtypes: int64(1), object(1)
memory usage: 208.0+ bytes'''查看id列的数据类型'''
df1['id'].dtype# 返回
dtype('int64')
改变数据类型可以用astype()函数实现。
格式:df [“索引名”].astype(“修改后数据类型”)
'''将id列转换为float浮点型'''
df1['id'].astype("float")# 返回
0 1.0
1 2.0
2 2.0
3 2.0
4 3.0
Name: id, dtype: float64
pandas笔记(3)——DataFrame数据查看,缺失值,异常值,重复值预处理相关推荐
- Python_Pandas_处理数据的缺失值和重复值
一.处理数据的缺失值 描述 使用isnull()函数可以判断数据表中的哪个值是缺失值,并将缺失值标记为True,非缺失值标记为False 使用dropna函数可以删除数据表中含有缺失值的行.默认情况下 ...
- Python之pandas:将dataframe数据写入到xls表格的多个sheet内(防止写入数据循环覆盖sheet表)
Python之pandas:将dataframe数据写入到xls表格的多个sheet内(防止写入数据循环覆盖sheet表) 目录 将dataframe数据写入到xls表格的多个sheet内(防止写入数 ...
- Python之pandas:对dataframe数据的索引简介、应用大全(输出索引/重命名索引列/字段去重/设置复合索引/根据列名获取对应索引)、指定某字段为索引列等详细攻略
Python之pandas:对dataframe数据的输出索引.重命名索引列/字段去重/设置复合索引/根据列名获取对应索引.指定某字段为索引列等详细攻略 目录 对pandas中dataframe数据中 ...
- Pandas数据分析17——pandas数据清洗(缺失值、重复值处理)
参考书目:<深入浅出Pandas:利用Python进行数据处理与分析> pandas对大数据有很多便捷的清洗用法,尤其针对缺失值和重复值.缺失值就不用说了,会影响计算,重复值有时候可能并未 ...
- python concat去除重复值语句_Python数据处理从零开始----第二章(pandas)④数据合并和处理重复值...
目录 第二章(pandas) Python数据处理从零开始----第二章(pandas)④数据合并和处理重复值 ============================================ ...
- datacombo重复值的处理_Pandas入门【S1E3】缺失值和重复值处理
导语: 前两期分别就pandas安装和导入数据.pandas数据探索做了梳理. 回顾如下: Pandas安装和数据导入mp.weixin.qq.com Pandas数据探索mp.weixin.qq ...
- python数据框去重_【Python】基于某些列删除数据框中的重复值
Python按照某些列去重,可用drop_duplicates函数轻松处理.本文致力用简洁的语言介绍该函数. 一.drop_duplicates函数介绍 drop_duplicates函数可以按某列去 ...
- python绘制星空图_【Python】基于某些列删除数据框中的重复值
阿黎逸阳 精选Python.SQL.R.MATLAB等相关知识,让你的学习和工作更出彩(可提供风控建模干货经验). Python按照 某些列去重 ,可用 drop_duplicates函数轻松处理 . ...
- xlsx表格怎么筛选重复数据_excel表格如何筛选重复数据 在Excel表格的两列数据中提取不重复值的四种方法...
excel表格如何筛选重复数据 在Excel表格的两列数据中提取不重复值的四种方法,最近到了季度汇报的时候,掌握一手excel技能在此刻显得多么重要,为了是你的excel看起来更高大上,今天教大家设置 ...
最新文章
- AtCoder - 2581 Meaningful Mean
- mysql计算1000天后的日期_mysql,数据库_mysql 计算某个时间,多少天后,多少个月后时间戳,mysql,数据库,数据库设计 - phpStudy...
- linux查看当前会话文件夹,Linux 记录会话过程的命令
- 半夜三点,去医院看病。。。
- 信息学奥赛一本通(1003:对齐输出)
- JDK1.7 深入理解 LinkedHashMap
- ionic 侧栏菜单用法
- chrome jsp 显示不正常_selenium+java谷歌浏览器 网站打开不正常
- 使用Blender编辑Character Creater 4的人物形象
- (双硬盘(SSD+HDD)/单硬盘)双系统win10+ubuntu18.04安装记录
- JSP WebSehll 后门脚本
- 手脱 FSG 1.0 壳
- 用js实现背景颜色改变
- matlab颜色图 热力图 等高线图 色卡 色阶 颜色映像 colormap
- 自顶向下的GAMMA显著性——学习搜索复杂场景中的对象
- 重力感应贪吃蛇(C51 MPU6050 8*8LED点阵)
- 印度舞曲吉米来吧(中文版)铃声 印度舞曲吉米来吧(中文版)手机...
- 【步态识别】LagrangeGait基于拉格朗日《Lagrange Motion Analysis and View Embeddings for Improved Gait Recognition》
- 9_用户的登录和登出
- PGSQL 日期时间的比较