《Pandas 简易速速上手小册》第9章:Pandas 数据可视化(2024 最新版)

在这里插入图片描述

文章目录

  • 9.1 Pandas 内置可视化工具
    • 9.1.1 基础知识
    • 9.1.2 重点案例:销售数据分析
    • 9.1.3 拓展案例一:产品评价统计
    • 9.1.4 拓展案例二:员工满意度分布
  • 9.2 与 Matplotlib 和 Seaborn 集成
    • 9.2.1 基础知识
    • 9.2.2 重点案例:销售趋势分析
    • 9.2.3 拓展案例一:产品评分分布
    • 9.2.4 拓展案例二:员工满意度调查箱型图分析
  • 9.3 高级数据可视化策略
    • 9.3.1 基础知识
    • 9.3.2 重点案例:交互式股票价格趋势分析
    • 9.3.3 拓展案例一:多维数据展示
    • 9.3.4 拓展案例二:地理信息可视化

9.1 Pandas 内置可视化工具

Pandas 内置的可视化工具是基于 Matplotlib,为数据分析提供了一种快速、简便的图表生成方式。这些工具能够直接从 DataFrame 和 Series 中生成图表,无需繁琐的数据准备工作。

9.1.1 基础知识

  1. 基本图表类型: Pandas 支持多种图表类型,包括线图(.plot())、条形图(.bar())、直方图(.hist())、箱形图(.box())等。
  2. 简单的绘图语法: 可以直接在 DataFrame 或 Series 上调用绘图方法,Pandas 会处理大部分绘图细节。
  3. 定制化选项: 尽管 Pandas 的绘图是为了快速绘制而设计的,但它也提供了一些定制化选项,比如颜色、标签、标题等。

9.1.2 重点案例:销售数据分析

假设你有一份包含过去一年每月销售额的数据,你想要可视化这些数据以分析销售趋势。

数据准备

import pandas as pd
import numpy as np

# 生成示例销售数据
months = pd.date_range('2023-01', periods=12, freq='M')
sales = np.random.randint(100, 1000, size=12)

sales_df = pd.DataFrame({'Month': months, 'Sales': sales})
sales_df.set_index('Month', inplace=True)

绘制线图

# 绘制销售趋势线图
sales_df.plot(title='Monthly Sales for 2023')

9.1.3 拓展案例一:产品评价统计

假设你想分析不同产品的评价数量,以便了解哪些产品更受欢迎。

数据准备

# 生成示例产品评价数据
product_reviews = pd.DataFrame({
    'Product': ['Product A', 'Product B', 'Product C', 'Product A', 'Product B'],
    'Rating': [5, 3, 4, 2, 5]
})

# 统计每个产品的评价数量
review_counts = product_reviews.groupby('Product').size()

绘制条形图

# 绘制每个产品的评价数量条形图
review_counts.plot(kind='bar', title='Review Counts by Product', color=['blue', 'green', 'red'])

9.1.4 拓展案例二:员工满意度分布

你有一份员工满意度调查的结果,想要通过直方图了解满意度的分布情况。

数据准备

# 生成示例员工满意度数据
satisfaction_data = pd.DataFrame({
    'Satisfaction': np.random.randint(1, 6, size=50)  # 1到5的满意度评分
})

绘制直方图

# 绘制满意度分布的直方图
satisfaction_data['Satisfaction'].plot(kind='hist', bins=5, title='Employee Satisfaction Distribution', alpha=0.7)

通过这些案例,我们展示了如何使用 Pandas 内置的可视化工具来快速创建图表,以及如何根据数据的不同类型和需求选择合适的图表类型。这些工具不仅使得数据可视化变得更加直接和简单,还为数据分析提供了强大的支持。

在这里插入图片描述


9.2 与 Matplotlib 和 Seaborn 集成

虽然Pandas提供了一些基本的可视化功能,但当涉及到更复杂的图表和定制化需求时,Matplotlib和Seaborn这两个库就显得尤为重要了。Matplotlib是Python中最著名的绘图库之一,提供了大量的绘图功能;Seaborn则是基于Matplotlib,提供了更高层次的接口,专注于统计图表的绘制,使得图表更加美观、更容易创建。

9.2.1 基础知识

  1. Matplotlib: 提供了一个类似于MATLAB的绘图框架,可以用于创建高质量的图形。
  2. Seaborn: 在Matplotlib的基础上提供了更多的绘图模式,特别是一些统计图表,使得数据可视化不仅简单,而且更加美观。

9.2.2 重点案例:销售趋势分析

使用Matplotlib和Seaborn对过去一年的月销售数据进行可视化分析。

数据准备

import pandas as pd
import numpy as np

# 示例销售数据
dates = pd.date_range('2023-01', periods=12, freq='M')
sales = np.random.randint(1000, 5000, size=12)

sales_df = pd.DataFrame({'Date': dates, 'Sales': sales})

使用 Matplotlib 绘制

import matplotlib.pyplot as plt

plt.figure(figsize=(10, 6))
plt.plot(sales_df['Date'], sales_df['Sales'], marker='o', linestyle='-', color='b')
plt.title('Monthly Sales for 2023')
plt.xlabel('Date')
plt.ylabel('Sales')
plt.grid(True)
plt.show()

使用 Seaborn 绘制

import seaborn as sns

sns.set(style="whitegrid")
plt.figure(figsize=(10, 6))
sns.lineplot(x='Date', y='Sales', data=sales_df, marker='o', color='g')
plt.title('Monthly Sales for 2023')
plt.show()

9.2.3 拓展案例一:产品评分分布

分析一份产品评分数据,了解评分的分布情况。

数据准备

scores = np.random.randint(1, 6, size=100)
scores_df = pd.DataFrame({'Score': scores})

使用 Seaborn 绘制直方图

sns.histplot(scores_df['Score'], bins=5, kde=True, color='skyblue')
plt.title('Distribution of Product Scores')
plt.show()

9.2.4 拓展案例二:员工满意度调查箱型图分析

使用箱型图对员工满意度调查结果进行可视化,以识别满意度的分布和异常值。

数据准备

satisfaction = np.random.randint(1, 6, size=100)
departments = np.random.choice(['HR', 'Development', 'Sales'], size=100)
satisfaction_df = pd.DataFrame({'Satisfaction': satisfaction, 'Department': departments})

使用 Seaborn 绘制箱型图

sns.boxplot(x='Department', y='Satisfaction', data=satisfaction_df, palette='Set2')
plt.title('Employee Satisfaction Across Departments')
plt.show()

通过这些案例,我们展示了如何使用Matplotlib和Seaborn进行数据可视化,包括如何绘制线图、直方图和箱型图。这些工具的灵活性和强大功能使得从简单到复杂的数据可视化需求都能得到满足。

在这里插入图片描述


9.3 高级数据可视化策略

高级数据可视化策略可以帮助我们更深入地理解数据,揭示数据中隐藏的模式和关系。这些策略包括交互式可视化、多维数据展示以及利用地理信息的可视化等。

9.3.1 基础知识

  1. 交互式可视化: 允许用户通过交互操作(如点击、拖拽、缩放等)来探索数据,常见的工具有 Plotly、Bokeh 等。
  2. 多维数据展示: 如平行坐标图、雷达图等,可以在一个图表中展示多个维度的数据,有助于识别数据之间的复杂关系。
  3. 地理信息的可视化: 利用地图展示数据,尤其适用于具有地理属性的数据,如使用 GeoPandas、Folium 进行地理数据的可视化。

9.3.2 重点案例:交互式股票价格趋势分析

使用 Plotly 绘制一个交互式的股票价格趋势图,允许用户查看不同时间点的价格。

数据准备

import pandas as pd
import numpy as np

# 生成示例股票价格数据
dates = pd.date_range(start="2023-01-01", periods=100)
prices = np.random.normal(100, 10, size=100).cumsum()  # 模拟股票价格

stock_df = pd.DataFrame({'Date': dates, 'Price': prices})

绘制交互式图表

import plotly.express as px

fig = px.line(stock_df, x='Date', y='Price', title='Stock Price Trend')
fig.show()

9.3.3 拓展案例一:多维数据展示

展示员工绩效评估的多维数据,包括销售业绩、客户满意度和工作效率等。

数据准备

# 生成示例员工绩效评估数据
performance_data = {
    'Employee': ['Alice', 'Bob', 'Charlie'],
    'Sales Performance': [80, 90, 85],
    'Customer Satisfaction': [90, 85, 95],
    'Work Efficiency': [85, 95, 90]
}
performance_df = pd.DataFrame(performance_data)

绘制雷达图

由于Pandas、Matplotlib和Seaborn不直接支持雷达图,此处描述一个使用Matplotlib绘制雷达图的基本方法,实际代码实现略过。

9.3.4 拓展案例二:地理信息可视化

使用地理信息展示不同城市的销售数据。

数据准备

# 假设数据
cities_data = {
    'City': ['New York', 'Los Angeles', 'Chicago'],
    'Latitude': [40.7128, 34.0522, 41.8781],
    'Longitude': [-74.0060, -118.2437, -87.6298],
    'Sales': [10000, 8500, 9000]
}
cities_df = pd.DataFrame(cities_data)

使用 Folium 进行地图可视化

import folium

# 创建地图
m = folium.Map(location=[37.0902, -95.7129], zoom_start=4)

# 添加销售数据点
for i, row in cities_df.iterrows():
    folium.Marker([row['Latitude'], row['Longitude']], popup=f"{row['City']}: {row['Sales']}").add_to(m)

# 显示地图
m

通过这些案例,我们展示了如何应用高级数据可视化策略,从交互式图表到多维数据展示,再到地理信息的可视化,这些方法可以帮助我们以更直观、更深入的方式理解和展示数据。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

性能测试常用术语

之前在性能测试过程中,对于某些其中的术语一知半解,导致踩了很多坑。这篇博客,就常见的一些性能测试术语进行一次浅析。。。 负载 对被测系统不断施加压力,直到性能指标超过预期或某项资源使用达到饱和,以验证系统的处…

Linux Zip解压缩命令

Zip 用法 $ zip [-选项] [-b 路径] [-t 日期] [-n 后缀名] [压缩文件列表] [-xi 列表] 默认操作是添加或替换压缩文件列表中的压缩文件条目,压缩文件列表可以包括特殊名称 -,压缩标准输入数据 Zip 是一个创建和管理 zip 文件的压缩工具 Unzip 是一个用…

关于java的异常处理

关于java的异常处理 我们在上一篇文章中,对java中的异常有了一个初步的了解,本篇文章我们来了解一下异常的处理机制,如何抛出异常,如何捕捉异常😀 关于java的异常 一、异常类型等级 二、关键字 trycatchfinallythr…

Opencv——图片卷积

图像滤波是尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将直接影响到后续图像处理和分析的有效性和可靠性。 线性滤波是图像处理最基本的方法,它允许我们对图像进行处理,产生很多不同的效果。首先,我们需要一个二…

wifi配网(esp8266和esp32)-http get和post方式

wifi配网(esp8266和esp32)-http get和post方式 通过http get和post方式来给esp芯片配网 步骤: 开机,指示灯亮起后(需要灯闪烁3下后),需在3s内(超过3s则会正常启动),按一下按键(注:切…

算法41:掉落的方块(力扣699题)----线段树

题目:https://leetcode.cn/problems/falling-squares/description/ 在二维平面上的 x 轴上,放置着一些方块。 给你一个二维整数数组 positions ,其中 positions[i] [lefti, sideLengthi] 表示:第 i 个方块边长为 sideLengthi &…

【蓝桥杯冲冲冲】[NOIP2001 普及组] 装箱问题

蓝桥杯备赛 | 洛谷做题打卡day26 文章目录 蓝桥杯备赛 | 洛谷做题打卡day26题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示思路 题解代码我的一些话 [NOIP2001 普及组] 装箱问题 题目描述 有一个箱子容量为 V V V,同时有 n n n 个物品,每…

jvm基础篇之垃圾回收[2](垃圾回收算法)

文章目录 版权声明垃圾回收算法核心思想垃圾回收算法的历史垃圾回收算法的评价标准垃圾分类算法分类标记清除算法核心思想标记清除算法优缺点 复制算法核心思想完整案例复制算法的优缺点 标记整理算法核心思想标记整理算法优缺点 分代垃圾回收算法arthas查看分代内存情况核心思…

【android】对于google-webrtc的性能中, memory leak

目录 zlmediakit->webrtcplay->app webrtcutil1/3 测试程序等 zlmediakit->webrtcplay->app 编译sdk 32 有时候会从开始新增5M,就稳定在一个值了 webrtcutil1/3 测试程序等 编译sdk 30

关于可变类型和不可变类型的探究

个人猜想(很遗憾失败了) 在硬盘或者系统中存在一个字符集 如果存在硬盘中,那么硬盘出厂的时候他的字符集所占用的空间就已经确定了。 如果存在于系统的话,硬盘应该在出厂的时候为系统设置一个存储系统字符集的地方。在安装系统…

【Chrono Engine学习总结】2-可视化

由于Chrono的官方教程在一些细节方面解释的并不清楚,自己做了一些尝试,做学习总结。 0、基本概念 类型说明: Chrono的可视化包括两块:实时可视化,以及离线/后处理可视化。 其中,实时可视化,又…

蓝桥杯省赛无忧 背包问题 课件 课件61 多重背包

01 多重背包基础模型 02 小明的背包3 03 二进制优化模型 04 新一的宝藏搜寻加强版

Linux Rootkit实验|0201 基本功能之Root后门

Linux Rootkit实验|0201 基本功能之Root后门 11 May 2017 文章目录 Linux Rootkit实验|0201 基本功能之Root后门实验说明实验环境实验过程提供 root 后门 实验总结与思考参考资料参考资料 时人不识凌云木,直待凌云始道高。 实验说明 本次实…

压力测试工具-Jmeter使用总结

目录 一.前言 二.线程组 三.线程组的组件 四.线程组-HTTP请求 1、JSON提取器 2、XPATH提取器 3、正则表达式提取器 五.线程组-断言 1、响应断言 2、JSON断言 六.创建测试 1.创建线程组 2.配置元件 3.构造HTTP请求 4.添加HTTP请求头 5.添加断言 6.添加查看结果树…

SAFe大规模敏捷认证Leading SAFe官方认证班

课程简介 SAFe – Scaled Agile Framework是目前全球运用最广泛的大规模敏捷框架,也是全球敏捷相关认证成长最快、最被认可、最有价值的规模化敏捷认证,目前全球SAFe认证专业人士已达120万人。 据官方统计,获得新证书的IT专业人士的平均工资…

寒假作业2月2号

第一章 命名空间 一.选择题 1、编写C程序一般需经过的几个步骤依次是(C ) A. 编辑、调试、编译、连接 B. 编辑、编译、连接、运行 C. 编译、调试、编辑、连接 D. 编译、编辑、连接、运行 2、所谓数据封装就是将一组数据和与这组数据有关…

Pycharm python用matplotlib 3D绘图显示空白解决办法

问题原因: matplotlib版本升级之后显示代码变了,修改为新的 # ax Axes3D(fig) # 原代码 ax fig.add_axes(Axes3D(fig)) # 新代码import numpy as np import matplotlib.pyplot as plt from matplotlib import cm from mpl_toolkits.mplot3d import Ax…

Electron开发的十大神级产品,vscode、atom、skype、figma等

Hi、我是贝格前端工场,今天分享一下基于Electron的十大著名产品,欢迎友友们补充。 Visual Studio Code 这是一款由微软开发的轻量级代码编辑器,它提供了丰富的功能和插件生态系统,支持多种编程语言和开发工具。Visual Studio Cod…

PDF中公式转word

效果:实现pdf中公式免编辑 step1: 截图CtrlAltA,复制 step2: SimpleTex - Snip & Get 网页或客户端均可,无次数限制,效果还不错。还支持手写、文字识别 单张图片:选 手写板 step3: 导出结果选择 注:…

【笔记】Android 常用编译模块和输出产物路径

模块&产物路径 具体编译到软件的路径要看编译规则的分区,代码中模块编译输出的产物基本对应。 Android 代码模块 编译产物路径设备adb路径Comment 模块device/mediatek/system/common/ 资源overlay/telephony/frameworks/base/core 文件举例res/res/values-m…