欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python數(shù)據(jù)可視化之在Excel中插入圖表

 更新時間:2025年04月30日 08:52:57   作者:布拉德·甘·拉敎  
在數(shù)據(jù)分析與展示的領(lǐng)域中,Python 憑借其強大的庫支持,成為眾多開發(fā)者與數(shù)據(jù)工作者的得力助手,今天就帶大家深入探索如何利用 Python 在 Excel 中插入圖表,實現(xiàn)數(shù)據(jù)可視化的進階操作吧

Python 操作 Excel 插入圖表:解鎖數(shù)據(jù)可視化的高效密碼

在數(shù)據(jù)分析與展示的領(lǐng)域中,Python 憑借其強大的庫支持,成為眾多開發(fā)者與數(shù)據(jù)工作者的得力助手。將圖表嵌入 Excel 文件,不僅能豐富數(shù)據(jù)呈現(xiàn)形式,還能讓信息傳遞更加直觀高效。今天,就帶大家深入探索如何利用 Python 在 Excel 中插入圖表,實現(xiàn)數(shù)據(jù)可視化的進階操作。

在實現(xiàn) Python 在 Excel 中插入圖表之前,需要確保安裝了以下關(guān)鍵庫:

pandas :用于數(shù)據(jù)處理和分析,方便將數(shù)據(jù)組織成合適的數(shù)據(jù)結(jié)構(gòu)。

matplotlib :是 Python 經(jīng)典的繪圖庫,負責(zé)生成各類圖表,此示例中用于創(chuàng)建柱狀圖。

openpyxl :專注于操作 Excel 2010 及以上版本的.xlsx 文件,支持在 Excel 工作表中添加、修改和讀取數(shù)據(jù),以及插入圖表等操作。

Pillow :作為 Python Imaging Library(PIL)的一個友好分支,主要用于處理圖像相關(guān)的操作,在這里用于加載和調(diào)整圖表圖片。

以下是將柱狀圖插入 Excel 的完整代碼示例:

from openpyxl import load_workbook
from openpyxl.drawing.image import Image
import matplotlib.pyplot as plt
import pandas as pd

def insert_sheet_to_chart_bar(filename, df):
    # 提取數(shù)據(jù)  [{'A會員數(shù)量': 1783, 'B會員數(shù)量': 648}]
    categories = list(df.columns)
    values = list(df.values.flatten().tolist())
    # 生成柱狀圖
    plt.figure(figsize=(8, 4))
    bars = plt.bar(categories, values, color=['#1f77b4', '#ff7f0e'])

    # 設(shè)置中文顯示
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.title("會員數(shù)量對比")
    plt.ylabel("數(shù)量")

    # 添加數(shù)值標簽
    for bar in bars:
        height = bar.get_height()
        plt.text(bar.get_x() + bar.get_width() / 2., height,
                 f'{int(height)}',
                 ha='center', va='bottom')

    # 保存圖表圖片
    chart_path = 'membership_chart.png'
    plt.savefig(chart_path, dpi=300, bbox_inches='tight')
    plt.close()

    # 創(chuàng)建Excel并插入圖表
    wb = Workbook()
    ws = wb.active

    # 插入圖表圖片
    img = Image(chart_path)
    img.width = 1000  # 調(diào)整寬度
    img.height = 550  # 調(diào)整高度
    ws.add_image(img, 'D2')  # 插入到 D2 單元格位置
    wb.save(filename)

代碼說明 :

  • 該函數(shù) insert_sheet_to_chart_bar 接收兩個參數(shù),filename 表示需要插入圖表的 Excel 文件路徑,df 是包含數(shù)據(jù)的 pandas DataFrame 對象。
  • 通過提取 DataFrame 的列名作為柱狀圖的類別(categories),將數(shù)據(jù)值展平并轉(zhuǎn)換為列表作為柱狀圖的高度(values)。
  • 使用 matplotlib 創(chuàng)建柱狀圖,設(shè)置圖表標題、坐標軸標簽,并添加數(shù)值標簽以增強圖表的可讀性。然后將生成的圖表保存為圖片文件。
  • 利用 openpyxl 加載目標 Excel 文件,獲取指定的工作表,通過 Image 類加載圖表圖片,并設(shè)置合適的寬度和高度,最終將圖片插入到指定的單元格位置,并保存修改后的 Excel 文件。

在實際應(yīng)用中,若要插入其他類型的圖表,如折線圖、餅圖等,可對 matplotlib 的繪圖方法和參數(shù)進行相應(yīng)調(diào)整。此外,還需注意以下幾點:

確保 Excel 文件路徑正確,且文件在讀取和保存過程中沒有被其他程序占用。

根據(jù)實際數(shù)據(jù)規(guī)模和需求,合理調(diào)整圖表尺寸和圖片分辨率,以確保圖表在 Excel 中的顯示效果清晰、美觀。若圖片尺寸過大或過小,可能會影響整體布局和可讀性。

當數(shù)據(jù)中包含中文字符時,設(shè)置字體為 SimHei(黑體)可以有效避免中文顯示亂碼的問題,但不同系統(tǒng)環(huán)境下字體的安裝和配置可能存在差異,需確保系統(tǒng)中已安裝相應(yīng)的字體。

掌握 Python 在 Excel 中插入圖表的技能,能夠為數(shù)據(jù)分析報告的制作、業(yè)務(wù)數(shù)據(jù)的可視化展示等工作帶來極大的便利和效率提升,助力大家在數(shù)據(jù)處理與展示領(lǐng)域更加游刃有余。

進階:精準插入圖表到指定 Excel 工作表

在處理數(shù)據(jù)的過程中,我們常常需要將生成的圖表精準地插入到已存在數(shù)據(jù)的 Excel 文件的指定工作表中。借助 Python 的強大庫組合,這一操作得以高效實現(xiàn)。以下是經(jīng)過優(yōu)化和注釋補充的代碼,助你輕松完成這一任務(wù)。

from openpyxl import load_workbook
from openpyxl.drawing.image import Image
import matplotlib.pyplot as plt
import pandas as pd

def insert_sheet_to_chart_bar(filename, df, sheet_name):
    """
    將柱狀圖插入到指定的 Excel 工作表中
    
    參數(shù):
    filename -- Excel 文件路徑
    df -- 包含圖表數(shù)據(jù)的 pandas DataFrame 對象
    sheet_name -- 目標工作表名稱
    """
    
    # 提取數(shù)據(jù):從 DataFrame 中獲取列名和數(shù)據(jù)值
    categories = list(df.columns)  # 獲取列名作為柱狀圖分類標簽
    values = list(df.values.flatten().tolist())  # 將數(shù)據(jù)展平并轉(zhuǎn)換為列表形式
    
    # 生成柱狀圖
    plt.figure(figsize=(8, 4))
    bars = plt.bar(categories, values, color=['#1f77b4', '#ff7f0e'])
    
    # 設(shè)置中文顯示:指定字體以確保中文標題和標簽顯示正確
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.title("會員數(shù)量對比")  # 設(shè)置圖表標題
    plt.ylabel("數(shù)量")  # 設(shè)置縱軸標簽
    
    # 添加數(shù)值標簽:在每個柱子上方顯示具體數(shù)值
    for bar in bars:
        height = bar.get_height()
        plt.text(bar.get_x() + bar.get_width() / 2., height,
                 f'{int(height)}',
                 ha='center', va='bottom')
    
    # 保存圖表圖片:將生成的圖表保存為 PNG 格式
    chart_path = 'membership_chart.png'
    plt.savefig(chart_path, dpi=300, bbox_inches='tight')
    plt.close()
    
    # 讀取 Excel 文件:加載已存在的 Excel 文件以便進行修改
    wb = load_workbook(filename)
    
    # 獲取指定工作表:確保圖表插入到正確的工作表中
    if sheet_name in wb.sheetnames:
        ws = wb[sheet_name]
    else:
        ws = wb.create_sheet(sheet_name)  # 如果工作表不存在,則創(chuàng)建
    
    # 插入圖表圖片:加載圖表圖片并調(diào)整大小,然后插入到指定位置
    img = Image(chart_path)
    img.width = 1000  # 設(shè)置圖片寬度
    img.height = 550  # 設(shè)置圖片高度
    ws.add_image(img, 'D2')  # 將圖片插入到 D2 單元格位置
    
    # 保存修改后的 Excel 文件:確保所有更改被保存
    wb.save(filename)

代碼應(yīng)用實例

假設(shè)有一個名為 data.xlsx 的 Excel 文件,其中包含一個名為 Sheet1 的工作表,該工作表中有兩列數(shù)據(jù)(例如:A 列是月份,B 列是銷售額)。我們可以通過以下代碼將柱狀圖插入到 Sheet1 中:

# 導(dǎo)入 pandas 庫
import pandas as pd

# 創(chuàng)建示例 DataFrame
data = {'月份': ['1月', '2月', '3月'], '銷售額': [2500, 3200, 2800]}
df = pd.DataFrame(data)

# 直接讀取指定sheet下的數(shù)據(jù)

# 指定要讀取的工作表名稱
sheet_name = 'Sheet1'
df = pd.read_excel('data.xlsx', sheet_name=sheet_name)
print(df)

# 調(diào)用函數(shù)
insert_sheet_to_chart_bar('data.xlsx', df, 'Sheet1')

關(guān)鍵點總結(jié)

精確指定工作表 :通過傳遞 sheet_name 參數(shù),可以確保圖表插入到正確的 Excel 工作表中。如果工作表不存在,代碼會自動創(chuàng)建該工作表。

圖表生成與保存 :使用 matplotlib 庫生成柱狀圖,并保存為圖片文件。在生成圖表時,可以根據(jù)實際需求設(shè)置圖表的標題、坐標軸標簽、顏色、數(shù)值標簽等屬性。

圖片插入與調(diào)整 :利用 openpyxl 庫加載保存的圖片,調(diào)整圖片的寬度和高度,使其在 Excel 中顯示時具有合適的大小,并將其插入到指定的單元格位置。

靈活性與可擴展性 :此代碼結(jié)構(gòu)清晰,易于根據(jù)具體需求進行修改和擴展。例如,可以輕松調(diào)整圖表類型、樣式,或者更改圖片的插入位置和大小等。

到此這篇關(guān)于Python數(shù)據(jù)可視化之在Excel中插入圖表的文章就介紹到這了,更多相關(guān)Python Excel插入圖表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python for 循環(huán)語句的使用

    Python for 循環(huán)語句的使用

    這篇文章主要介紹了Python for 循環(huán)語句,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-06-06
  • 關(guān)于Python中 循環(huán)器 itertools的介紹

    關(guān)于Python中 循環(huán)器 itertools的介紹

    循環(huán)器是對象的容器,包含有多個對象。通過調(diào)用循環(huán)器的next()方法 (__next__()方法,在Python 3.x中),循環(huán)器將依次返回一個對象。直到所有的對象遍歷窮盡,循環(huán)器將舉出StopIteration錯誤。這篇文章將對此做一個詳細介紹,感興趣的小伙伴請參考下面文字內(nèi)容
    2021-09-09
  • python中使用pymssql庫操作MSSQL數(shù)據(jù)庫

    python中使用pymssql庫操作MSSQL數(shù)據(jù)庫

    這篇文章主要給大家介紹了關(guān)于python中使用pymssql庫操作MSSQL數(shù)據(jù)庫的相關(guān)資料,最近在學(xué)習(xí)python,發(fā)現(xiàn)好像沒有對pymssql的詳細說明,于是乎把官方文檔學(xué)習(xí)一遍,重要部分做個歸檔,方便以后查閱,需要的朋友可以參考下
    2023-08-08
  • python not關(guān)鍵字實例用法

    python not關(guān)鍵字實例用法

    在本篇文章里小編給大家整理的是一篇關(guān)于python not關(guān)鍵字實例用法,有興趣的朋友們可以學(xué)習(xí)下。
    2021-04-04
  • Python語言技巧之三元運算符使用介紹

    Python語言技巧之三元運算符使用介紹

    現(xiàn)在大部分高級語言都支持“?”這個三元運算符(ternary operator),它對應(yīng)的表達式如下:condition ? value if true : value if false。很奇怪的是,這么常用的運算符python居然不支持
    2013-03-03
  • python的xpath獲取div標簽內(nèi)html內(nèi)容,實現(xiàn)innerhtml功能的方法

    python的xpath獲取div標簽內(nèi)html內(nèi)容,實現(xiàn)innerhtml功能的方法

    今天小編就為大家分享一篇python的xpath獲取div標簽內(nèi)html內(nèi)容,實現(xiàn)innerhtml功能的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python嵌套列表轉(zhuǎn)一維的方法(壓平嵌套列表)

    Python嵌套列表轉(zhuǎn)一維的方法(壓平嵌套列表)

    今天小編就為大家分享一篇Python嵌套列表轉(zhuǎn)一維的方法(壓平嵌套列表),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Python實現(xiàn)將Excel內(nèi)容插入到Word模版中

    Python實現(xiàn)將Excel內(nèi)容插入到Word模版中

    前段時間因為需要處理一大堆驗收單,都是一些簡單的復(fù)制粘貼替換工作,于是就想到用python進行處理。本文分享了用python將excel文件單元格內(nèi)容插入到word模版中并保存為新文件的辦法,希望對大家有所幫助
    2023-03-03
  • 對DataFrame數(shù)據(jù)中的重復(fù)行,利用groupby累加合并的方法詳解

    對DataFrame數(shù)據(jù)中的重復(fù)行,利用groupby累加合并的方法詳解

    今天小編就為大家分享一篇對DataFrame數(shù)據(jù)中的重復(fù)行,利用groupby累加合并的方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 異步任務(wù)隊列Celery在Django中的使用方法

    異步任務(wù)隊列Celery在Django中的使用方法

    對于網(wǎng)站來說,給用戶一個較好的體驗是很重要的事情,其中最重要的指標就是網(wǎng)站的瀏覽速度。因此服務(wù)端要從各個方面對網(wǎng)站性能進行優(yōu)化,這篇文章主要介紹了異步任務(wù)隊列Celery在Django中的使用方法,感興趣的小伙伴們可以參考一下
    2018-06-06

最新評論