【AI Study】第四天,Pandas(5)- 數據可視化

文章概要

本文詳細介紹 Pandas 的數據可視化功能,包括:

  • 基礎繪圖
  • 高級可視化
  • 統計圖表
  • 實際應用示例

基礎繪圖

折線圖

# 基本折線圖
df.plot(x='日期', y='值')
df.plot.line(x='日期', y='值')# 多列折線圖
df.plot(x='日期', y=['列1', '列2'])# 自定義樣式
df.plot(x='日期', y='值',title='標題',xlabel='X軸標簽',ylabel='Y軸標簽',color='red',linestyle='--',marker='o')# 保存圖表
plt.savefig('折線圖.png')

柱狀圖

# 基本柱狀圖
df.plot.bar(x='類別', y='值')
df.plot.barh(x='類別', y='值')  # 水平柱狀圖# 堆疊柱狀圖
df.plot.bar(x='類別', y=['列1', '列2'], stacked=True)# 分組柱狀圖
df.plot.bar(x='類別', y=['列1', '列2'])# 自定義樣式
df.plot.bar(x='類別', y='值',title='標題',color='skyblue',width=0.8,alpha=0.7)

散點圖

# 基本散點圖
df.plot.scatter(x='列1', y='列2')# 帶顏色映射的散點圖
df.plot.scatter(x='列1', y='列2', c='列3', cmap='viridis')# 帶大小映射的散點圖
df.plot.scatter(x='列1', y='列2', s='列3')# 自定義樣式
df.plot.scatter(x='列1', y='列2',title='標題',color='red',marker='*',s=100)

餅圖

# 基本餅圖
df.plot.pie(y='值', labels=df['類別'])# 環形圖
df.plot.pie(y='值', labels=df['類別'], hole=0.5)# 自定義樣式
df.plot.pie(y='值',labels=df['類別'],title='標題',autopct='%1.1f%%',colors=['red', 'blue', 'green'])

高級可視化

多子圖

# 創建子圖
fig, axes = plt.subplots(2, 2, figsize=(12, 8))# 在子圖中繪圖
df.plot.line(x='日期', y='列1', ax=axes[0, 0])
df.plot.bar(x='類別', y='列2', ax=axes[0, 1])
df.plot.scatter(x='列1', y='列2', ax=axes[1, 0])
df.plot.pie(y='值', labels=df['類別'], ax=axes[1, 1])# 調整布局
plt.tight_layout()

自定義樣式

# 設置全局樣式
plt.style.use('seaborn')# 自定義顏色
colors = ['#FF9999', '#66B2FF', '#99FF99', '#FFCC99']# 自定義字體
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['font.size'] = 12# 自定義網格
plt.grid(True, linestyle='--', alpha=0.7)# 自定義圖例
plt.legend(loc='upper right', frameon=True, fancybox=True, shadow=True)

交互式圖表

# 使用 plotly 創建交互式圖表
import plotly.express as px
import plotly.graph_objects as go# 折線圖
fig = px.line(df, x='日期', y='值', title='交互式折線圖')
fig.show()# 散點圖
fig = px.scatter(df, x='列1', y='列2', color='列3', title='交互式散點圖')
fig.show()# 保存為 HTML
fig.write_html('交互式圖表.html')

統計圖表

箱線圖

# 基本箱線圖
df.plot.box(y='值')# 多列箱線圖
df.plot.box(y=['列1', '列2'])# 分組箱線圖
df.boxplot(column='值', by='類別')# 自定義樣式
df.plot.box(y='值',title='標題',color='skyblue',vert=False)  # 水平箱線圖

直方圖

# 基本直方圖
df.plot.hist(y='值')# 多列直方圖
df.plot.hist(y=['列1', '列2'])# 自定義樣式
df.plot.hist(y='值',bins=20,title='標題',color='skyblue',alpha=0.7)

密度圖

# 基本密度圖
df.plot.kde(y='值')# 多列密度圖
df.plot.kde(y=['列1', '列2'])# 自定義樣式
df.plot.kde(y='值',title='標題',color='red',linestyle='--')

熱力圖

# 基本熱力圖
import seaborn as sns
sns.heatmap(df.corr(), annot=True, cmap='coolwarm')# 自定義樣式
sns.heatmap(df.corr(),annot=True,cmap='coolwarm',center=0,fmt='.2f',square=True)

實際應用示例

示例1:股票數據分析可視化

# 創建示例數據
dates = pd.date_range('2023-01-01', periods=100)
stock_data = pd.DataFrame({'收盤價': np.random.randn(100).cumsum() + 100,'成交量': np.random.randint(1000, 10000, 100),'MA5': None,'MA20': None
}, index=dates)# 計算移動平均
stock_data['MA5'] = stock_data['收盤價'].rolling(window=5).mean()
stock_data['MA20'] = stock_data['收盤價'].rolling(window=20).mean()# 創建子圖
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(12, 8), height_ratios=[2, 1])# 繪制K線圖
stock_data['收盤價'].plot(ax=ax1, label='收盤價')
stock_data['MA5'].plot(ax=ax1, label='MA5')
stock_data['MA20'].plot(ax=ax1, label='MA20')# 繪制成交量圖
stock_data['成交量'].plot(ax=ax2, kind='bar', color='skyblue', alpha=0.7)# 設置標題和標簽
ax1.set_title('股票價格走勢')
ax1.set_ylabel('價格')
ax1.legend()
ax2.set_title('成交量')
ax2.set_ylabel('成交量')# 調整布局
plt.tight_layout()
plt.show()

示例2:銷售數據分析可視化

# 創建示例數據
dates = pd.date_range('2023-01-01', periods=365)
sales_data = pd.DataFrame({'銷售額': np.random.randn(365).cumsum() + 1000,'訂單數': np.random.randint(10, 100, 365),'客單價': None
}, index=dates)# 計算客單價
sales_data['客單價'] = sales_data['銷售額'] / sales_data['訂單數']# 創建子圖
fig, (ax1, ax2, ax3) = plt.subplots(3, 1, figsize=(12, 12))# 繪制銷售額趨勢
sales_data['銷售額'].plot(ax=ax1, color='blue')
ax1.set_title('銷售額趨勢')
ax1.set_ylabel('銷售額')# 繪制訂單數分布
sales_data['訂單數'].plot.hist(ax=ax2, bins=30, color='green', alpha=0.7)
ax2.set_title('訂單數分布')
ax2.set_xlabel('訂單數')
ax2.set_ylabel('頻次')# 繪制客單價箱線圖
sales_data.boxplot(column='客單價', ax=ax3)
ax3.set_title('客單價分布')
ax3.set_ylabel('客單價')# 調整布局
plt.tight_layout()
plt.show()

總結

數據可視化部分涵蓋了:

  1. 基礎圖表類型(折線圖、柱狀圖、散點圖、餅圖)
  2. 高級可視化技術(多子圖、自定義樣式、交互式圖表)
  3. 統計圖表(箱線圖、直方圖、密度圖、熱力圖)
  4. 實際應用示例

掌握數據可視化技術對于數據分析至關重要,它可以幫助我們:

  • 直觀地展示數據特征和趨勢
  • 發現數據中的規律和異常
  • 有效地傳達分析結果
  • 支持決策制定

建議通過實際項目多加練習,熟悉各種可視化方法的適用場景和組合使用方式。同時,也要注意:

  • 選擇合適的圖表類型
  • 保持圖表的簡潔性和可讀性
  • 使用適當的顏色和樣式
  • 添加必要的標題和標簽
  • 考慮圖表的交互性需求

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

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

相關文章

Linux故障排查

目錄 案例1:GRUB引導故障 案例2:文件系統只讀故障 案例3:OOM Killer觸發 案例4:系統啟動卡住(initramfs損壞) 案例5:磁盤空間耗盡 案例6:SSH登錄緩慢 案例7:邏輯卷…

pikachu靶場通關筆記36 越權01之水平越權

目錄 一、水平越權 二、賬戶功能探測 1、登錄賬號lucy 2、登錄賬號lili 3、登錄賬號kobe 三、源碼分析 四、滲透實戰 1、登錄lucy賬號 2、越權訪問lili賬戶資料 3、越權訪問kobe賬戶資料 本系列為《pikachu靶場通關筆記》滲透實戰,本文通過對越權關卡源碼…

javaweb -Ajax

Ajax的定義 Ajax(Asynchronous JavaScript and XML)是一種用于創建異步 Web 應用的技術,允許網頁在不重新加載整個頁面的情況下與服務器交換數據并更新部分內容。 Ajax的核心特點 異步通信:通過后臺與服務器交互,用…

11.OpenCV—聯合QT環境配置

1.QT環境變量配置 在Qt中配置OpenCV 3.4.6與Visual Studio 2017的步驟如下: 一、前期準備 安裝組件驗證 確認已安裝Qt的MSVC2017版本(如Qt 5.12 MSVC2017 64-bit) 檢查Visual Studio 2017的MSVC編譯器是否正常工作 OpenCV庫準備 從官網…

2025虛幻引擎一般用什么模型格式

2025虛幻引擎一般用什么模型格式 前言 積累了一些人物模型發現有的有骨骼,有的沒骨骼,有的要轉換格式,有的直接可以用,所以了解一下各種模型。 2025虛幻人物模型積累 格式轉換真麻煩。 2025.uexp、.uasset文件、.ubulk如何打…

電腦在使用過程中頻繁死機怎么辦

正興致勃勃地打游戲,或者趕著完成一份重要的工作文檔,電腦突然死機了,鼠標動不了,鍵盤也沒反應,只能干瞪眼干著急。電腦在使用過程中頻繁死機,真的太影響心情和效率了。今天咱就來好好聊聊,遇到…

【Java_EE】設計模式

設計模式:解決一些固定場景的固定套路,是一種代碼風格的知道指南。設計模式不止23種 1、單例設計模式 單例設計模式:確保一個類只有一個實例,提供全局訪問點 單例模式的實現方式: 1:餓漢模式 /*** 餓漢…

Nginx代理緩存靜態資源

問題描述 有兩臺服務器,一臺是外網的網關服務器,一臺是內網的資源服務器,但是兩臺服務器距離很遠(跨省),頁面中依賴大量插件資源,加載耗時久,本章重點講解Nginx代理緩存靜態資源。 …

Blender 轉換為 STP:軟件操作與迪威模型網在線轉換全指南

在三維設計與工程制造領域,不同格式的文件承擔著各自的使命。Blender 作為一款功能強大且開源的三維建模軟件,被眾多設計師、藝術家以及學生廣泛使用,能夠創作出風格多樣、細節豐富的三維模型。而 STP 格式作為制造業通用的數據交換標準&…

WebFuture:PDF頁面去掉下載按鈕

問題描述:客戶要求pdf頁面不顯示下載按鈕 解決辦法:WF15.2版本開始會在內容管理配置增加“允許下載 PDF“開關;之前的版本需要替換文件來處理 1.備份網站下的base文件夾,路徑為/wwwroot/content/_common/base/,然后覆…

【JVM】- 類加載與字節碼結構2

編譯期處理(語法糖) java編譯器把.java源碼編譯成.class字節碼的過程,自動生成和轉換的一些代碼。 默認構造器 public class Candy01 { }編譯成class后的代碼 public class Candy1 {public Candy1(){super();} }自動拆裝箱(jd…

WSL2 中安裝 cuDNN?? 的完整指南

以下是關于 ??cuDNN?? 的詳細介紹及在 ??WSL2 中安裝 cuDNN?? 的完整指南,結合權威資料整理而成: 📚 ??一、cuDNN 深度解析?? ??1. 定義與作用?? ??cuDNN??(CUDA Deep Neural Network Library)是…

Apache Doris FE 問題排查與故障分析全景指南

前言: FE(Frontend)是 Apache Doris 集群架構中的“大腦”,負責元數據管理、查詢解析和調度等關鍵任務。一旦 FE 出現問題,整個集群的穩定性和可用性將受到嚴重影響。因此,掌握 FE 故障定位與排查方法對于保…

RK AndroidFramework 內置應用可,卸載,恢復出廠設置恢復安裝

device/rockchip/rk356x/rk3568_r/preinstall_del/Android.mkdevice/rockchip/rk356x/rk3568_r/preinstall_del/Android.mk include $(call all-subdir-makefiles) 拿內置LoyversePos應用做例子 device/rockchip/rk356x/rk3568_r/preinstall_del/preinstall.mk PRODUCT_PACK…

一文了解Blob文件格式,前端必備技能之一

文章目錄 前言一、什么是Blob?二、Blob的基本特性三、Blob的構造函數四、常見使用場景1. 文件下載2. 圖片預覽3. 大文件分片上傳 四、Blob與其他API的關系1. File API2. FileReader3. URL.createObjectURL()4. Response 五、性能與內存管理六、實際案例:…

LLMs 系列實操科普(4)

六、deep research 這是 chatgpt 推出的功能,但我這里是免費用戶,一個月才有 5 次使用機會,而且使用的是輕量化模型版本,相對體驗上比較雞肋一些。 那這個深度思考研究是個什么東西呢? 根據 openai 對其的解釋是&…

若依框架前端調用后臺服務報跨域錯誤

背景:使用若依框架的前后端分離項目,前后端開發在同一個辦公室情況下前端調用后端服務提示如下報錯:Access to XMLHttpRequest at http://ip1:8089/online/layer/dataType from origin http://ip2:6090 has been blocked by CORS policy: Res…

PHP商城源碼:構建高效電商平臺的利器

一、PHP商城源碼的核心優勢 1. **開源免費,降低成本** PHP作為開源語言,擁有龐大的開發者社區,成熟的商城源碼(如EcShop、OpenCart)可免費獲取,大幅降低企業的技術投入成本。 2. **開發效率高** PHP語法…

【學習筆記】C++代碼規范整理

【學習筆記】C代碼規范整理 一、匿名空間namespace 匿名命名空間(Anonymous Namespace)是一種特殊的命名空間聲明方式,其作用是將聲明的成員限定在當前編譯單元(源文件)內可見,類似于使用 static 關鍵字修…

數學復習筆記 29 不定積分

前言 復習的時候時常復習一下以前復習的高數,溫故而知新,可以為師矣。現實生活中有非常多讓我難受的事情,賢者模式的時候也會對一些自己的行為嗤之以鼻,復習考研對其他三門科目都沒有學出來正反饋,只能從數學這兒找一…