首页 > 其他分享 >【pandas基础】--数据整理

【pandas基础】--数据整理

时间:2023-05-14 11:15:09浏览次数:21  
标签:-- value 缺失 df 整理 数据 pandas 重复

pandas进行数据整理的意义在于,它是数据分析、数据科学和机器学习的前置步骤。
通过数据整理可以提前了解数据的概要,缺失值、重复值等情况,为后续的分析和建模提供更为可靠的数据基础。

本篇主要介绍利用pandas进行数据整理的各种方法。

1. 数据概要

获取数据概要信息可以帮助我们了解数据的基本情况,包括数据的大小、数据类型、缺失值的情况、数据的分布情况等。

这些信息对于我们进行数据分析、数据处理和建模等工作非常重要。
获取数据概要信息是进行数据分析和处理的基础,也是保障数据分析和建模结果准确性的重要步骤。

测试数据导入:

import pandas as pd

fp = "http://databook.top:8888/pandas/cn-people.csv"
df = pd.read_csv(fp)
df

image.png

1.1 dtypes 数据类型

查看数据类型:

df.dtypes

image.png
数据集中4个列的类型如上所示。

1.2 describe 数值列统计

选取数值列value,统计其情况看看:

df.value.describe()
# df["value"].describe()

image.png
统计的内容包括:总数、平均数、标准差、最小值、最大值等等。

1.3 value_counts 各类数据的数量

比如,统计指标中文这列,看看不同的指标对应的数据量。

df["指标中文"].value_counts()

image.png
可以看出,每种指标的数据都是 44 条。

1.4 info 整体的基本信息

df.info()

image.png
info函数包括每列的名称、数据类型、非空值数量、甚至内存使用量等信息。

2. 缺失值处理

收集的数据难免缺失,对缺失值的处理进行分析前必要的步骤,因为:

  1. 保证数据的完整性和准确性。缺失值的存在可能会影响数据的可靠性和分析结果的准确性,因此及时处理缺失值能够保证数据的完整性和准确性。
  2. 提高数据分析结果的准确性。处理缺失值能够提高数据分析结果的准确性,因为缺失值会对数据分析结果产生一定的偏差,处理缺失值能够减少这种偏差,提高数据分析结果的可靠性。
  3. 使数据更容易被理解和处理。处理缺失值能够使数据更加规范和标准化,从而方便数据的理解和处理。如果数据中存在大量的缺失值,可能会造成数据处理困难,降低数据的处理效率。
  4. 使得数据更加适合建模。处理缺失值能够使得数据更加适合建模,因为缺失值可能会影响模型的训练和预测效果,处理缺失值能够提高模型的准确性和可靠性。

pandas中提供了 isnullnotnull 两个函数来标记缺失值,也提供了fillnadropna两个函数来处理缺失值。

演示缺失值处理的测试数据如下:

import pandas as pd

fp = "http://databook.top:8888/pandas/missing-values.csv"
df = pd.read_csv(fp)
df

image.png
缺失的数据默认值为 NaN

2.1 查看缺失值

pandas通过isnull函数可以标记缺失的值,缺失的值显示为 True

df.isnull()

image.png

notnull函数与之相反,缺失的值显示为 False

df.notnull()

image.png

通过这两个函数,可以很方便的过滤包含或未包含缺失值的数据。

# value缺失 【并且】 指标中文未缺失的数据
df[df.value.isnull() & df["指标中文"].notnull()]

image.png

# value未缺失 【或者】 指标中文缺失的数据
df[df.value.notnull() | df["指标中文"].isnull()]

image.png

2.2 填充缺失值

对于缺失值,为了防止其对后续的分析算法造成影响,一般有两种处理方式。
一种是填充默认值,一种是直接删除包含缺失值的数据。

填充缺失值用fillna函数。

df.value = df.value.fillna(0.0)
df["指标编码"] = df["指标编码"].fillna("A000000")
df["指标中文"] = df["指标中文"].fillna("默认指标")
df

image.png
各列填充不同的默认值之后如上。

2.3 删除缺失值

删除缺失值时,请关注2个关键的参数。
一个是 how,另一个是subset
how="all"时,只有当前列所有数据都是NaN时才删除。

df.dropna(how="all")

image.png
没有满足条件的数据,所有数据都保留下来了。

how="any"时,只要有一个数据是NaN,就会删除当前行数据。

df.dropna(how="any")

image.png
所有数据都删除了,因为示例数据中每一行都有一个NaN数据。

除了how之外,另一个常用的参数是subset,与how相比,它可以具体指定哪些列为NaN时才删除数据。

df.dropna(subset=["value", "指标中文"])

image.png
指标中文或者valueNaN的数据都删除了。

3. 重复值处理

在数据分析中,处理重复值是非常重要的,因为重复值会影响分析结果和数据准确性。
处理重复值可以:

  1. 避免重复计算:重复值可能会导致重复计算,从而影响数据分析结果的准确性。
  2. 减少存储空间:去除重复值可以减少数据存储空间,从而提高数据处理效率。
  3. 提高数据分析精度:处理重复值可以提高数据分析的准确性和精度,从而帮助分析师做出更准确的决策。
  4. 符合数据质量标准:去除重复值可以提高数据的完整性和一致性,符合数据质量标准。
  5. 简化数据可视化:处理重复值可以简化数据可视化操作,从而帮助分析师更好地理解数据。

演示重复值处理的测试数据如下:

import pandas as pd

fp = "http://databook.top:8888/pandas/duplicate-values.csv"
df = pd.read_csv(fp)
df

image.png

3.1 查找重复值

pandas提供了duplicated()方法来检查DataFrame中的重复值。
该方法返回一个布尔Series,其中True表示该行是重复的,False表示该行不是重复的。

df.duplicated()

image.png
根据index,可以看出哪些行是重复的。

3.2 删除重复值

对于重复的值,一般都是直接删除。
删除重复数据的方法drop_duplicates中有个keep参数可以重点关注下。

# 重复时,保留第一个数据
df.drop_duplicates(keep="first")

image.png
keep="first"时,从index可以看出,保留的是重复数据中index的数据。

# 重复时,保留最后一个数据
df.drop_duplicates(keep="last")

image.png
keep="last"时,从index可以看出,保留的是重复数据中index的数据。

df.drop_duplicates(keep=False)

image.png
keep=False时,所有重复的数据都被删除了。

4. 总结回顾

本篇主要介绍pandas在数据整理方面的能力,主要包括:

  1. 数据概要信息的获取
  2. 缺失值的处理
  3. 重复值的处理

熟练掌握数据整理的方法,可以让后续的分析步骤更加高效。

标签:--,value,缺失,df,整理,数据,pandas,重复
From: https://www.cnblogs.com/wang_yb/p/17398908.html

相关文章

  • 滚动条样式自定义
    ::-webkit-scrollbar-track-piece{  width:1px;  height:1px;  background-color:#0c1e26;}::-webkit-scrollbar{  width:1px;  height:1px;  background-color:#16d0ff;}::-webkit-scrollbar-thumb{  width:1px;  heig......
  • C#使用Snap7读写西门子全糸列PLC,非常方便,通信稳定可靠,是C#上位机工程师的通讯利器,布尔
    C#使用Snap7读写西门子全糸列PLC,非常方便,通信稳定可靠,是C#上位机工程师的通讯利器,布尔字符浮点数整数字节都可读写ID:59100676026758780......
  • 【C++11新特性】allocator空间配置类
    原文链接: http://blog.csdn.net/Xiejingfa/article/details/50955295今天我们来讲讲C++的allocator类。C++提供了new和delete操作符来管理动态内存空间。new操作通常需要完成两部分工作:一是在系统中申请内存空间,二是在分配的内存上构造对象。delete操作也通常需要完成对应的两......
  • 中二羊专题:栋栋的入门题(前缀和)
    原题标题虽然是栋栋的入门题,但它并不是入门题。原题的题目描述是:给出N个整数,以及M个求和范围,求出每一个范围的数字的和。提示:显然,这并不是一道入门题。这就要用到一种新的思想:前缀思想。进入正题数组\(a\)(此处方便讲解,忽略下标\(0\))有这\(5\)个数字:\(1,3,2,1,5\)......
  • windows11上安装PL-SQL Developer 15.0.3.2059
    注:连接的oracle服务端是oracle12c1.环境准备(1).下载oracle客户端下载以下版本均可:此处我下载的是instantclient-basic-nt-12.2.0.1.0.zip(2).下载PL-SQLDeveloper15.0.3.2059下载地址:https://www.jb51.net/softs/820654.html2.解压配置oracle客户端首先在磁盘上创建D......
  • EPLAN史上最全部件库,官网下载,部件宏,EDZ格式,大小合适导入容易 部件包含图片宏,尺寸宏,有
    EPLAN史上最全部件库,官网下载,部件宏,EDZ格式,大小合适导入容易部件包含图片宏,尺寸宏,有西门子全系列PLC,s7-12001500300400200三菱FX系列,数字模拟,特殊模块,三菱变频器,伺服,触摸屏,台达,施耐徳,正泰,欧姆龙,得力西,ABB等低压电器等等。做电气元件布局很方便,与实物1:1大小对应。导入后一......
  • 中二羊专题:栋栋吃糖果
    U163898题目题目背景栋栋参加比赛拿下了一等奖,老师奖励了很多糖果。题目描述一共有\(m\)种糖果,其中第i种糖果的数量为\(m_i\)。栋栋吃糖时会获得快乐值,并且他喜欢换着口味吃糖。当栋栋吃下第一个糖果时快乐值为\(0\),接下来,每吃一个不同口味的糖果(与上一个糖不同),快乐......
  • 为什么编程语言中,标识符不能以数字开头?
    标识符不能以数字为开头,是为了简化词法解析器设计和实现,规避词法解析中以数字开头的变量与数字解析冲突的问题。如果两种类型的词,如果起始符号不同,那么可以很容易把二者区分开;如果起始符号相同,那么以下符号:234到底是变量还是数字常量?这种情况下,需要根据上下文判断。这就离“......
  • 博客园博客搬家升级后只能搬家一次了
    原来博客园中博客后台中,随笔下的博客搬家功能,可以在晚上下班后,或者周末、节假日等时间段,同步其它博客的文章,功能挺好用。但最近博客同步功能做了限制,提示“每个来源可以且尽可以搬家一次”!存在的搬家记录貌似也不能删除,所以后续其它博客文章将无法定期同步过来了。就这样吧,如果......
  • 虚拟磁链,直接功率控制,定频虚拟磁链直接功率控,VF-DPC,基于pi调节的虚拟磁链直接功率控制
    虚拟磁链,直接功率控制,定频虚拟磁链直接功率控,VF-DPC,基于pi调节的虚拟磁链直接功率控制,可提供人工讲解,附带仿真说明文档和相关论文ID:69200644941911568......