初識Plotly—Python圖形化MySQL中數(shù)據(jù)

Plotly 是一款在線的數(shù)據(jù)分析和數(shù)據(jù)可視化工具吝岭,可以在線繪制條形圖三痰、散點(diǎn)圖、餅圖窜管、直方圖等等散劫。同時(shí)它支持在線編輯,以及python幕帆、javascript获搏、matlab、R等許多API失乾,這里就以python為例常熙,簡單介紹一下Plotly。

Plotly的Python主頁

(一)準(zhǔn)備

進(jìn)入主頁碱茁,往下找裸卫,可以看到有好多圖標(biāo)類型:

Paste_Image.png

先來,隨便點(diǎn)開一個(gè)條形圖(Bar Charts)早芭,可以看到有示例代碼彼城,代碼比較詳細(xì),在這里就不說了退个,感興趣的可以自己運(yùn)行一下募壕,需要注意的是,要提前下載plotly的python庫语盈,老樣子:

pip install plotly
Paste_Image.png

本次使用的數(shù)據(jù)舱馅,就以之前爬取的拉勾網(wǎng)Python招聘信息,之前只爬取了前五頁刀荒,這次稍微將代碼修改一下代嗤,爬取全部三十頁的招聘信息,lg_spider.py修改如下:

# -*- coding:utf-8 -*-
import scrapy
from bs4 import BeautifulSoup


class lg_spider(scrapy.Spider):
    name = 'lg'  # 爬蟲名字

    def start_requests(self):
        urls = ['https://www.lagou.com/zhaopin/Python/',
                ]
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
        for x in range(1,31):
            yield scrapy.Request(url=urls[0] + str(x), headers=headers, callback=self.parse)

    def parse(self, response):
        # 使用Beautiful Soup進(jìn)行分析提取
        soup = BeautifulSoup(response.body, 'html.parser')
        for info in soup.find_all('li', 'con_list_item default_list'):
            # 將提取的salary字符串缠借,只截取最少工資并轉(zhuǎn)換成整數(shù)形式干毅,如:7k-12k  -> 7000,因?yàn)榇嬖贙大小寫不統(tǒng)一泼返,所以統(tǒng)一變?yōu)樾?            salary = info.attrs['data-salary'].lower()
            salary = salary.split('k')[0]
            salary = int(salary) * 1000
            href = info.find('a', 'position_link').attrs['href']
            href = 'http:' + href
            # 存儲爬取的信息
            yield {
                'title': info.attrs['data-positionname'],  # 職位
                'position': info.find('em').get_text().split('·')[0],  # 工作地點(diǎn)
                'salary': salary,  # 最低工資
                'time': (info.find('span', 'format-time')).string,  # 發(fā)布時(shí)間
                'grade': info.find('div', 'li_b_l').get_text().split('/')[-1].replace('\n', '').rstrip(),  # 學(xué)歷要求
                'company': info.attrs['data-company'],  # 公司名稱
                'href': href
            }

其中href屬性可加可不加硝逢,無所謂,加的話需要修改相關(guān)item,數(shù)據(jù)庫等信息渠鸽。

(二)進(jìn)入正題

plotly已經(jīng)有了叫乌,MySQL數(shù)據(jù)也有了,下面開始進(jìn)入正題徽缚,如何使用Plotly圖形化MySQL中的工具憨奸,為了便于Plotly的處理,先下載一個(gè)Python數(shù)據(jù)分析包Pandas

pip install pandas

招聘地區(qū)統(tǒng)計(jì)

招聘地區(qū)統(tǒng)計(jì).png

代碼實(shí)現(xiàn):

# -*- coding:utf-8 -*-
import pymysql
import pandas
import plotly as py
import plotly.graph_objs as go

# 注冊的Plotly賬戶和密碼
py.tools.set_credentials_file(username='YOUR_NAME', api_key='YOUR_PASSWORD')

#數(shù)據(jù)庫連接信息
db_config ={
    'host': '127.0.0.1',
    'port': 3306,
    'user': 'root',
    'password': '',
    'db': 'lg_info',
    'charset': 'utf8'
}
# 獲得數(shù)據(jù)庫連接
connection = pymysql.connect(**db_config)

# SQL語句凿试,計(jì)算各地區(qū)數(shù)目
with connection.cursor() as cursor:
    sql = 'select position,count(*) from info01 GROUP BY position'
    cursor.execute(sql)
    rows = cursor.fetchall()

# 使用Pandas中的DataFrame處理便于plotly的使用排宰,轉(zhuǎn)換成DataFarame的格式,類似二維表
df = pandas.DataFrame([[ij for ij in i] for i in rows])
df.rename(columns={0: 'position', 1: 'count'}, inplace=True)

# 數(shù)據(jù)繪圖红省,橫縱坐標(biāo)分別為地區(qū)和數(shù)量
trace1 = go.Bar(
    x=df['position'],
    y=df['count']
)

data = [trace1]
# 離線形式存儲形成的圖表
py.offline.plot(data, filename='g:/test.html')

同樣的原理额各,可以做如下統(tǒng)計(jì)圖表,其中的關(guān)鍵點(diǎn)就是SQL語句的書寫吧恃,再就是各種圖表API的使用,這個(gè)可以參照官網(wǎng)給出的例子麻诀,十分詳細(xì)痕寓。

學(xué)歷要求餅狀圖.png
工資情況.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蝇闭,隨后出現(xiàn)的幾起案子呻率,更是在濱河造成了極大的恐慌,老刑警劉巖呻引,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件礼仗,死亡現(xiàn)場離奇詭異,居然都是意外死亡逻悠,警方通過查閱死者的電腦和手機(jī)元践,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來童谒,“玉大人单旁,你說我怎么就攤上這事〖⒁粒” “怎么了象浑?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長琅豆。 經(jīng)常有香客問我愉豺,道長,這世上最難降的妖魔是什么茫因? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任蚪拦,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘外盯。我一直安慰自己摘盆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布饱苟。 她就那樣靜靜地躺著孩擂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪箱熬。 梳的紋絲不亂的頭發(fā)上类垦,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天,我揣著相機(jī)與錄音城须,去河邊找鬼蚤认。 笑死,一個(gè)胖子當(dāng)著我的面吹牛糕伐,可吹牛的內(nèi)容都是我干的砰琢。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼良瞧,長吁一口氣:“原來是場噩夢啊……” “哼陪汽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起褥蚯,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤挚冤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后赞庶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體训挡,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年歧强,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了澜薄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,654評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡誊锭,死狀恐怖表悬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情丧靡,我是刑警寧澤蟆沫,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站温治,受9級特大地震影響饭庞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜熬荆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一舟山、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦累盗、人聲如沸寒矿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽符相。三九已至,卻和暖如春蠢琳,著一層夾襖步出監(jiān)牢的瞬間啊终,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工傲须, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蓝牲,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓泰讽,卻偏偏與公主長得像例衍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子菇绵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內(nèi)容