Python資料視覺化---pygal模組
目錄
- pygal模組
- 安裝pygal模組
- pygal模組介紹
- 柱狀圖
- 單列柱狀圖
- 堆疊柱狀圖
- 橫向柱狀圖
- 折線圖
- 簡單折線圖
- 縱向折線圖
- 堆疊折線圖
- 餅狀圖
- 簡單餅狀圖
- 多級餅狀圖
- 圓環圖
- 半圓圖
- 雷達圖
- 基礎雷達圖
- 柱狀圖
- 其他圖表介紹
- 爬取中國福彩網彩票資料並以圖表形式顯示
- 網頁分析
- 資料提取
- 轉換資料
- 將資料轉換成圖表
- 完整程式碼
- 實現結果
pygal模組
安裝pygal模組
pygal模組的安裝非常簡單,只需輸入一行pip命令即可
pip install pygal
安裝完成:
pygal模組介紹
pygal官網地址
pygal是Python的第三方庫,他的主要功能就是資料視覺化,即將數字轉化成圖表的形式來呈現,它提供的圖表樣式有柱狀圖、折線圖、餅狀圖、雷達圖......
柱狀圖
pygal柱狀圖官方文件
單列柱狀圖
import pygal
view = pygal.Bar()
#圖表名
view.title = '柱狀圖'
#新增資料
view.add('numbers', [0,2,4,6,8,10])
#在瀏覽器中檢視
#view.render_in_browser()
#儲存為view.svg(也可以儲存為jpg)
view.render_to_file('view.svg')
效果圖:
注意:svg圖片用系統自帶瀏覽器開啟可能會顯示全黑色,可以嘗試使用Google瀏覽器開啟
多列柱狀圖
#新增資料 view.add('numbers', [0,2,4,6,8,10]) view.add('numbers_2', [0,1,3,5,7,9])
堆疊柱狀圖
view = pygal.StackedBar()
橫向柱狀圖
view = pygal.HorizontalStackedBar()
折線圖
pygal折線圖官方文件
簡單折線圖
import pygal view = pygal.Line() #圖表名 view.title = '折線圖' #新增資料 view.add('numbers', [0,2,4,6,8,10]) view.add('numbers_2', [0,1,3,5,7,9]) #在瀏覽器中檢視 #view.render_in_browser() #儲存為view.svg(也可以儲存為jpg) view.render_to_file('view.svg')
效果圖:
縱向折線圖
view = pygal.HorizontalLine()
堆疊折線圖
view = pygal.StackedLine(fill=True)
餅狀圖
pygal餅狀圖官方文件
簡單餅狀圖
import pygal
view = pygal.Pie()
#圖表名
view.title = '餅狀圖'
#新增資料
view.add('A', 31)
view.add('B', 55)
view.add('C', 14)
#儲存為view.svg(也可以儲存為jpg)
view.render_to_file('view.svg')
效果圖:
多級餅狀圖
#新增資料
view.add('A', [31,25])
view.add('B', [55,38])
view.add('C', [14,37])
圓環圖
#設定空心圓半徑
view = pygal.Pie(inner_radius=0.4)
半圓圖
view = pygal.Pie(half_pie=True)
雷達圖
pygal官方文件
基礎雷達圖
import pygal
view = pygal.Radar()
#圖表名
view.title = '雷達圖'
#新增資料(可以為任意個)
view.add('A', [31,56,34,67,34])
view.add('B', [23,18,57,45,35])
view.add('C', [14,45,76,34,76])
#儲存為view.svg(也可以儲存為jpg)
view.render_to_file('view.svg')
效果圖:
其他圖表介紹
直方圖
盒子圖
圓點圖
座標圖
錐形圖
環狀圖
儀表圖
塔形圖
樹圖
地圖
爬取中國福彩網彩票資料並以圖表形式顯示
網頁分析
首先開啟中國福彩網,點選雙色球,選擇往期開獎欄目
進入欄目後,選定往期的獎金數目作為我們想要爬取的目標內容
明確目標後,開始尋找資料所在的位置
滑鼠右擊頁面,開啟網頁原始碼,在原始碼中搜索是否存在獎金金額數目
搜尋過後,發現這個金額資料沒有在網頁的原始碼中,所以想到用抓包的方式來嘗試獲取這些金額資料
右擊檢查,選擇network選項卡,按下ctrl+r鍵重新整理介面,開始捕捉資料包
在過濾掉一些png、jpg的資料包之後,我們鎖定了一個以findDrawNotice開頭的資料包,開啟觀察資料包的內容,發現這個正是我們想要抓取的資料包
現在已經找到了想要抓包的內容,現在可以開始著手寫程式碼了
資料提取
我們分析過網頁之後,選定了要抓取的資料包,開始使用requests請求來獲取資料
url = 'http://www.cwl.gov.cn/cwl_admin/kjxx/findDrawNotice?name=ssq&issueCount=30'
headers = {
"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36",
"Referer":"http://www.cwl.gov.cn/kjxx/ssq/"
}
response = requests.get(url,headers=headers).text
這個網頁可能會有一個小的反爬措施,於是我們就在headers中加入user-agent和referer兩個頭資訊
我們使用print語句來列印一下response的內容
print之後會發現這個內容是以字串的格式打印出來的,如果我們想從中提取資料,則必須將它轉換成字典的格式
data_json = json.loads(response) #將資料轉換為json格式
將資料轉換之後,我們就可以使用鍵值對的方式來提取我們想要的資料了
datas = data_json["result"]
for data in datas:
prizegrades = data["prizegrades"] #包含中獎金額的字典提取
for item in prizegrades:
print(item)
typemoney = item['typemoney'] #中獎金額提取
print(typemoney)
這裡我們嘗試著逐層提取彩票的獎金資訊,提取到最近的一層時,將資料打印出來分析資料
可以看到前三個和我們想要提取的資料內容是一致的,這些type後面的數字指的是獎金的等級,就是說對應到的號碼是多少就是幾等獎
到此為止,我們已經將需要獲取的中獎金額提取出來了
轉換資料
等我們看到這些資料的時候,雖然看到的是數字形式,但是他的資料型別確是字元形,通過此前對pygal模組的瞭解,我們知道這個模組只可以將整形的數字轉換成圖表格式。
所以我們需要做的就是將每一個數字提取出來,並且轉換成整形存入到列表中
由於我們想要提取的只是一等獎的獎金金額(因為二、三等獎的金額遠小於一等獎,不適合在圖表中觀察),所以這裡我加上了一個if語句判斷
money_list = [] #建立空列表
for data in datas:
prizegrades = data["prizegrades"]
for item in prizegrades:
type_num = item['type']
typemoney = item['typemoney']
if type_num == 1: #判斷獎金等級是否為1
money_list.append(int(typemoney))
但是我在執行這段程式碼的時候會提示錯誤,經過我的一番瘋狂分析(百度求助),發現出錯的原因是在提取獎金的時候會出現下劃線和空字串的干擾,而int轉換資料型別則只能裝換純數字組成的字串,所以轉換的過程中會報錯。但是這並不是一個大問題,我們只需要寫一個if語句來跳過非法字串就可以解決了,下面是正確的程式碼:
money_list = [] #建立空列表
for data in datas:
prizegrades = data["prizegrades"]
for item in prizegrades:
typemoney = item['typemoney']
if type_num == 1: #判斷獎金等級是否為1
if typemoney == "": #忽略空字元
pass
elif typemoney == "_": #忽略下劃線
pass
else: #將其他的可用數字放入列表
money_list.append(int(typemoney))
print(money_list)
觀察輸出:
將資料轉換成圖表
#設定圖表樣式為柱狀圖
view = pygal.Bar()
#圖表名
view.title = '獎金金額(¥)'
#將資料填入圖表
view.add('money',money_list)
#在瀏覽器中顯示圖表
view.render_in_browser()
完整程式碼
import json
import pygal
url = 'http://www.cwl.gov.cn/cwl_admin/kjxx/findDrawNotice?name=ssq&issueCount=30'
headers = {
"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36",
"Referer":"http://www.cwl.gov.cn/kjxx/ssq/"
}
response = requests.get(url,headers=headers).text
data_json = json.loads(response)
datas = data_json["result"]
money_list = [] #建立空列表
for data in datas:
prizegrades = data["prizegrades"]
for item in prizegrades:
type_num = item['type']
typemoney = item['typemoney']
if type_num == 1: #判斷獎金等級是否為1
if typemoney == "": #忽略空字元
pass
elif typemoney == "_": #忽略下劃線
pass
else: #將其他的可用數字放入列表
money_list.append(int(typemoney))
#設定圖表樣式為柱狀圖
view = pygal.Bar()
#圖表名
view.title = '獎金金額(¥)'
#將資料填入圖表
view.add('money',money_list)
#在瀏覽器中顯示圖表
view.render_in_browser()
實現結果
相關推薦
Python資料視覺化---pygal模組
目錄pygal模組安裝pygal模組pygal模組介紹柱狀圖單列柱狀圖堆疊柱狀圖橫向柱狀圖折線圖簡單折線圖縱向折線圖堆疊折線圖餅狀圖簡單餅狀圖多級餅狀圖圓環圖半圓圖雷達圖基礎雷達圖其他圖表介紹爬取中國福彩網彩票資料並以圖表形式顯示網頁分析資料提取轉換資料將資料轉換成圖表完整程式碼實現結果 pygal模組 安裝
python 爬蟲與資料視覺化--matplotlib模組應用
一、資料分析的目的(利用大資料量資料分析,幫助人們做出戰略決策) 二、什麼是matplotlib? matplotlib: 最流行的Python底層繪相簿,主要做資料視覺化圖表,名字取材於MATLAB,模仿MATLAB構建,能將資料進行視覺化、更直觀的呈現、使資料更加客觀、更具說服
Python資料視覺化之密度圖的繪製
密度圖表現與資料值對應的邊界或域物件的一種理論圖形表示方法。一般用於呈現連續變數。 *摘自百度百科* 在電腦科學當中,資料的視覺化常常被提起。近日,在影象處理當中,需要統計圖片中的人流密度並繪製相應密度圖,於是小小研究一番。效果如下: 所有程式碼儲存在Github上。 首
python --資料視覺化
python --資料視覺化 一、python -- pyecharts庫的使用 pyecharts--> 生成Echarts圖示的類庫 1、安裝: pip install pyecharts pip install pyecharts_snapshot &nbs
python --資料視覺化(二)
一、NumPy 1、簡介: 官網連結:http://www.numpy.org/ NumPy是Python語言的一個擴充程式庫。支援高階大量的維度陣列與矩陣運算,此外也針對陣列運算提供大量的數學函式庫 2、基本功能: 快速高效的多維陣列物件ndarray 用於對陣列執行元素級計算以及直
Python資料視覺化的四種簡易方法
摘要: 本文講述了熱圖、二維密度圖、蜘蛛圖、樹形圖這四種Python資料視覺化方法。 資料視覺化是任何資料科學或機器學習專案的一個重要組成部分。人們常常會從探索資料分析(EDA)開始,來深入瞭解資料,並且建立視覺化確實有助於讓問題更清晰和更容易理解,尤其是對於那些較大的高維度資料集。在專
Python資料視覺化:2018年電影分析
本文轉載自:http://gkhelp.cn/1217.html 雙11已經過去,雙12即將來臨,離2018年的結束也就2個月不到,還記得年初立下的flag嗎? 完成了多少?相信很多人和我一樣,抱頭痛哭... 本次利用貓眼電影,實現對2018年的電影大資料進行分析。 網頁分
python資料視覺化入門2
使用scatter()方法繪製散點圖 import matplotlib.pyplot as plt # 繪製一系列點 x_value = [1, 2, 3, 4, 5] y_value = [1, 4, 9, 16, 25] plt.scatter(x_value. y_value,
python資料視覺化入門
一、繪製一個簡單的折線圖 import matplotlib.pyplot as plt # 提供一些輸入值 也可以隨意輸入一些數字 intput_values = [1, 2, 3, 4, 5] squares = [1, 4, 9, 16, 25] #輸入值的平方值 plt.plo
吳裕雄 資料探勘與分析案例實戰(5)——python資料視覺化
# 餅圖的繪製# 匯入第三方模組import matplotlibimport matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['Simhei']plt.rcParams['axes.unicode_minus']=Falseziti =
4種更快更簡單實現Python資料視覺化的方法
選自towardsdatascience,作者:George Seif,機器之心編譯,參與:Geek AI、劉曉坤。 熱力圖、二維密度圖、蜘蛛網圖和樹狀圖,這些視覺化方法你都用過嗎? 資料視覺化是資料科學或機器學習專案中十分重要的一環。通常,你需要在專案初期進行探索性的資料分析(EDA),從而對資
python資料視覺化利器--pyecharts
學視覺化就跟學彈吉他一樣,剛開始你會覺得自己彈出來的是噪音,也就有了在使用python視覺化的時候,總說,我擦,為啥別人畫的圖那麼溜: 【python視覺化系列】python資料視覺化利器--pyecharts echarts官網 一、前言 echarts是什麼?下面是來自官方的介紹
python資料視覺化
使用scatter()繪製一系列點 import matplotlib.pyplot as plt x_values = [1, 2, 3, 4, 5] y_values = [1, 4, 9, 16, 25] plt.scatter(x_values, y_values
python資料視覺化學習-直方圖
import numpy as np import matplotlib.pyplot as plt mu = 1000 sigma = 10 x = mu + sigma*np.random.rand
吳裕雄 python 資料視覺化
import pandas as pd df = pd.read_csv("F:\\python3_pachongAndDatareduce\\data\\pandas data\\taobao_data.csv")print(df.head())data = df.drop(["寶貝","賣家"],axi
【資料科學】Python資料視覺化概述
注:很早之前就打算專門寫一篇與Python資料視覺化相關的部落格,對一些基本概念和常用技巧做一個小結。今天終於有時間來完成這個計劃了! 0. Python中常用的視覺化工具 Python在資料科學中的地位,不僅僅是因為numpy, scipy, pandas, scikit-learn這些高效易用
Python資料視覺化—seaborn
Seaborn其實是在matplotlib的基礎上進行了更高階的API封裝,從而使得作圖更加容易,在大多數情況下使用seaborn就能做出很具有吸引力的圖。這裡例項採用的資料集都是seaborn提供的幾個經典資料集,dataset檔案可見於Github。 1 set_st
4種更快更簡單實現Python資料視覺化的方法!
熱力圖、二維密度圖、蜘蛛網圖和樹狀圖,這些視覺化方法你都用過嗎? 資料視覺化是 資料科學 或 機器學習 專案中十分重要的一環。通常,你需要在專案初期進行探索性的 資料分析 (EDA),從而對資料有一定的瞭解,而且建立視覺化確實可以使分析的任務更清晰、更容易理解,特別是對於大規模的高維資料集。在專
Python資料視覺化之matplotlib實踐chapter-01
""" Example 1.3.1: 函式plot() """ import matplotlib.pyplot as plt import numpy as np x = np.linspace(0.05,10,1000) # x = 0.05到10的等間距1000個點 y = np
Python資料視覺化之matplotlib實踐chapter-02
""" Example 2.1: 函式bar() """ import matplotlib as mpl import matplotlib.pyplot as plt # 解決matplotlib無法顯示中文問題 mpl.rcParams['font.sans-serif']=['Sim