1. 程式人生 > 其它 >python對CSV檔案進行視覺化-餅圖

python對CSV檔案進行視覺化-餅圖


使用Matplotlib提供的pie()函式繪製餅圖

一、環境準備

  • python

  • pip install matplotlib

二、pie()函式常見引數

1. 基本繪製
import matplotlib.pyplot as plt
values = [10,20,30]
plt.pie(values)
plt.show()
2. 引數:explode

意義:分離餅狀圖,突出強調某一部分;
預設:None;
呼叫:explode=[0, 0, 0.2, 0]

3. 引數:labels

意義:給各個部分新增標籤;
預設:None;
呼叫:labels=[‘A’, ‘B’, ‘C’, ‘D’]

4. 引數:labeldistance

意義:標籤距離餅狀圖的距離;
預設:1.1;
呼叫:labeldistance = float(實數)

5. 引數:colors

意義:設定每一部分的顏色;
預設:自動填充;
呼叫:colors=[‘red’, ‘gray’, ‘yellow’, ‘blue’]
注意:顏色個數必須等於values中資料的個數

6. 引數:autopct

意義:顯示各部分比例,保留小數位數;
預設:None;
呼叫:autopct=’%1.2f%%’

7. 引數:shadow

意義:陰影,增加立體感;
預設:False;
呼叫:shadow=True

三、例項

以下是讀取CSV檔案中的資料,並繪製成餅圖的一個簡單例項,主要就是對pie()函式的使用.


# 載入資料分析常用庫
import csv
import matplotlib.pyplot as plt

filename = r'D:\learn\project\reptile\job.csv'
with open(filename) as f:
    # 建立閱讀器,呼叫csv.reader()將前面儲存的檔案物件作為實參傳給他
    reader = csv.reader(f)
    # 呼叫next()一次,將檔案的第一行儲存在header_now中
    header_now = next(reader)


    # 根據索引提取公司名稱及薪資範圍,並存儲在列表中
    money = []
    for row in reader:
        money.append(row[2])

    """
    從獲取的薪資範圍列表中分別提取出每個公司給出的最低薪資和最高薪資,
    並將提取到的字串轉化為float格式儲存
    """
    # 設定變數
    one = 0
    two = 0
    three = 0
    four = 0
    five = 0

    listlow, listhigh = [],[]
    for m in money:
        num = m.split('-')  # 通過‘-’分割
        low = num[0]  # 提取最低薪資
        high = num[1].split('萬/月')[0] # 提取最高薪資,並將字尾單位去除
        # 轉化資料格式為float
        lows = float(low)
    # 這一塊寫的有點繁瑣,後續需要優化下,提高程式碼複用性
        if lows in (0, 1):
            one += 1
        elif lows in (1, 1.5):
            two += 1
        elif lows in (1.5, 2):
            three += 1
        elif lows in (2, 2.5):
            four += 1
        elif lows >= 2.5:
            five += 1

        highs = float(high)
        if highs in (0, 1):
            one += 1
        elif highs in (1, 1.5):
            two += 1
        elif highs in (1.5, 2):
            three += 1
        elif highs in (2, 2.5):
            four += 1
        elif highs >= 2.5:
            five += 1


    """
    
    繪製餅圖
    
    """
    # 用來正常顯示中文標籤
    plt.rcParams['font.sans-serif'] = ['SimHei']
    # 圖示描述
    labels = ['0-1萬/月','1-1.5萬/月','1.5-2萬/月','2~2.5萬/月','2.5+ 萬/月']
    # 對應變數
    values = [one,two,three,four,five]
    # 旋轉角度,將排在第二位的薪資分離出來,突出顯示
    explode = [0,0.05,0,0,0]

    # 自定義圖例顏色
    colors = ['orange','pink','b','g','red']

    # 圖表題目
    plt.title("上海市軟體測試薪資分佈",fontsize = 16,pad=15)

     # 各項屬性
    plt.tick_params(axis='both', which='major', labelsize=26)
    """
    # autopct='%1.1f%% 設定百分比,保留兩位小數
    # pctdistance=0.8, #設定百分比標籤和圓心的距離
    # startangle=180 設定餅圖的初始角度
    """
    plt.pie(values, labels=labels, colors=colors,pctdistance=0.6,explode = explode ,startangle=180, shadow=True, autopct='%0.2f%%')
    # 將橫、縱座標軸標準化處理,保證餅圖是一個正圓,否則為橢圓
    plt.axis('equal')

    # 不顯示邊框
    plt.gca().spines['right'].set_color('none')
    plt.gca().spines['top'].set_color('none')
    plt.gca().spines['left'].set_color('none')
    plt.gca().spines['bottom'].set_color('none')
    # 儲存圖片
    # plt.savefig('D:\\learn\\salary.png')

    # 顯示圖片
    plt.show()


顯示效果圖: