从零开始:Python与Jupyter Notebook中的数据可视化之旅

从零开始:Python与Jupyter Notebook中的数据可视化之旅

目录

理解数据与数据可视化的基本流程

数据可视化的核心不仅是将数据映射为图形,而是一个贯穿整个数据流向的完整过程。这个过程可以分为以下几个关键步骤:

  • 数据采集:首先需要收集原始数据,可能来自数据库、API、手动输入或其它形式的文件(如CSV、Excel等)。
  • 数据处理和变换:对数据进行清洗、转换、聚合等处理,以便获得可用的数据结构和格式。
  • 可视化映射:将数据映射为图形符号,如点、线、颜色等,展示数据的结构和关系。
  • 人机交互:通过交互式图形实现动态数据探索,用户可以通过缩放、选择、过滤等操作更深入理解数据。
  • 用户感知:最终目标是通过图形呈现帮助用户理解数据的模式、趋势和重要信息。

了解Python与其他可视化工具

在数据可视化领域,Python拥有多个强大的库,可以生成各种类型的图形。常用的库包括:

  • Matplotlib:最基础的可视化库,支持创建各种静态、动态、交互式图形。
  • Seaborn:基于Matplotlib,提供了更高级和美观的统计图形工具,简化了数据的可视化操作。
  • Pandas:主要是用于数据操作和分析的库,但其内置的可视化功能也非常强大,适合快速生成常见图表。
  • Pyecharts:一个基于Python的库,支持创建交互式图形,适合需要精美和复杂展示的场景。

掌握Anaconda、Jupyter Notebook的常用操作方法

  • Anaconda:是一个集成数据科学工具的平台,常用于安装和管理Python及其相关库。
    • 创建虚拟环境:使用conda create -n myenv python=3.x来创建环境。
    • 安装库:在环境中运行conda install <package>pip install <package>
  • Jupyter Notebook:是一个交互式编程环境,支持实时代码执行、数据可视化和文档撰写。
    • 在终端输入jupyter notebook启动应用,打开浏览器进行操作。
    • 通过Markdown格式添加文本注释、公式,方便记录实验过程。

原理

数据可视化的流程可以分为四个主要部分:

  1. 数据采集:收集、导入数据源,通常以CSV、数据库等形式存在。
  2. 数据处理和变换:利用Pandas等工具对数据进行整理。
  3. 可视化映射:借助Matplotlib、Seaborn等库创建图形展示。
  4. 交互和感知:通过交互功能(如Pyecharts)与用户进行数据分析交互,增强对数据的理解。

这种整体的流程不仅提升了可视化的质量,也为用户提供了高效的分析工具。

环境配置

1. 安装Anaconda软件,创建实验环境

激活环境:

conda activate myenv 

打开Anaconda Prompt,创建新的实验环境并指定Python版本:

conda create -n myenv python=3.x 

(例如,python=3.8可以选择合适版本)

2. 安装Jupyter Notebook

启动Jupyter Notebook:

jupyter notebook 

安装Jupyter Notebook:

conda install jupyter 
3. 创建第一个Jupyter Notebook文本
  • 在Jupyter Notebook界面中,点击New -> Python 3,创建一个新的Notebook文件。
(1)更改保存路径、重命名文件
  • 创建文件后,可以点击顶部文件名(默认是Untitled),然后重命名为Iris Visualization或其他合适的名字。
(2)创建代码单元和Markdown单元
  • 点击+按钮可以添加新的单元。
  • Cell类型的下拉框中,可以选择Code(代码单元)或Markdown(文本单元)。
  • 代码单元用来输入Python代码,Markdown单元则可以用来写实验步骤、注释、公式等。

实验1-1:鸢尾花数据集可视化练习

打开软件,可能需要等一会

在这里插入图片描述


点击file——》Python 3

在这里插入图片描述


点击红框,重命名bushuo1-1.

在这里插入图片描述

1. 安装scikit-learn库

在这里插入图片描述

在Anaconda Prompt中运行以下命令安装scikit-learn库:

conda install scikit-learn 
在这里插入图片描述
2. 导入鸢尾花数据集并绘制表格
代码步骤:
# 导入必要的库from sklearn import datasets import pandas as pd import matplotlib.pyplot as plt # 设置字体以支持中文显示 plt.rcParams['font.family']='Arial Unicode MS'# 加载鸢尾花数据集 iris = datasets.load_iris()# 创建DataFrame并设置列名 df = pd.DataFrame(iris.data, columns=['SL','SW','PL','PW'])# 修改列名为中文 df.columns =['长度','宽度','长度2','宽度2']# 显示前几行数据print(df.head())
在这里插入图片描述

绘制特征之间的散点图

plt.figure(figsize=(10, 6)) plt.scatter(df['长度'], df['宽度'], c=iris.target, cmap='viridis') plt.xlabel('花萼长度 (cm)') plt.ylabel('花萼宽度 (cm)') plt.title('鸢尾花花萼长度与宽度的散点图') plt.colorbar(label='种类') plt.show() 

绘制饼图

在这里插入图片描述
plt.rcParams['font.family']='Arial Unicode MS' df['类别']= iris.target df_sum=pd.DataFrame(df.groupby('类别').size(),columns=['数量']) df_sum.plot.pie(y='数量')

绘制散点图

# 导入必要的库 from sklearn importdatasetsimportpandas as pd importmatplotlib.pyplot as plt # 设置字体以支持中文显示 plt.rcParams['font.family']='Arial Unicode MS' # 加载鸢尾花数据集 iris = datasets.load_iris() # 创建DataFrame并设置列名 df =pd.DataFrame(iris.data, columns=['SL','SW','PL','PW']) df.columns =['花萼长度','花萼宽度','花瓣长度','花瓣宽度'] # 绘制散点图 - 展示花萼长度与宽度的关系 plt.figure(figsize=(10,6)) plt.scatter(df['花萼长度'], df['花萼宽度'], c=iris.target, cmap='viridis') plt.xlabel('花萼长度 (cm)') plt.ylabel('花萼宽度 (cm)') plt.title('鸢尾花花萼长度与宽度的散点图') plt.colorbar(label='种类') plt.show()

条形图:展示每种鸢尾花品种的平均特征值,例如平均花萼长度。

通过鸢尾花的目标(种类)创建类别列

df[‘种类’] = pd.Categorical.from_codes(iris.target, iris.target_names)

计算每个品种的平均特征值

mean_values = df.groupby(‘种类’).mean()

绘制条形图 - 展示不同品种的平均花萼长度

plt.figure(figsize=(10,6)) mean_values['花萼长度'].plot(kind='bar', color=['#4CAF50','#FF9800','#2196F3']) plt.title('不同鸢尾花品种的平均花萼长度') plt.xlabel('鸢尾花品种') plt.ylabel('平均花萼长度 (cm)') plt.xticks(rotation=0) plt.show()
在这里插入图片描述

代码解析:

散点图:

使用 plt.scatter() 绘制花萼长度与花萼宽度的关系,并根据鸢尾花品种(iris.target)进行颜色映射。
cmap=‘viridis’ 用来指定颜色图,plt.colorbar() 添加颜色图例,显示各个颜色对应的品种。

条形图:

使用 groupby(‘种类’) 将鸢尾花数据按种类分类,并计算每种花的平均特征值。
mean_values[‘花萼长度’].plot(kind=‘bar’) 用于绘制条形图,显示不同品种鸢尾花的平均花萼长度。
color 参数指定了不同品种的颜色,xticks(rotation=0) 保持x轴标签不旋转。

结论:

散点图提供了特征之间的相关性和品种的分布信息,有助于发现不同品种的分布模式。
条形图则突出展示了不同品种鸢尾花的平均特征值,直观对比它们在某个维度(如花萼长度)上的差异。
这两个可视化方法相结合,有助于从多个角度深入理解鸢尾花数据集中的特征关系和品种差异。

Read more

掌控消息全链路(4)——RabbitMQ/Spring-AMQP高级特性详解之事务与消息分发

掌控消息全链路(4)——RabbitMQ/Spring-AMQP高级特性详解之事务与消息分发

🔥我的主页:九转苍翎⭐️个人专栏:《Java SE》《Java集合框架系统精讲》《MySQL高手之路:从基础到高阶》《计算机网络》《Java工程师核心能力体系构建》《RabbitMQ理论与实践》天行健,君子以自强不息。 1.事务 AMQP(高级消息队列协议)实现了事务机制,主要用于确保消息的原子性发布和确认。换言之,它允许你将多个操作(如发送消息、确认消息)绑定在一起,要么全部成功,要么全部失败 发送消息 @RestController@RequestMapping("/producer")publicclassProducerController{@Resource(name ="transRabbitTemplate")privateRabbitTemplate transRabbitTemplate;@Transactional@RequestMapping("/trans")publicStringtrans(){ transRabbitTemplate.convertAndSend(""

By Ne0inhk
深入浅出 MVCC —— 从零理解 MySQL 并发控制

深入浅出 MVCC —— 从零理解 MySQL 并发控制

本文面向初学者,从最基础的概念讲起,一步步带你理解 MySQL 中 MVCC(多版本并发控制)的工作原理。不需要任何前置知识,看完就能在面试中讲清楚 MVCC。 希望能对大家有帮助! 一、为什么需要 MVCC?从一个故事说起 1.1 没有并发控制的世界 想象一个银行账户系统,张三的账户余额是 1000 元。 场景一:同时读写 时刻线程A(转账)线程B(查询)T1读取余额:1000T2读取余额:1000T3扣款200,更新为800T4显示余额:1000(旧值!) 线程B看到了一个"过时"的数据。这叫做脏读或不可重复读问题。 场景二:同时写 时刻线程A(转入500)线程B(扣款200)T1读取余额:1000T2读取余额:1000T31000+

By Ne0inhk
Flutter 组件 codeable_cli 适配鸿蒙 HarmonyOS 实战:高性能命令行工具,构建交互式终端与研发脚本脚手架治理架构

Flutter 组件 codeable_cli 适配鸿蒙 HarmonyOS 实战:高性能命令行工具,构建交互式终端与研发脚本脚手架治理架构

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 codeable_cli 适配鸿蒙 HarmonyOS 实战:高性能命令行工具,构建交互式终端与研发脚本脚手架治理架构 前言 在鸿蒙(OpenHarmony)生态迈向工业化研发协同、涉及极高频率的代码模板生成、复杂的跨端环境自动检测及全流程自动化脚本治理的背景下,如何实现一套既能提供极致终端交互体验、又能保障跨平台(Windows/macOS/Linux)执行一致性且具备强类型命令解析能力的“CLI 开发基座”,已成为决定研发团队效能上限与工具链健壮性的关键。在鸿蒙项目涉及大量 HAP/HSP 目录结构自动维护与 OHOS SDK 路径自动寻找的场景下,如果研发工具依然依赖脆弱且难以调试的 Bash 或 Python 脚本,由于由于环境路径的微差异,极易由于由于“脚本解析冲突”导致鸿蒙应用在初始化或构建环节发生各种由于由于莫名其妙的阻塞。 我们需要一种能够解耦命令定义与执行逻辑、支持交互式问答(Prompts)且具备原生 Dart

By Ne0inhk
一文通关 MySQL 数据类型,打好高性能数据库的第一战!

一文通关 MySQL 数据类型,打好高性能数据库的第一战!

🔥海棠蚀omo:个人主页                 ❄️个人专栏:《初识数据结构》,《C++:从入门到实践》,《Linux:从零基础到实践》,《Linux网络:从不懂到不会》,《MySQL:新手入门指南》                 ✨追光的人,终会光芒万丈 博主简介: 目录 一.数值类型 1.1tinyint类型 1.2bit类型 二.小数类型 2.1float类型 2.2decimal类型 三.字符串类型 3.1char类型 3.2varchar类型 3.3char和varchar的比较 四.日期和时间类型 五.enum和set 5.1查询set中的数据 前言: 在上一篇文章中,我们学习了库和表的相关操作,而在我们上一篇的讲解中,我们提到了在列名后面跟的是数据类型,但是对于MySQL中的数据类型我们现在还一知半解,那么今天这篇文章我们就来详细谈一谈MySQL中的数据类型。 那么在详细讲解每种数据类型之前,

By Ne0inhk