中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
數(shù)據(jù)分析入門系列教程-常用圖表

 作者:周蘿卜

 來源:蘿卜大雜燴

今天我們來學(xué)習(xí)下數(shù)據(jù)可視化,其實在前面的章節(jié)中,我們也接觸到了一些數(shù)據(jù)可視化的知識,在分析數(shù)據(jù)集的時候,有效的可視化圖表,可以幫助我們更好的了解數(shù)據(jù)。

常用的可視化圖表

我們常用的圖表其實也有很多,比如說文本表格,條形圖,餅圖等等。下面我就來簡單介紹10種常見的圖表

散點圖

散點圖一般是兩個變量的二維圖表,很適合展示兩個變量之間的關(guān)系。當(dāng)然也有三維散點圖,不過使用的并不是很多

折線圖

折線圖可以很好的呈現(xiàn)數(shù)據(jù)隨著時間遷移的變化趨勢

直方圖

直方圖把橫坐標(biāo)等分成一定數(shù)量的區(qū)間,然后再每個區(qū)間內(nèi)用矩形條展示該區(qū)間內(nèi)的數(shù)值,可以很好的查看數(shù)據(jù)的分布情況

條形圖

條形圖可以查看數(shù)據(jù)中不同類別之間的分布請求

盒式圖

是由五個數(shù)值組成:最大值(max)、最小值(min)、中位數(shù)(median)和上下四分位數(shù)(Q3,Q1),可以幫助我們分析數(shù)據(jù)的差異性、離散程度和異常值等信息

餅圖

餅圖可以很好的呈現(xiàn)每類數(shù)據(jù)所占總數(shù)據(jù)的比例情況

熱力圖

熱力圖是把數(shù)據(jù)用矩陣表示的形式,不同數(shù)據(jù)顏色不同,可以通過顏色直觀的判斷某個位置上的數(shù)值情況

雷達(dá)圖

可以很好的顯示一對多的關(guān)系,比如王者榮耀中的對局信息,就是雷達(dá)圖

地理圖表

對于按照不同地理位置區(qū)分的數(shù)據(jù),使用地理圖表可以很直觀的呈現(xiàn)數(shù)據(jù)信息

詞云圖

詞云圖是非常好的可視化圖表,在分析評論等場景非常常見

視化圖表分類

其實,我們也可以根據(jù)數(shù)據(jù)之間的關(guān)系,把可視化圖表分成如下幾類

  1. 聯(lián)系

查看多個變量之間的關(guān)系,例如:散點圖,雷達(dá)圖

  1. 比較

比較數(shù)據(jù)間各類別的關(guān)系,例如:條形圖

  1. 趨勢

展示數(shù)據(jù)隨時間的變化趨勢,例如:折線圖

  1. 構(gòu)成

各部分占總體的百分比,例如:餅圖

  1. 分布

關(guān)注變量的分布情況,例如:直方圖

下面有兩張圖片,很好的概括了不同情況下,該如何選擇合適的圖表

圖片

在以后的工作中,如果遇到可視化工作,又不太確定如何更好的呈現(xiàn)數(shù)據(jù),可以來看看上面的圖片,也許能找到靈感。

十大圖表實例

下面我們就來逐一完成上面的十個圖表,看看 Python 帶給你的視覺體驗。

我們會分別使用 Matplotlib、Seaborn 和 Pyecharts 來完成作圖,需要提前下載好對應(yīng)的庫

pip install matplotlib
pip install seaborn
pip install pyecharts

我們會使用 seaborn 自帶的數(shù)據(jù)集為例子,所以需要導(dǎo)入數(shù)據(jù)集

import matplotlib.pyplot as plt
import seaborn as sns
tips = sns.load_dataset('tips')
print(tips.head())
>>>
   total_bill   tip     sex smoker  day    time  size
0       16.99  1.01  Female     No  Sun  Dinner     2
1       10.34  1.66    Male     No  Sun  Dinner     3
2       21.01  3.50    Male     No  Sun  Dinner     3
3       23.68  3.31    Male     No  Sun  Dinner     2
4       24.59  3.61  Female     No  Sun  Dinner     4

散點圖

matplotlib 實現(xiàn)散點圖

matplotlib.pyplot.scatter(x, y, c=None, marker=None)

幾個重要的參數(shù)
x,y:數(shù)值坐標(biāo)

c:點的顏色

marker:標(biāo)記的符號,可以選擇“x”,“>” 或 “o”

seaborn 實現(xiàn)散點圖

sns.scatterplot(x=None, y=None, hue=None, style=None, size=None, data=None)

x,y:傳入的數(shù)據(jù)間 data 的列的名字
hue:按照列名分組,不同組展示不同顏色

style:按照列名分組,不同分組使用不同的 marker

size:按照列名分組,不同分組符號大小不同

data:傳入的數(shù)據(jù)集

plt.scatter(tips['total_bill'], tips['tip'], c='#bcbd22', marker='x')
plt.show()
sns.scatterplot(x='total_bill', y='tip', hue='time', style='time', size='time', data=tips)
plt.show()

Matplotlib 繪制:

Seaborn 繪制:

兩種作圖整體分布式類似的,不過 Seaborn 作為 Matplotlib 的更高級 API 實現(xiàn),可以更加方便的處理數(shù)據(jù)的分組展示等功能。

pycharts 實現(xiàn)散點圖

pyecharts 是基于 echarts 的 Python 實現(xiàn),同樣擁有強(qiáng)大的功能,而且擁有完善的中文文檔,這里就不再過多講解 pyecharts 的用法了。

scatter = Scatter()
scatter.add_xaxis(tips['total_bill'])
scatter.add_yaxis('小費金額', tips['tip'])
scatter.set_global_opts(xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)),
                       yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)),
                        toolbox_opts=opts.ToolboxOpts(is_show=True)
                       )
scatter.render_notebook()  # 在 jupyter notebook 中展示
# scatter.render('scatter.html')  # 生成 HTML 文件,可以在瀏覽器中打開查看

折線圖

matplotlib 實現(xiàn)折線圖

matplotlib.pyplot.plot(x, y)

x,y:分別是橫縱坐標(biāo),x 需要是按照大小排序的數(shù)組
seaborn 實現(xiàn)折線圖

seaborn.lineplot(x=None, y=None, data=None)

關(guān)鍵的參數(shù)與散點圖十分類似,這里不再贅述

tips_copy = tips.copy()
tips_copy.sort_values(by='total_bill', inplace=True)
plt.plot(tips_copy['total_bill'], tips_copy['tip'])
plt.show()
sns.lineplot(x='total_bill', y='tip', data=tips, )
plt.show()

Matplotlib 繪制:

Seaborn 繪制:

可以看到,使用 seaborn 庫,x 軸上的元素會自動被排序

pyecharts 實現(xiàn)折線圖

from pyecharts.charts import Line
line = Line()
line.add_xaxis(tips_copy['total_bill'])
line.add_yaxis('', tips_copy['tip'])
line.render_notebook()

直方圖

matplotlib 實現(xiàn)直方圖

matplotlib.pyplot.hist(x, bins=None)

x:要輸入的一維數(shù)組
bins:是直方圖中區(qū)域的數(shù)量

seaborn 實現(xiàn)直方圖

seaborn.distplot(a, kde=True)

a:觀測數(shù)據(jù)
kde:是否畫估計曲線

import numpy as np
x = np.random.randn(100)
plt.hist(x, 10)
plt.show()
sns.distplot(x, 10)
plt.show()

Matplotlib 繪制:

Seaborn 繪制:

Pyecharts(echarts) 并沒有專門的直方圖方法。

條形圖

matplotlib 實現(xiàn)條形圖

matplotlib.pyplot.bar(x, height, width=0.8)

x:x 軸的坐標(biāo)值
height:y 軸的坐標(biāo)值

width:條形的寬度

seaborn 實現(xiàn)條形圖

seaborn.barplot(x=None, y=None, hue=None, data=None)

x,y,hue:分別是兩個坐標(biāo)軸的名稱和圖例名稱
data:傳入的數(shù)據(jù)

new_tips = tips.groupby('day').mean()
plt.bar(new_tips.index.values.tolist(), new_tips['total_bill'].values.tolist(), width=0.5)
plt.show()
sns.barplot(x='day', y='total_bill', hue='sex', data=tips)
plt.show()

Matplotlib 繪制:

Seaborn 繪制:

可以看到,Seaborn 可以進(jìn)行方便的分組繪制。

pyecharts 實現(xiàn)條形圖

from pyecharts.charts import Barbar = Bar()
bar.add_xaxis(new_tips.index.values.tolist())
bar.add_yaxis('', new_tips['total_bill'].values.tolist())
bar.render_notebook()

盒式圖

matplotlib 實現(xiàn)盒式圖(箱形圖)

matplotlib.pyplot.boxplot(x, notch=None, label=None)

x:需要傳入的數(shù)據(jù)
notch:為是否展示帶有缺口的箱形

label:可以設(shè)置標(biāo)簽

seaborn 實現(xiàn)盒式圖

seaborn.boxplot(x=None, y=None, hue=None, data=None)
plt.boxplot(tips['total_bill'], notch=True)
plt.show()
sns.boxplot(x=tips['day'], y='total_bill', data=tips)
plt.show()

Matplotlib 繪制:

Seaborn 繪制:

Pyecharts 對于盒式圖支持的并不友好,不推薦使用,這里只給出官網(wǎng)例子

from pyecharts.charts import Boxplot
v1 = [
        [850, 740, 900, 1070, 930, 850, 950, 980, 980, 880]
        + [1000, 980, 930, 650, 760, 810, 1000, 1000, 960, 960],
        [960, 940, 960, 940, 880, 800, 850, 880, 900]
        + [840, 830, 790, 810, 880, 880, 830, 800, 790, 760, 800],
    ]
box = Boxplot()
box.add_xaxis(['expr1'])
box.add_yaxis('', box.prepare_data(v1))
box.render_notebook()

餅圖

matplotlib 實現(xiàn)餅圖

matplotlib.pyplot.pie(x, explode=None, labels=None)

x:需要用到的數(shù)據(jù)
explode:扇形偏移量

labels:扇形的標(biāo)簽

seaborn 并未提供餅圖的高級 API

sizes = [17, 32, 44, 10]
labels = ['cat', 'dog', 'fox', 'tiger']
explode = (0, 0.1, 0, 0)
plt.pie(sizes, labels=labels, explode=explode)
plt.show()

pyecharts 實現(xiàn)餅圖

from pyecharts.charts import Pie
mylist = [list(z) for z in zip(labels, sizes)]
pie = Pie()
pie.add('', mylist)
pie.render_notebook()

熱力圖

對于熱力圖,一般使用 Seaborn 提供的更加高級的 API 來實現(xiàn)

seaborn.heatmap(data)

data:DataFrame 類型數(shù)據(jù)即可

flights = sns.load_dataset('flights')
flights_new = flights.pivot(index='month', columns='year', values='passengers')
sns.heatmap(flights_new)
plt.show()

pyecharts 實現(xiàn)熱力圖

x = flights_new.columns.values.tolist()
y = flights_new.index.values.tolist()
value = flights_new.values.tolist()L = []
i = j = 0
for inner_list in value:
    for v in inner_list:
        L.append([i, j, v])
        j += 1
    i += 1
    j = 0
from pyecharts.charts import HeatMap
from pyecharts import options as opts
heatmap = HeatMap()
heatmap.add_xaxis(x)
heatmap.add_yaxis('', y, L)
heatmap.set_global_opts(
    visualmap_opts=opts.VisualMapOpts(max_=650, min_=90)
)
heatmap.render_notebook()

雷達(dá)圖

Matplotlib 和 Seaborn 都沒有直接提供雷達(dá)圖的 API,我們需要手動實現(xiàn)一個

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties  
# 數(shù)據(jù)準(zhǔn)備
labels=np.array([u' 推進(jìn) ','KDA',u' 生存 ',u' 團(tuán)戰(zhàn) ',u' 發(fā)育 ',u' 輸出 '])
stats=[83, 61, 95, 67, 76, 88]
# 畫圖數(shù)據(jù)準(zhǔn)備,角度、狀態(tài)值
angles=np.linspace(0, 2*np.pi, len(labels), endpoint=False)
stats=np.concatenate((stats,[stats[0]]))
angles=np.concatenate((angles,[angles[0]]))
# 用 Matplotlib 畫蜘蛛圖
fig = plt.figure()
ax = fig.add_subplot(111, polar=True)   
ax.plot(angles, stats, 'o-', linewidth=2)
ax.fill(angles, stats, alpha=0.25)
# 設(shè)置中文字體
font = FontProperties(fname=r'C:\Windows\Fonts\simhei.ttf', size=14)  
ax.set_thetagrids(angles * 180/np.pi, labels, FontProperties=font)
plt.show()

plt.figure 相當(dāng)于是創(chuàng)建一個畫板,add_subplot 就是將畫板劃分,然后再通過 plot 和 fill 作畫

pyecharts 實現(xiàn)雷達(dá)圖

from pyecharts.charts import Radar
ability = [[83, 61, 95, 67, 76, 88]]
radar = Radar()
radar.add_schema(
schema=[
opts.RadarIndicatorItem(name='推進(jìn)', max_=100),
opts.RadarIndicatorItem(name='KDA', max_=100),
opts.RadarIndicatorItem(name='生存', max_=100),
opts.RadarIndicatorItem(name='團(tuán)戰(zhàn)', max_=100),
opts.RadarIndicatorItem(name='發(fā)育', max_=100),
opts.RadarIndicatorItem(name='輸出', max_=100),
]
)
radar.add('', ability)
radar.render_notebook()

地理圖表

對于需要展示地理分布的數(shù)據(jù),使用地圖分布圖表是非常方便的,echarts 提供了好好的支持,因此我們也可以使用 pyecharts 的高級 API 來制作地理圖表

from pyecharts.charts import Geo
provinces = ['廣東', '北京', '上海', '江西', '湖南', '浙江', '江蘇']
values = [120, 96, 72, 97, 54, 138, 97]
geo = Geo()
geo.add_schema(maptype='china')
geo.add('', [list(z) for z in zip(provinces, values)])
geo.render_notebook()

只需要傳入一個列表,列表里包含省份名稱和對應(yīng)省份的數(shù)值。這個數(shù)值就是具體的業(yè)務(wù)數(shù)據(jù),比如可以是該省份的產(chǎn)值,高校數(shù)量,人口總數(shù)等等。

詞云圖

from pyecharts.charts import WordCloud
words = [
    ('開心', 1000),
    ('傷心', 4002),
    ('吃飯', 5008),
    ('上課', 3000),
    ('工作', 5980),
    ('學(xué)習(xí)', 2357),
    ('算法', 5300),
    ('Python', 3478),
    ('入門', 2300),
    ('同學(xué)', 4000),
    ('出發(fā)', 5378),
    ('java', 6700),
    ('Linux', 1000),
    ('教學(xué)', 2198),
    ('公司', 4570),
    ('政府', 1000),
    ('同事', 4350),
    ('朋友', 3444),
    ('家人', 1000),
    ('親人', 4300),
    ('城市', 2000),
]
wordcloud = WordCloud()
wordcloud.add('', words)
wordcloud.render_notebook()

同樣是傳入列表,包含需要展示的詞語和該詞語對應(yīng)的頻度,該頻度也會決定詞語的大小。

相信大家通過上面10個圖表的學(xué)習(xí),已經(jīng)能夠基本掌握 Python 可視化的知識了。你也應(yīng)該發(fā)現(xiàn),在數(shù)據(jù)分析的過程中,大多數(shù)情況下使用 Seaborn 是比較方便的,它可以很好的結(jié)合 DataFrame 數(shù)據(jù)類型,而在最后的數(shù)據(jù)展示時,使用 Pyecharts(echarts)則是很好的選擇,它涵蓋了非常強(qiáng)大的 API,可以對生成的圖表再做后續(xù)的操作,當(dāng)然 Matplotlib 是最為基礎(chǔ),也是最為強(qiáng)大的工具,在實際的工作中,需要好好衡量,選擇最適合的工具來做可視化的工作。

總結(jié)

今天我們一起學(xué)習(xí)了常用的可視化圖表以及如何制作相關(guān)圖表。對于 Matplotlib、Seaborn 和 Pyecharts 工具包的使用一定要熟練的掌握,在數(shù)據(jù)分析的過程中會經(jīng)常使用。同時還要知道,Seaborn 是基于 Matplotlib 的更加高級的可視化庫,類似于 NumPy 和 Pandas 的關(guān)系。

同時我們還按照數(shù)據(jù)之間的關(guān)系,劃分了不同類型的圖表,希望能夠在未來幫助你更好的選擇圖表。當(dāng)然對于單分類和多分類數(shù)據(jù),也可以使用組合圖表來進(jìn)行可視化處理。這三個工具包的官方文檔都是非常好的學(xué)習(xí)工具,希望大家能夠在后面的學(xué)習(xí)中好好利用,多加探索。

練習(xí)題

其實 Seaborn 自帶了很多好玩的數(shù)據(jù)集,比如我們用到的 tips 和 flights 數(shù)據(jù)集,還有 car_crashes 數(shù)據(jù)集,是一個關(guān)于車禍的數(shù)據(jù)集,那么你能夠使用該數(shù)據(jù)集,做一些探索嗎,看看可以制作出哪些好玩的可視化圖表?

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
python爬蟲28 | 你爬下的數(shù)據(jù)不分析一波可就虧了啊,使用python進(jìn)行數(shù)據(jù)可視化
學(xué)習(xí)Python數(shù)據(jù)可視化,看這篇就夠了
Python數(shù)據(jù)可視化工具測評:5大工具誰是第一?
Seaborn常用的10種數(shù)據(jù)分析圖表
使用 Python 進(jìn)行數(shù)據(jù)可視化之Seaborn
python做可視化數(shù)據(jù)分析,究竟怎么樣?
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服