Python 数据分析(四):Pandas 进阶

目录
    • 1. 概述
    • 2. 缺失项
    • 3. 分组聚合
    • 4. 数据合并
    • 5. 数据可视化
      • 5.1 折线图
      • 5.2 条形图
      • 5.3 直方图
      • 5.4 散点图
      • 5.5 饼图

1. 概述

我们在上一篇文章初识 Pandas中已经对 Pandas 作了一些基本介绍,本文我们进一步来学习 Pandas 的一些使用。

2. 缺失项

在现实中我们获取到的数据有时会存在缺失项问题,对于这样的数据,我们通常需要做一些基本处理,下面我们通过示例来看一下。

import numpy as np
from pandas import Series, DataFrames = Series(['1', '2', np.nan, '3'])
df = DataFrame([['1', '2'], ['3', np.nan], [np.nan, 4]])
print(s)
print(df)
#  清除缺失项
print(s.dropna())
print(df.dropna())
# 填充缺失项
print(df.fillna('9'))
print(df.fillna({0:'5', 1:'6'}))

3. 分组聚合

我们通过示例来了解一下分组、聚合操作。

from pandas import DataFramedf = DataFrame({'name':['张三', '李四', '王五', '赵六'],'gender':['男', '女', '男', '女'],'age':[22, 11, 22, 33]})
# 根据 age 分组
gp1 = df.groupby('age')
# 根据 age、gender 分组
gp2 = df.groupby(['age', 'gender'])
# 根据 gender 进行分组,将 name 作为分组的键
gp3 = df['gender'].groupby(df['name'])
# 查看分组
print(gp2.groups)
# 分组数量
print(gp2.count())
# 选择分组
print(gp2.get_group((22, '男')))
print('---------')
# 聚合
gp4 = df.groupby(df['gender'])
# 和
print(gp4.sum())
# 平均值
print(gp4.mean())
# 最大值
print(gp4.max())
# 最小值
print(gp4.min())
# 同时做多个聚合运算
print(gp4.agg(['sum', 'mean']))

4. 数据合并

Pandas 具有高性能内存中连接操作,与 SQL 相似,它提供了 merge() 函数作为 DataFrame 对象之间连接操作的入口,我们通过示例来看一下。

from pandas import DataFrame
import pandas as pddf1 = DataFrame({'A':[2, 4, 5], 'B':[1, 2, 3], 'C':[2, 3, 6]})
df2 = DataFrame({'D':[1, 3, 6], 'E':[2, 5, 7], 'F':[3, 6, 8]})
df3 = DataFrame({'G':[2, 3, 6], 'H':[3, 5, 7], 'I':[4, 6, 8]})
df4 = DataFrame({'G':[1, 3, 5], 'H':[4, 6, 8], 'I':[5, 7, 9]})
# 左连接(以 d1 为基础)
print(df1.join(df2, how='left'))
# 右连接
print(df1.join(df2, how='right'))
# 外连接
print(df1.join(df2, how='outer'))
# 合并多个 DataFrame
print(df3.join([df1, df2]))
# 指定列名进行合并
print(pd.merge(df3, df4, on='G'))
print(pd.merge(df3, df4, on=['G', 'H']))
print(pd.merge(df3, df4, how='left'))
print(pd.merge(df3, df4, how='right'))
print(pd.merge(df3, df4, how='outer'))

5. 数据可视化

Pandas 的 Series 和 DataFrame 的绘图功能是包装了 matplotlib 库的 plot() 方法实现的,下面我们通过示例来看一下。

5.1 折线图

折线图代码实现如下所示:

import pandas as pd, numpy as np, matplotlib.pyplot as pltdf = pd.DataFrame(np.random.randn(10,2), columns=list('AB'))
df.plot()
plt.show()

看一下效果:

5.2 条形图

纵置条形图代码实现如下所示:

import pandas as pd, numpy as np, matplotlib.pyplot as pltdf = pd.DataFrame(np.random.rand(5,3), columns=list('ABC'))
df.plot.bar()
plt.show()

看一下效果:
在这里插入图片描述
横置条形图代码实现如下所示:

import pandas as pd, numpy as np, matplotlib.pyplot as pltdf = pd.DataFrame(np.random.rand(5,3), columns=list('ABC'))
df.plot.barh()
plt.show()

看一下效果:
在这里插入图片描述

5.3 直方图

直方图代码实现如下所示:

import pandas as pd, numpy as np, matplotlib.pyplot as pltdf = pd.DataFrame({'A':np.random.randn(800)+1, 'B':np.random.randn(800)}, columns=list('AB'))
df.plot.hist(bins=10)
plt.show()

看一下效果:

我们还可以将 A、B 分开显示,代码实现如下:

import pandas as pd, numpy as np, matplotlib.pyplot as pltdf = pd.DataFrame({'A':np.random.randn(800)+1, 'B':np.random.randn(800)}, columns=list('AB'))
df.hist(bins=10)
plt.show()

看一下效果:

5.4 散点图

散点图代码实现如下所示:

import pandas as pd, numpy as np, matplotlib.pyplot as pltdf = pd.DataFrame(np.random.rand(20, 2), columns=list('AB'))
df.plot.scatter(x='A', y='B')
plt.show()

看一下效果:

5.5 饼图

饼图代码实现如下所示:

import pandas as pd, numpy as np, matplotlib.pyplot as pltdf = pd.DataFrame([30, 20, 50], index=list('ABC'), columns=[''])
df.plot.pie(subplots=True)
plt.show()

看一下效果:


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:
http://www.pswp.cn/diannao/93802.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/93802.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

结构化文本文档的内容抽取与版本重构策略

结构化文本文档的内容抽取与版本重构策略 摘要 本文深入探讨了结构化文本文档处理领域中的两大核心技术——内容抽取与版本重构。文章首先分析了结构化文档的特点及其在现代信息管理中的重要性,随后系统性地介绍了文档内容抽取的技术路线与方法论,包括…

【BUUCTF系列】[HCTF 2018]WarmUp1

本文仅用于技术研究,禁止用于非法用途。 Author:枷锁 点开题目显示一个图片,没有任何交互功能,我们直接查看网页源代码我们可以看到有一个歆慕的注释source.php,我们进行拼接,访问一下这个文件在url后加上/source.php进…

Flutter Chen Generator - IconFont Generator

Flutter Chen Generator 🚀 一个强大的Flutter代码生成工具包,包含多个实用的代码生成器。 ✨ 功能特性 📁 资源生成器 (Assets Generator) 🔄 自动扫描assets目录并生成Dart常量🧠 智能驼峰命名转换,保…

【MATLAB】(二)基础知识

一.MATLAB命令1.指令行“头首”的 “>>” 是 “指令输入提示符” ,它是自动输入的。“>>” 为运算提示符,表示MATLAB处于准备就绪状态。如在提示符后输入一条命令或一段程序后按Enter键,MATLAB将给出对应的结果,并将结…

Day36| 1049. 最后一块石头的重量 II、494.目标和、474.一和零

文章链接 1049. 最后一块石头的重量 II 解题关键:找到重量和尽量相等的两堆 确定dp数组以及下标的含义 dp[j]表示容量(这里说容量更形象,其实就是重量)为j的背包,最多可以背最大重量为dp[j]。 确定递推公式 01背包…

【A*/BFS】P5507 机关

# P5507 机关 题目描述 这扇门上有一个机关,上面一共有12个旋钮,每个旋钮有4个状态,将旋钮的状态用数字111到444表示 每个旋钮只能向一个方向旋转(状态:1->2->3->4->1),在旋转时&am…

终结集成乱局:模型上下文协议(MCP)如何重构AI工具生态?

AI 助手正处于能力发展的初级阶段。它们擅长处理独立任务——例如解析 PDF、编写 SQL 语句、等等——但当你要求它们在 Slack、Gmail 和 Jira 等平台间协同操作时,整个流程就变得异常复杂且脆弱,如同调试一套由众多 API 密钥串联的精密机械(鲁…

谈谈毕业工作一年后的变化

文章目录谈谈毕业工作一年后的变化工作篇生活篇谈谈毕业工作一年后的变化 工作篇 2025.7.30 21:49 呼~再次打开这个网站发布文章,是多么陌生。仿佛有说不完的话,但如今时间却不允许我无限制的长篇大论的写下去了。 先说下工作吧。 毕业后工作好快啊&…

huggingface下载问题

国内使用git clone下载huggingfaceTOC 国内直接git clone连接不上问题 git clone https://huggingface.co/spaces/ZebangCheng/Emotion-LLaMA Cloning into ‘Emotion-LLaMA’… fatal: unable to access ‘https://huggingface.co/spaces/ZebangCheng/Emotion-LLaMA/’: Fai…

anaconda searchanaconda show | conda 检索包资源安装指定版本包指定源安装命令package

conda issuehttp://t.csdnimg.cn/ndZZK 目录 常规安装 检索包资源 获取指定包的安装源&安装指令 安装指定包 常规安装 conda 常规安装xxx包 conda install xxx conda install有可能会受限于channel导致报错PackagesNotFoundError: The following packages are not av…

python cli命令 cli工具命令 自定义cli命名 开发 兼容 window、mac、linux,调用示例

前言需求背景整个项目基于Python开发,需求方期望不直接调用Python脚本执行,希望封装为cli命令执行Python脚本,使其更为简单而又“优雅”。类似直接使用 adb devices 的方式直接调用运行,而不是 python adbToolls.py devices的方式…

k8s pod生命周期、初始化容器、钩子函数、容器探测、重启策略

pod结构Pause容器 Pause容器是每个Pod都会有的一个根容器,它的作用有两个 可以以它为根据,评估整个pod的健康状态可以在根容器上设置IP地址,其他容器都以此IP(Pod IP),以实现Pod内部的网络通信,…

Redis:缓存雪崩、穿透、击穿的技术解析和实战方案

🚨 1、简述 随着系统规模扩大,Redis 缓存被广泛用于数据预热、热点数据防护和高并发系统优化。然而在高并发环境中,缓存雪崩、穿透、击穿等问题若处理不当,可能导致系统雪崩式崩溃。 本文从原理、原因出发,结合实际项目…

前端-html+CSS基础到高级(二)html基础

一、 为什么需要Web标准 浏览器差异问题:五大主流浏览器(IE、Chrome、Firefox、Safari等)使用不同渲染引擎,导致相同代码解析效果存在差异。为什么需要Web标准?不同浏览器的渲染引擎不同,对于相同代码解析的…

前端-移动Web-day2

目录 1、空间-平移 2、视距 3、空间旋转-Z轴 4、空间旋转-X轴 5、空间旋转-Y轴 6、立体呈现 7、案例-3D导航 8、空间-缩放 9、动画-体验 10、动画-实现步骤 11、animation复合属性 12、animation拆分写法 13、案例-走马灯 14、精灵动画 15、多组动画 16、案例-…

力扣1116题:用C++实现多线程交替输出零、偶数、奇数

一、题目解读 力扣1116题要求设计一个类,实现三个线程交替输出数字:一个线程输出连续的0,一个线程输出连续的偶数,另一个线程输出连续的奇数。输入参数n为总输出次数(每个线程各输出n次),输出需…

C语言(07)——原码 补码 反码 (超绝详细解释)

本文的内容通下面这篇文章有着紧密的联系,读者可以选择性阅读 C语言————二、八、十、十六进制的相互转换-CSDN博客 相关的C语言练习题和思维锻炼可以参考以下文章 C语言————练习题册(答案版)-CSDN博客 C语言————斐波那契数列…

磁盘坏道检测工具在美国服务器硬件维护中的使用规范

磁盘坏道检测工具在美国服务器硬件维护中的使用规范在服务器硬件维护领域,磁盘坏道检测工具是保障数据安全的第一道防线。本文将系统介绍美国数据中心环境下专业级磁盘诊断方案的实施标准,重点解析SMART检测、坏道修复算法与自动化运维流程的整合方法&am…

【n8n】如何跟着AI学习n8n【03】:HTTPRequest节点、Webhook节点、SMTP节点、mysql节点

前言 n8n的系统性学习,对各知识点地毯式学习🔍~ 前面课程 定制n8n的AI老师,有AI老师制定学习大纲,参考之前的文档(本系列n8n学习大纲,也在这里): 【n8n】如何跟着AI学习n8n_01&a…

Vue 的双向数据绑定原理

Vue 的双向数据绑定是通过 数据劫持 发布-订阅模式 实现的,具体分为以下三个关键机制:1. 数据劫持(响应式系统) Vue 使用 Object.defineProperty(Vue 2)或 Proxy(Vue 3)监听数据变化…