Python 數據分析與可視化 Day 2 - 數據清洗基礎

🎯 今日目標

  • 學會識別和處理缺失數據(NaN)
  • 學會刪除/填補缺失值
  • 清理重復數據
  • 修改列類型,準備數據分析

🧼 一、缺失值處理(NaN)

? 1. 檢查缺失值
import pandas as pd
df = pd.read_csv("students.csv")print(df.isnull())        # 每個元素是否為 NaN
print(df.isnull().sum())  # 每列缺失值數量
? 2. 刪除缺失數據
df.dropna()            # 刪除包含 NaN 的行
df.dropna(axis=1)      # 刪除包含 NaN 的列

inplace=True 參數可以就地修改,不返回新對象。

? 3. 填充缺失數據
df.fillna(0)               # 全部填 0
df["成績"].fillna(df["成績"].mean())   # 用均值填充
df.fillna(method="ffill")  # 用上一行填
df.fillna(method="bfill")  # 用下一行填

🔁 二、重復值處理

? 1. 檢測重復數據

df.duplicated()            # 標記每行是否重復(默認所有列)
df.duplicated(subset=["姓名"])  # 指定列檢查

? 2. 刪除重復數據

df.drop_duplicates(inplace=True)

🔧 三、數據類型轉換

df["成績"] = df["成績"].astype(float)
df["是否及格"] = df["是否及格"].astype(bool)

可以使用 df.dtypes 查看所有列的數據類型。


🧪 今日練習任務

使用以下示例數據,完成清洗操作:

姓名,性別,成績,是否及格
張三,男,88,True
李四,女,,True
王五,男,59,False
張三,男,88,True
趙六,,92,True
田七,女,NaN,

📝 任務:

  1. 加載該 CSV 文件為 DataFrame

  2. 檢查每列缺失值數量

  3. 刪除性別缺失的行

  4. 用“成績”列均值填補成績缺失值

  5. 刪除重復的行(姓名、成績相同)

  6. 將“成績”列類型設置為 float,將“是否及格”填補為 False

    import pandas as pd
    import os# 路徑設置
    input_path = "./data/students_dirty.csv"
    output_path = "./data/students_cleaned.csv"# 確保輸出目錄存在
    os.makedirs(os.path.dirname(output_path), exist_ok=True)# 加載原始數據
    df = pd.read_csv(input_path)
    print("原始數據:")
    print(df)# 1. 檢查每列缺失值數量
    print("\n缺失值統計:")
    print(df.isnull().sum())# 2. 刪除性別缺失的行
    df = df.dropna(subset=["性別"])# 3. 用“成績”列均值填補缺失值
    # 保留整數部分,四舍五入到整數
    mean_score = df["成績"].mean().round()
    df["成績"] = df["成績"].fillna(mean_score)# 4. 刪除重復的行(默認檢查所有列)
    df = df.drop_duplicates()# 5. 填補“是否及格”空缺值為 False
    with pd.option_context("future.no_silent_downcasting", True):df = df.fillna(False).infer_objects(copy=False)# 6. 數據類型轉換
    df["成績"] = df["成績"].astype(float)
    df["是否及格"] = df["是否及格"].astype(bool)# 顯示清洗結果
    print("\n清洗后的數據:")
    print(df)# 保存結果
    df.to_csv(output_path, index=False, encoding="utf-8")
    print(f"\n? 清洗后的數據已保存至 {output_path}")
    

    ? 示例輸出(清洗后)

    原始數據:姓名   性別    成績   是否及格
    0  張三    男  88.0   True
    1  李四    女   NaN   True
    2  王五    男  59.0  False
    3  張三    男  88.0   True
    4  趙六  NaN  92.0   True
    5  田七    女   NaN    NaN缺失值統計:
    姓名      0
    性別      1
    成績      2
    是否及格    1
    dtype: int64清洗后的數據:姓名 性別    成績   是否及格
    0  張三  男  88.0   True
    1  李四  女  78.0   True
    2  王五  男  59.0  False
    5  田七  女  78.0  False? 清洗后的數據已保存至 ./data/students_cleaned.csv
    
         姓名 性別    成績 是否及格
    0    張三  男  88.0   True
    1    李四  女  79.7   True
    2    王五  男  59.0  False
    3    田七  女  79.7  False
    

    在這里插入圖片描述


?? 今日總結

  • 掌握了 dropna()fillna()drop_duplicates() 等數據清洗方法
  • 學會判斷和填補缺失值
  • 理解了數據類型轉換在分析前的重要性

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

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

相關文章

3DS中文游戲全集下載 任天堂3DS簡介3DS第一方獨占游戲推薦

任天堂3DS 的詳細介紹,涵蓋其硬件特性、核心功能、游戲陣容及歷史地位: 3DS游戲全集下載 https://pan.quark.cn/s/dd40e47387e7 https://sink-698.pages.dev/3ds CIA CCA 等格式可用于3DS模擬器和3DS實體機 3DS 是什么? 全稱:Nin…

【Python小練習】3D散點圖

資產風險收益三維分析 背景 王老師是一名金融工程研究員,需要對多個資產的預期收益、風險(波動率)和與市場的相關性進行綜合分析,以便為投資組合優化提供決策依據。 代碼實現 import matplotlib.pyplot as plt from mpl_toolk…

安寶特案例丨突破傳統手術室,Vuzix AR 眼鏡圓滿助力全膝關節置換術

在巴西圣保羅醫院的手術室里,骨科權威 Ricardo Gobbi醫生正戴著 安寶特 Vuzix 智能 AR 眼鏡,為一位膝關節炎患者實施全膝關節置換術。與傳統手術不同的是,他的視野中實時疊加著骨骼三維模型、切割路徑標線和動態數據 —— 這并非科幻場景&…

qt設置文件自動保存-cnblog

步驟: 「工具」->「選項」->「環境」->「Auto-save modified files」。 可開啟/關閉自動保存文件功能,還可設置自動保存時間的間隔(最短間隔1分鐘)。 鐘)。

linux下如何找到dump文件被生成到哪里了

在大多數 Linux 系統中,核心轉儲文件(core dump)通常由系統自動保存在當前工作目錄下,或者由配置決定其保存位置。核心轉儲文件的默認文件名通常包含進程 ID(PID)和程序名,例如 core.PID 或 cor…

API 調試工具校驗 JSON Mock 接口(一):無參請求與基礎響應驗證

在前后端分離的開發模式中,JSON Mock 工具為前端開發人員在后端接口未就緒時提供了極大便利,能夠模擬返回 JSON 數據的 API 接口,實現前端獨立開發與測試。而 API 開發調試工具 作為一款強大的接口測試工具,可進一步對這些 Mock 接…

單體架構、微服務架構和分布式架構的區別

. 架構定義與核心特征 1.1 單體架構(Monolithic Architecture) 單體架構是將所有功能模塊集中在一個單一代碼庫中的傳統架構模式: 所有功能(UI層、業務邏輯、數據訪問)打包為單一部署單元通常使用單一技術棧開發(如Spring Boot、Django等)共享單一數據庫實例進程內通信(方法…

如何重新安裝 Rust

在開發過程中,我們有時可能需要重新安裝 Rust,比如遇到版本沖突、環境配置錯誤,或者僅僅是想更新到最新版本。本文將詳細介紹如何卸載現有 Rust 安裝,并重新安裝 Rust,同時還會介紹一些常見的配置技巧,幫助…

使用springboot實現過濾敏感詞功能

一,在springboot項目的resources目錄里創建sensitive-words.text(敏感詞文本) 每個詞獨自一行 列如: 賭博 吸毒 開票 二,在util創建工具類SensitiveFilter package com.nowcoder.community.util;Component public c…

Vue 蒼穹外賣

Vue 蒼穹外賣 node_modules:當前項目依賴的js包 assets:靜態資源存放目錄 components:公共組件存放目錄 App.vue:項目的主組件,頁面的入口文件 main.js:整個項目的入口文件 package.json:項…

評估視覺在CNN 在人類動作識別準確率

大家讀完覺得有幫助記得關注和點贊!!! 抽象 本研究使用 COCO 圖像語料庫的三類子集探索人類動作識別,對從簡單的全連接網絡到 transformer 架構的模型進行基準測試。二進制 Vision Transformer (ViT) 實現了…

Self-supervised Learning(BERT/GPT/T5)

李宏毅老師《Pre-train Model》 什么是:Self-supervised Learning BERT BERT 能做什么 Mask Input Next Sentence Prediction(not helpful) BERT其它的能力 上述的能力,可以認為是一種填空的能力,那么除了這些,還有哪些有用的能力呢&…

《NuGet:.NET開發的魔法包管理器》

一、NuGet 初相識 在軟件開發的廣袤天地中,依賴管理始終是一個核心議題。想象一下,在沒有高效包管理工具的年代,開發者如同在黑暗中摸索前行。當項目逐漸龐大,所需的外部庫和組件日益增多,手動管理這些依賴就如同一場噩…

Vulkan 學習筆記12—深度緩沖

一、3D幾何體與深度問題 Z坐標引入 將2D幾何體擴展為3D時,需在Vertex結構體中添加glm::vec3 pos表示三維位置,并更新頂點輸入描述符格式為VK_FORMAT_R32G32B32_SFLOAT。頂點著色器需接收3D坐標并通過模型-視圖-投影矩陣轉換為裁剪坐標。 深度沖突問題 當…

AWS EC2使用SSM會話管理器連接

🧩 前提條件 已創建并運行中的 Amazon EC2 實例(Amazon Linux 2023) 擁有管理員權限的 AWS 賬戶 已連接到實例(例如通過 EC2 Instance Connect) 第一步:手動安裝 SSM Agent Amazon Linux 2023 默認未安…

Llama 4 模型卡及提示格式介紹

以下是Llama 4支持的特殊標記和標簽的完整列表: 通用標記 <|begin_of_text|>:指定提示符的開始。 <|end_of_text|>:模型將停止生成更多標記。此標記僅由預訓練的模型生成。 <|header_start|>…<|header_end|>:這些標記包含特定消息的角色。可能的…

flutter bloc 使用詳細解析

源碼地址 flutter_bloc 是基于 BLoC&#xff08;Business Logic Component&#xff09;模式的 Flutter 狀態管理庫&#xff0c;它封裝了 bloc package&#xff0c;幫助我們更清晰地組織業務邏輯與 UI 的分離。核心思想是 事件驅動 和 狀態響應。 &#x1f9e0; 原理簡介 1. 核…

c++ 語言在無人機應用開發中的應用

C 語言在無人機應用開發中扮演著核心角色&#xff0c;特別是在對性能、實時性、資源利用效率和底層硬件控制有嚴格要求的領域。以下是其主要應用領域&#xff1a; 飛控系統 (Flight Control System - FCS) 核心功能&#xff1a; 這是無人機的大腦。C 用于實現核心的導航、制導與…

Uniapp本地存儲(uni.setStorage)全面解析與實踐指南

在移動應用開發中&#xff0c;本地存儲是不可或缺的核心功能之一。作為跨平臺開發框架&#xff0c;Uniapp提供了一套完善的本地存儲解決方案&#xff0c;使開發者能夠輕松實現數據的持久化存儲。本文將深入探討Uniapp本地存儲的方方面面&#xff0c;從基礎使用到高級技巧&#…

n8n教程:5分鐘部署+自動生AI日報并寫入飛書多維表格

哈嘍&#xff0c;大家好&#x1f44f; 我是阿星&#xff01; 最近n8n太火了。什么是n8n&#xff1f;有點像扣子和dify的綜合體。 簡單來說就是替你打工的「自動化工作流」 我們今天就從部署&#x1f449;搭建第一個工作流。用它實現自動抓取新聞并分類。 教程有點長&#x…