Python 數據分析與可視化 Day 5 - 數據可視化入門(Matplotlib Seaborn)

🎯 今日目標

  • 掌握 Matplotlib 的基本繪圖方法(折線圖、柱狀圖、餅圖)
  • 掌握 Seaborn 的高級繪圖方法(分類圖、分布圖、箱線圖)
  • 熟悉圖像美化(標題、標簽、顏色、風格)
  • 完成一組學生成績數據的可視化展示

🧱 一、Matplotlib 基礎繪圖

import matplotlib.pyplot as plt# 示例數據
names = ["張三", "李四", "王五", "趙六"]
scores = [88, 92, 75, 60]# 折線圖
plt.plot(names, scores, marker="o")
plt.title("學生成績折線圖")
plt.xlabel("姓名")
plt.ylabel("成績")
plt.grid(True)
plt.show()

? 常見圖表類型

# 柱狀圖
plt.bar(names, scores)# 餅圖
plt.pie(scores, labels=names, autopct="%.1f%%")# 保存圖像
plt.savefig("charts/score_chart.png")

🌈 二、Seaborn 入門(更美觀 + 高級)

import seaborn as sns
import pandas as pd# 示例 DataFrame
df = pd.DataFrame({"姓名": names,"成績": scores,"性別": ["男", "女", "男", "女"]
})# 設置風格
sns.set_style("whitegrid")# 分類柱狀圖
sns.barplot(data=df, x="姓名", y="成績", hue="性別")
plt.title("學生成績(按性別)")
plt.show()

🎨 三、其他 Seaborn 圖示示例

# 成績分布直方圖
sns.histplot(df["成績"], bins=5)# 箱線圖:成績分布(可識別異常值)
sns.boxplot(data=df, x="性別", y="成績")# 成績與是否及格關系散點圖(需添加字段)
sns.scatterplot(data=df, x="成績", y="是否及格")

🧪 今日練習任務

使用 students_cleaned.csv (前兩天清洗的表格數據)文件,完成以下圖表:

  1. 所有學生成績的折線圖 & 柱狀圖

  2. 不同性別的平均成績柱狀圖

  3. 所有學生成績分布直方圖

  4. 學生成績箱線圖(按性別分組)

  5. 將所有圖像保存為 PNG 圖片到 charts/ 文件夾

    import pandas as pd
    import matplotlib.pyplot as plt
    import seaborn as sns
    import osrc = {'font.sans-serif': 'Arial Unicode MS','axes.unicode_minus': False}
    # 設置中文字體支持(如 matplotlib 出現亂碼)
    plt.rcParams['font.family'] = 'Arial Unicode MS'  # Mac 用戶可用
    # plt.rcParams['font.sans-serif'] = ['SimHei']   # Windows 用戶用這行
    plt.rcParams['axes.unicode_minus'] = False# 路徑設置
    input_path = "data/students_cleaned.csv"
    output_dir = "charts"
    os.makedirs(output_dir, exist_ok=True)# 加載數據
    df = pd.read_csv(input_path)
    print("? 已加載學生數據:")
    print(df.head())# -------- 圖表 1:學生成績折線圖 --------
    plt.figure(figsize=(8, 5))
    plt.plot(df["姓名"], df["成績"], marker='o')
    plt.title("學生成績折線圖")
    plt.xlabel("姓名")
    plt.ylabel("成績")
    plt.grid(True)
    plt.tight_layout()
    plt.savefig(f"{output_dir}/成績折線圖.png")
    plt.close()# -------- 圖表 2:學生成績柱狀圖 --------
    plt.figure(figsize=(8, 5))
    plt.bar(df["姓名"], df["成績"], color="skyblue")
    plt.title("學生成績柱狀圖")
    plt.xlabel("姓名")
    plt.ylabel("成績")
    plt.tight_layout()
    plt.savefig(f"{output_dir}/成績柱狀圖.png")
    plt.close()# -------- 圖表 3:不同性別的平均成績柱狀圖 --------
    plt.figure(figsize=(6, 4))
    sns.set(style="whitegrid", rc=rc)
    avg_by_gender = df.groupby("性別")["成績"].mean().reset_index()
    sns.barplot(data=avg_by_gender, x="性別", y="成績", hue='性別', palette="Set2", legend=False)
    plt.title("不同性別的平均成績")
    plt.tight_layout()
    plt.savefig(f"{output_dir}/性別平均成績柱狀圖.png")
    plt.close()# -------- 圖表 4:成績分布直方圖 --------
    plt.figure(figsize=(6, 4))
    sns.histplot(df["成績"], bins=5, kde=True, color="orange")
    plt.title("成績分布直方圖")
    plt.xlabel("成績")
    plt.tight_layout()
    plt.savefig(f"{output_dir}/成績分布直方圖.png")
    plt.close()# -------- 圖表 5:成績箱線圖(按性別) --------
    plt.figure(figsize=(6, 4))
    sns.boxplot(data=df, x="性別", y="成績", hue="性別", palette="Pastel1", legend=False)
    plt.title("成績箱線圖(按性別)")
    plt.tight_layout()
    plt.savefig(f"{output_dir}/成績箱線圖_按性別.png")
    plt.close()print(f"\n? 所有圖表已生成并保存至:{output_dir}/")
    

    在這里插入圖片描述

    在這里插入圖片描述

    在這里插入圖片描述
    在這里插入圖片描述

    在這里插入圖片描述


?? 今日總結

  • 掌握了 Matplotlib 基本圖形繪制技巧
  • 掌握了 Seaborn 的分類、分布圖制作方法
  • 能基于清洗后的數據完成完整的圖形展示
  • 理解了圖表選擇和美化對表達分析結論的重要性

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/86498.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/86498.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/86498.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CephFS “Client Failing to Respond to Cache Pressure“ 告警分析

告警含義 當出現 Client failing to respond to cache pressure 警告時,表明: 元數據服務器 (MDS) 要求客戶端釋放緩存的元數據(如 inode Capabilities)客戶端未能及時響應 釋放請求核心觸發機制 MDS 通過以下周期性流程管理緩存 階段操作觸發條件Cache Trim 周期每隔 mds…

生成式人工智能實戰 | 生成對抗網絡(Generative Adversarial Network, GAN)

生成式人工智能實戰 | 生成對抗網絡 0. 前言1. 生成對抗網絡2. 模型構建2.1 生成器2.2 判別器 3. 模型訓練3.1 數據加載3.2 訓練流程 0. 前言 生成對抗網絡 (Generative Adversarial Networks, GAN) 是一種由兩個相互競爭的神經網絡組成的深度學習模型,它由一個生成…

緩存與加速技術實踐-MongoDB數據庫應用

一.什么是MongoDB MongoDB 是一個文檔型數據庫,數據以類似 JSON 的文檔形式存儲。 MongoDB 的設計理念是為了應對大數據量、高性能和靈活性需求。 MongoDB 使用集合(Collections)來組織文檔(Documents)&#xff0…

聲網對話式AI把“答疑機器人”變成“有思維的助教”

作為一家專注初高中學生的線上教育平臺,我們精心打磨的系統化課程收獲了不少認可,但課后無人答疑的難題卻始終橫亙在前。學生課后遇到疑惑,要么只能默默憋在心里,要么就得苦苦等待下一節課,家長們也頻繁抱怨 “花了錢&…

常見的排序方法

目錄 1. 插入排序 2. 希爾排序 3. 選擇排序 4. 堆排序 5. 冒泡排序 6. 快速排序 1. 快速排序的實現 1. 思路(以從小到大排序為例) 2. 選取基準元素的方法(Hoare) 3. 選取基準元素的方法(挖坑法) …

【matlab定位例程】基于AOA和TDOA混合的定位方法,背景為三維空間,自適應錨點數量,附下載鏈接

文章目錄 代碼概述代碼功能概述核心算法原理AOA定位模型TDOA定位迭代算法混合定位策略關鍵技術創新 運行結果4個錨點的情況40個錨點的情況 MATLAB源代碼 代碼概述 代碼功能概述 本代碼實現了一種三維空間中的混合定位算法,結合到達角( A O A AOA AOA&a…

專題:2025醫療AI應用研究報告|附200+份報告PDF匯總下載

原文鏈接:https://tecdat.cn/?p42748 本報告匯總解讀聚焦醫療行業人工智能應用的前沿動態與市場機遇,以數據驅動視角剖析技術演進與商業落地的關鍵路徑。從GenAI在醫療領域的爆發式增長,到細分場景的成熟度矩陣,再到運營成本壓力…

推薦一個前端基于vue3.x,vite7.x,后端基于springboot3.4.x的完全開源的前后端分離的中后臺管理系統基礎項目(純凈版)

XHan Admin 簡介 🎉🎉 XHan Admin 是一個開箱即用的開源中后臺管理系統基礎解決方案, 項目為前后端分離架構。采用最新的技術棧全新構建,純凈的項目代碼,沒有歷史包袱。 前端使用最新發布的 vite7.0 版本構建&#xf…

MySQL誤刪數據急救指南:基于Binlog日志的實戰恢復詳解

背景 數據誤刪是一個比較嚴重的場景 1.典型誤操作場景 場景1:DELETE FROM orders WHERE status0 → 漏寫AND create_time>‘2025-06-20’ 場景2:DROP TABLE customer → 誤執行于生產環境 認識 binlog 1.binlog 的核心作用 記錄所有 DDL/DML 操…

高效數據采集方案:快速部署與應用 AnyCrawl 網頁爬蟲工具實操指南

以下是對 AnyCrawl 的簡單介紹: AnyCrawl 提供高性能網頁數據爬取,其功能專為 LLM 集成和數據處理而設計支持利用搜索引擎直接查詢獲取結果內容,類似 searxng提供開發者友好的API,支持動態內容抓取,并輸出結構化數據&…

vue3可以分頁、搜索的select

下載 npm i v-selectpage基本使用 import { SelectPageList } from v-selectpage;<SelectPageListlanguage"zh-chs"key-prop"id"label-prop"name"fetch-data"fetchData" />const fetchData (data,callback) > {const { sea…

C# 入門學習教程 (一)

文章目錄 一、解決方案與項目1. Solution 與 project 二、類與名稱空間1.類與名稱空間2.類庫的引用1. DLL引用&#xff08;黑盒引用&#xff0c;無源代碼&#xff09;2. Nuget 引用3. 項目引用&#xff08;白盒引用&#xff0c;有源代碼&#xff09; 3.依賴關系 三、類&#xf…

76、單元測試-參數化測試

76、單元測試-參數化測試 參數化測試是一種單元測試技術&#xff0c;通過將測試數據與測試邏輯分離&#xff0c;使用不同的輸入參數多次運行相同的測試用例&#xff0c;從而提高測試效率和代碼復用性。 #### 基本原理 - **數據驅動測試**&#xff1a;將測試數據參數化&#xf…

SQL學習筆記3

SQL常用函數 1、字符串函數 函數調用的語法&#xff1a;select 函數&#xff08;參數); 常用的字符串函數有&#xff1a; 拼接字符串&#xff0c;將幾個字符串拼到一起&#xff1a;concat (s1,s2,……); select concat(你好,hello); update mytable set wherefo concat(中…

Golang 面向對象編程,如何實現 封裝、繼承、多態

Go語言雖然不是純粹的面向對象語言&#xff0c;但它通過結構體(struct)、接口(interface)和方法(method)提供了面向對象編程的能力。下面我將通過具體示例展示Go中如何實現類、封裝、繼承、多態以及構造函數等概念。 1. 類與封裝 在Go中&#xff0c;使用結構體(struct)來定義…

為什么android要使用Binder機制

1.linux中大多數標準 IPC 場景&#xff08;如管道、消息隊列、ioctl 等&#xff09;的進程間通信機制 ------------------ ------------------ ------------------ | 用戶進程 A | | 內核空間 | | 用戶進程 B | | (User Spa…

OpenCV CUDA模塊設備層-----雙曲余弦函數cosh()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 該函數用于計算四維浮點向量&#xff08;float4類型&#xff09;的雙曲余弦值&#xff0c;作用于CUDA設備端。雙曲余弦函數定義為cosh(x) (e? …

48頁PPT | 企業數字化轉型關鍵方法論:實踐路徑、案例和落地評估框架

目錄 一、什么是企業數據化轉型&#xff1f; 二、為什么要進行數據化轉型&#xff1f; 1. 市場復雜性與不確定性上升 2. 內部流程效率與協同難題突出 3. 數字資產沉淀不足&#xff0c;智能化基礎薄弱 三、數據化流程管理&#xff1a;從“業務流程”到“數據流程”的對齊 …

VTK中的形態學處理

VTK圖像處理代碼解析:閾值化與形態學開閉運算 這段代碼展示了使用VTK進行醫學圖像處理的兩個關鍵步驟:閾值分割和形態學開閉運算。下面我將詳細解析每個部分的功能和實現原理。 處理前 處理后 1. 閾值分割部分 (vtkImageThreshold) vtkSmartPointer<vtkImageThresho…

xlsx.utils.sheet_to_json() 方法詳解

sheet_to_json() 是 SheetJS/xlsx 庫中最常用的方法之一&#xff0c;用于將 Excel 工作表&#xff08;Worksheet&#xff09;轉換為 JSON 格式數據。下面我將全面講解它的用法、參數配置和實際應用場景。 基本語法 javascript 復制 下載 const jsonData XLSX.utils.sheet…