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
英文地址,請注明出處:http://en.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)監聽數據變化…