百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

超全的pandas数据分析常用函数总结:上篇(附赠思维导图)

liuian 2025-02-16 21:58 14 浏览

基础知识就像是数据分析中的九阳神功,熟练的掌握,加以运用,就可以练就深厚的内力,成为绝顶高手自然不在话下!

为了更好地学习数据分析,我对于数据分析中pandas这一模块里面常用的函数进行了总结。整篇总结,在详尽且通俗易懂的基础上,我力求使其有很强的条理性和逻辑性,所以制作了思维导图,对于每一个值得深究的函数用法,我也会附上官方链接,方便大家继续深入学习。

文章中的所有代码都会有讲解和注释,绝大部分也都会配有运行结果,酱紫的话,整篇总结篇幅量自然不小,所以我分成了上下两篇,这里是上篇。

1. 导入模块

import pandas as pd                    # 这里用到的是pandas和numpy两个模块
import numpy as np

2. 创建数据集并读取

2.1 创建数据集

我构造了一个超市购物的数据集,该数据集属性包括:订单ID号(id)、订单日期(date)、消费金额(money)、订单商品(product)、商品类别(department)、商品产地(origin)。

# 列表和字典均可传入DataFrame,我这里用的是字典传入:
data=pd.DataFrame({
		"id":np.arange(101,111),                                                      # np.arange会自动输出范围内的数据,这里会输出101~110的id号。
		"date":pd.date_range(start="20200310",periods=10),       # 输出日期数据,设置周期为10,注意这里的周期数应该与数据条数相等。
		"money":[5,4,65,-10,15,20,35,16,6,20],                                # 设置一个-10的坑,下面会填
		"product":['苏打水','可乐','牛肉干','老干妈','菠萝','冰激凌','洗面奶','洋葱','牙膏','薯片'],
		"department":['饮料','饮料','零食','调味品','水果',np.nan,'日用品','蔬菜','日用品','零食'],                         # 设置一个空值的坑
		"origin":['China',' China','America','China','Thailand','China','america','China','China','Japan']           # 设置一个america的坑
})
data     #  输出查看数据集

输出结果:

2.2 数据写入和读取

data.to_csv("shopping.csv",index=False)        # index=False表示不加索引,否则会多一行索引
data=pd.read_csv("shopping.csv")

3. 数据查看

3.1 数据集基础信息查询

data.shape                               # 行数列数
data.dtypes                             # 所有列的数据类型
data['id'].dtype                       # 某一列的数据类型
data.ndim                               # 数据维度
data.index                              # 行索引
data.columns                         # 列索引
data.values                            # 对象值

3.2 数据集整体情况查询

data.head()                             # 显示头部几行(默认5行)
data.tail()                               # 显示末尾几行(默认5行)
data.info()                             # 数据集相关信息概览:索引情况、列数据类型、非空值、内存使用情况
data.describe()                     # 快速综合统计结果

4. 数据清洗

4.1 查看异常值

当然,现在这个数据集很小,可以直观地发现异常值,但是在数据集很大的时候,我用下面这种方式查看数据集中是否存在异常值,如果有其他更好的方法,欢迎传授给我。

for i in data:
	 print(i+": "+str(data[i].unique()))          # 查看某一列的唯一值

输出结果:我们发现,该数据集中money存在一个负值,department存在一个空值以及origin存在大小写问题。

4.2 空值处理

4.2.1 空值检测

data.isnull() # 查看整个数据集的空值
data['department'].isnull() # 查看某一列的空值

输出结果:

将空值判断进行汇总,更加直观,ascending默认为True,升序。

data.isnull().sum().sort_values(ascending=False)

输出结果:

>更多关于
pandas.DataFrame.sort_values的用法,戳下方官方链接:
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.sort_values.html

4.2.2 空值处理

pandas.DataFrame.fillna(value = None,method = None,inplace = False)

  • value:用于填充的值,可以是具体值、字典和数组,不能是列表;
  • method:填充方法,有 ffill 和 bfill 等;
  • inplace默认无False,如果为True,则将修改此对象上的所有其他视图。


>更多关于pandas.DataFrame.fillna的用法,戳下面官方链接:
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.fillna.html

data['department'].fillna(method="ffill")                           # 填充上一个值,即填充"水果"

输出结果:

data['department'].fillna(method="bfill")                      # 填充下一个值,即填充"日用品"
data['department'].fillna(value="冷冻食品",inplace=True)     # 替换为具体值,并且在原对象值上进行修改

输出结果:

4.3 空格处理

==只针对object类型数据==

for i in data:                                                   # 遍历数据集中的每一列
    if pd.api.types.is_object_dtype(data[i]):     # 如果是object类型的数据,则执行下方代码
        data[i]=data[i].str.strip()                        # 去除空格
data['origin'].unique()                                   # 验证一下

输出结果:array(['China', 'America', 'Thailand', 'america', 'Japan'], dtype=object)

4.4 大小写转换

data['origin'].str.title()              # 将首字母大写
data['origin'].str.capitalize()    # 将首字母大写
data['origin'].str.upper()         # 全部大写
data['origin'].str.lower()         # 全部小写

4.5 数据替换

data['origin'].replace("america","America",inplace=True) # 将第一个值替换为第二个值,inplace默认为False
data['origin']

输出结果:

data['money'].replace(-10,np.nan,inplace=True)                                   # 将负值替换为空值
data['money'].replace(np.nan,data['money'].mean(),inplace=True)      # 将空值替换为均值
data['money']

输出结果:

4.6 数据删除

==方法1==

data1 = data[data.origin != 'American']      #去掉origin为American的行
data1
data2=data[(data != 'Japan').all(1)]            #去掉所有包含Japan的行    不等于Japan的行为真,则返回
data2

==方法2==

data['origin'].drop_duplicates()                     # 默认删除后面出现的重复值,即保留第一次出现的重复值

输出结果:

data['origin'].drop_duplicates(keep='last')       # 删除前面出现的重复值,即保留最后一次出现的重复值

输出结果:

4.7 数据格式转换

data['id'].astype('str')        # 将id列的类型转换为字符串类型。

==常见的数据类型对照==

4.8 更改列名称

data.rename(columns={'id':'ID', 'origin':'产地'})     # 将id列改为ID,将origin改为产地。

输出结果:

思维导图

笔记中如果有错误的地方,欢迎各位小伙伴指正,感谢!

如果需要完整思维导图电子版(PDF、Xmind等)可以留言或者私信!

>参考资料:

> 1. [pandas官网](http://pandas.pydata.org/)

> 2. [pandas用法总结](
https://blog.csdn.net/yiyele/article/details/80605909)

> 3. [Pandas 文本数据方法 capitalize( ) lower( ) upper( )](
https://blog.csdn.net/claroja/article/details/64943601)

> 4. [python【all()全1为1, any()全0为0】](
https://www.jianshu.com/p/a184bddc6fe6)

> 5. [pandas 数据类型转换](
https://www.cnblogs.com/onemorepoint/p/9404753.html)

相关推荐

总结下SpringData JPA 的常用语法

SpringDataJPA常用有两种写法,一个是用Jpa自带方法进行CRUD,适合简单查询场景、例如查询全部数据、根据某个字段查询,根据某字段排序等等。另一种是使用注解方式,@Query、@Modi...

解决JPA在多线程中事务无法生效的问题

在使用SpringBoot2.x和JPA的过程中,如果在多线程环境下发现查询方法(如@Query或findAll)以及事务(如@Transactional)无法生效,通常是由于S...

PostgreSQL系列(一):数据类型和基本类型转换

自从厂子里出来后,数据库的主力就从Oracle变成MySQL了。有一说一哈,贵确实是有贵的道理,不是开源能比的。后面的工作里面基本上就是主MySQL,辅MongoDB、ES等NoSQL。最近想写一点跟...

基于MCP实现text2sql

目的:基于MCP实现text2sql能力参考:https://blog.csdn.net/hacker_Lees/article/details/146426392服务端#选用开源的MySQLMCP...

ORACLE 错误代码及解决办法

ORA-00001:违反唯一约束条件(.)错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。ORA-00017:请求会话以设置跟踪事件ORA-00018:超出最大会话数ORA-00...

从 SQLite 到 DuckDB:查询快 5 倍,存储减少 80%

作者丨Trace译者丨明知山策划丨李冬梅Trace从一开始就使用SQLite将所有数据存储在用户设备上。这是一个非常不错的选择——SQLite高度可靠,并且多种编程语言都提供了广泛支持...

010:通过 MCP PostgreSQL 安全访问数据

项目简介提供对PostgreSQL数据库的只读访问功能。该服务器允许大型语言模型(LLMs)检查数据库的模式结构,并执行只读查询操作。核心功能提供对PostgreSQL数据库的只读访问允许L...

发现了一个好用且免费的SQL数据库工具(DBeaver)

缘起最近Ai不是大火么,想着自己也弄一些开源的框架来捣腾一下。手上用着Mac,但Mac都没有显卡的,对于学习Ai训练模型不方便,所以最近新购入了一台4090的拯救者,打算用来好好学习一下Ai(呸,以上...

微软发布.NET 10首个预览版:JIT编译器再进化、跨平台开发更流畅

IT之家2月26日消息,微软.NET团队昨日(2月25日)发布博文,宣布推出.NET10首个预览版更新,重点改进.NETRuntime、SDK、libraries、C#、AS...

数据库管理工具Navicat Premium最新版发布啦

管理多个数据库要么需要使用多个客户端应用程序,要么找到一个可以容纳你使用的所有数据库的应用程序。其中一个工具是NavicatPremium。它不仅支持大多数主要的数据库管理系统(DBMS),而且它...

50+AI新品齐发,微软Build放大招:拥抱Agent胜算几何?

北京时间5月20日凌晨,如果你打开微软Build2025开发者大会的直播,最先吸引你的可能不是一场原本属于AI和开发者的技术盛会,而是开场不久后的尴尬一幕:一边是几位微软员工在台下大...

揭秘:一条SQL语句的执行过程是怎么样的?

数据库系统能够接受SQL语句,并返回数据查询的结果,或者对数据库中的数据进行修改,可以说几乎每个程序员都使用过它。而MySQL又是目前使用最广泛的数据库。所以,解析一下MySQL编译并执行...

各家sql工具,都闹过哪些乐子?

相信这些sql工具,大家都不陌生吧,它们在业内绝对算得上第一梯队的产品了,但是你知道,他们都闹过什么乐子吗?首先登场的是Navicat,这款强大的数据库管理工具,曾经让一位程序员朋友“火”了一把。Na...

详解PG数据库管理工具--pgadmin工具、安装部署及相关功能

概述今天主要介绍一下PG数据库管理工具--pgadmin,一起来看看吧~一、介绍pgAdmin4是一款为PostgreSQL设计的可靠和全面的数据库设计和管理软件,它允许连接到特定的数据库,创建表和...

Enpass for Mac(跨平台密码管理软件)

还在寻找密码管理软件吗?密码管理软件有很多,但是综合素质相当优秀且完全免费的密码管理软件却并不常见,EnpassMac版是一款免费跨平台密码管理软件,可以通过这款软件高效安全的保护密码文件,而且可以...