如何從 Pandas DataFrame 建立直方圖?


直方圖是資料集分佈的圖形表示。它是視覺化資料集的形狀、擴充套件和集中趨勢的強大工具。直方圖常用於資料分析、統計和機器學習,以識別資料中的模式、異常和趨勢。

Pandas 是 Python 中一個流行的資料操作和分析庫。它提供各種功能和工具來處理結構化資料,包括讀取、寫入、過濾、清理和轉換資料。Pandas 還與其他資料視覺化庫(如 Matplotlib、Seaborn 和 Plotly)很好地整合。

要從 Pandas DataFrame 建立直方圖,我們首先需要提取要繪製的資料。我們可以透過使用其名稱或索引從 DataFrame 中選擇列來實現。獲得資料後,我們可以將其傳遞給視覺化庫中的直方圖函式以生成繪圖。

使用不同的視覺化庫,有幾種方法可以從 Pandas DataFrame 建立直方圖。例如,我們可以使用 Pandas 的“hist”方法、NumPy 的“histogram”函式或 Seaborn 的“distplot”函式。我們還可以透過更改顏色、bin、標題、軸標籤和其他屬性來自定義直方圖的外觀。

語法

我們將使用以下語法從 Pandas DataFrame 建立直方圖。

DataFrame.hist(column=None, by=None, grid=True, xlabelsize=None, xrot=None, ylabelsize=None, yrot=None, ax=None, sharex=False, sharey=False, figsize=None, layout=None, bins=10, backend=None, legend=False, **kwargs) 

解釋

以下是主要引數的解釋:

  • column  要繪製的列的名稱或索引。如果為 None,則繪製所有列。

  • by  對資料進行分組的列的名稱或索引。如果提供,則為每個組建立一個直方圖。

  • grid  是否在繪圖上顯示網格線。

  • xlabelsize, xrot, ylabelsize, yrot  x 軸和 y 軸標籤的大小和旋轉。

  • ax  要繪製的 Matplotlib 軸物件。如果為 None,則建立一個新的軸。

  • sharex, sharey  是否在子圖之間共享 x 軸或 y 軸。

  • figsize  圖的大小(以英寸為單位)(寬度,高度)。

  • layout  子圖佈局的(行,列)。如果提供,則忽略“by”引數。

  • bins  直方圖要使用的 bin 數。這可以是整數或 bin 邊緣的序列。

  • backend  要使用的繪圖後端,例如“matplotlib”或“plotly”。

  • legend −  是否在繪圖上顯示圖例。

現在讓我們探索一些示例,我們將在此示例中建立這些直方圖。

單列直方圖

Python 中的單列直方圖是僅包含一列資料的頻率分佈的圖形表示。請考慮以下程式碼。

import pandas as pd
import matplotlib.pyplot as plt

# Read the CSV file into a DataFrame
df = pd.read_csv('data.csv')

# Plot a histogram of a single column in the DataFrame
df.hist(column='column_name')

# Set the title and axis labels
plt.title('Histogram of Column Name')
plt.xlabel('Values')
plt.ylabel('Frequency')

# Display the histogram
plt.show()

解釋

  • 匯入必要的庫,包括 pandas 和 matplotlib.pyplot。

  • 使用 pd.read_csv() 函式將 CSV 檔案讀取到 Pandas DataFrame 中。

  • 使用 df.hist() 函式繪製 DataFrame 中單列的直方圖。

  • 使用 plt.title()、plt.xlabel() 和 plt.ylabel() 函式設定標題和軸標籤。

  • 使用 plt.show() 函式顯示直方圖。

要執行上述程式碼,您需要安裝 pandas 和 matplotlib 庫,為此,您可以使用以下命令:

pip3 install pandas matplotlib 

輸出

成功安裝 pandas 和 matplotlib 後,您可以執行程式碼,它將生成以下直方圖:

多列直方圖

Python 中的多列直方圖是包含多列資料的頻率分佈的圖形表示。請考慮以下程式碼。

import pandas as pd
import matplotlib.pyplot as plt

# Read the CSV file into a DataFrame
df = pd.read_csv('data.csv')

# Plot histograms of all columns in the DataFrame
df.hist()

# Set the title and axis labels for each histogram
for ax in plt.gcf().axes:
   ax.set_title(ax.get_title().replace('Histogram of ', ''))
   ax.set_xlabel('Values')
   ax.set_ylabel('Frequency')
   
# Display the histograms
plt.show()

解釋

此 Python 程式碼讀取 CSV 檔案並使用 Pandas 和 Matplotlib 繪製檔案中所有列的直方圖。然後,它在螢幕上顯示它們之前設定每個直方圖的標題和軸標籤。

輸出

執行後,它將生成以下輸出:

結論

總之,從 Pandas DataFrame 建立直方圖是視覺化資料分佈的一種簡單有效的方法。藉助 Pandas 和 Matplotlib 庫,您可以快速為 DataFrame 中的一列或多列資料建立直方圖,自定義直方圖的外觀,並新增軸標籤和標題以使其更具資訊性。

更新於:2023 年 4 月 20 日

10K+ 閱讀量

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.