數據可視化|用散點圖進行數據分析

2021-01-17 CDA數據分析師

文章來源:林驥微信公眾號

作者:林驥

01

你好,我是林驥。

散點圖的用途有很多,我認為它的核心價值,在於應用相關思維,發現變量之間的關係。

散點圖就像一扇窗,打開它,並仔細觀察,能讓我們看見更多有價值的信息。

比如說,假設表格中有 10000 個客戶年齡和消費金額的數據:

我們可以計算每一個年齡對應的人均消費金額,比如說,所有 20 歲客戶的平均消費金額約為 1383.69 元,然後我們可以畫出一張散點圖:

從圖中可以看出,客戶的年齡與人均消費金額有很強的相關性,其中應用了線性回歸算法,得到一條擬合的直線,並用公式表示出來, 接近於 1 ,代表算法擬合的效果很好。

02

接下來,我們看看具體實現的步驟。

接下來,我們看看具體實現的步驟。

首先,導入所需的庫,並設置中文字體和定義顏色等。

# 導入所需的庫

import numpy as np

import pandas as pd

import matplotlib as mpl

import matplotlib.pyplot as plt

from sklearn.linear_model import LinearRegression

from sklearn.preprocessing import PolynomialFeatures

from sklearn.pipeline import Pipeline

# 正常顯示中文標籤

mpl.rcParams['font.sans-serif'] = ['SimHei']

# 自動適應布局

mpl.rcParams.update({'figure.autolayout': True})

# 正常顯示負號

mpl.rcParams['axes.unicode_minus'] = False

# 禁用科學計數法

pd.set_option('display.float_format', lambda x: '%.2f' % x)

# 定義顏色,主色:藍色,輔助色:灰色,互補色:橙色

c = {'藍色':'#00589F', '深藍色':'#003867', '淺藍色':'#5D9BCF',

'灰色':'#999999', '深灰色':'#666666', '淺灰色':'#CCCCCC',

'橙色':'#F68F00', '深橙色':'#A05D00', '淺橙色':'#FBC171'}

其次,從 Excel 文件中讀取數據,並調用 sklearn 中的算法,得到擬合的直線和評分結果。

# 數據源路徑

filepath='./data/客戶年齡和消費金額.xlsx'

# 讀取 Excel文件

df = pd.read_excel(filepath, index_col='客戶編號')

# 定義畫圖用的數據:年齡和人均消費金額

df_group = df.groupby('年齡').mean()

x = np.array(df_group.index).reshape(-1, 1)

y = np.array(df_group.values)

# 用管道的方式調用算法,以便把線性回歸擴展為多項式回歸

poly_reg = Pipeline([

('ploy', PolynomialFeatures(degree=1)),

('lin_reg', LinearRegression())

])

# 擬合

poly_reg.fit(x, y)

# 斜率

coef = poly_reg.steps[1][1].coef_

# 截距

intercept = poly_reg.steps[1][1].intercept_

# 評分

score = poly_reg.score(x, y)

接下來,開始用「面向對象」的方法進行畫圖。

# 使用「面向對象」的方法畫圖,定義圖片的大小

fig, ax = plt.subplots(figsize=(8, 6))

# 設置標題

ax.set_title('\n客戶每年長一歲,人均消費金額增加' + '%.2f' % coef[0][1] + '元\n', loc='left', size=26, color=c['深灰色'])

# 畫氣泡圖

ax.scatter(x, y, color=c['藍色'], marker='.', s=100, zorder=1)

# # 繪製預測線

y2 = poly_reg.predict(x)

ax.plot(x, y2, '-', c=c['橙色'], zorder=2)

# 隱藏邊框

ax.spines['top'].set_visible(False)

ax.spines['right'].set_visible(False)

ax.spines['bottom'].set_visible(False)

ax.spines['left'].set_visible(False)

# 隱藏刻度線

ax.tick_params(axis='x', which='major', length=0)

ax.tick_params(axis='y', which='major', length=0)

ax.set_ylim(15, 65)

ax.set_ylim(1000, 5000)

# 設置坐標標籤字體大小和顏色

ax.tick_params(labelsize=16, colors=c['深灰色'])

ax.text(ax.get_xlim()[0]-6, ax.get_ylim()[1], '人\n均\n消\n費\n金\n額', va='top', fontsize=16, color=c['深灰色'])

# 設置坐標軸的標題

ax.text(ax.get_xlim()[0]+1, ax.get_ylim()[0]-300, '年齡', ha='left', va='top', fontsize=16, color=c['深灰色'])

# 預測 55 歲的人均消費金額

predict = poly_reg.predict([[55]])

# 標註公式

formula = r'$\mathcal{Y} = ' + '%.2f' % coef[0][1] + '\mathcal{X}' + '%+.2f$' % intercept[0] + '\n' + r'$\mathcal{R}^2 = ' + '%.5f$' % score

ax.annotate(formula, xy=(55, predict), xytext=(55, predict+500), ha='center', fontsize=12, color=c['深灰色'], arrowprops=dict(arrowstyle='->', color=c['橙色']))

plt.show()

你可以前往 https://github.com/linjiwx/mp 下載數據文件和完整代碼。

03

當業務指標很多的時候,應該挑選什麼指標來進行分析,這件事很考驗分析者的功力,往往需要對業務有比較深刻的理解。

為什麼很多人精通各種工具技術,手上也有很多各種各樣的數據,卻沒有做出讓領導滿意的圖表?

好的圖表,就像是給近視的人戴了一副眼鏡,讓讀者以更清楚的方式去理解數據。

好的圖表,就像是神奇的催化劑,加快了從數據到決策的過程,讓決策者更加快速地掌握有助於做出決策的信息。

好的圖表,能把複雜的問題簡單化,幫我們更精準地理解業務的現狀,甚至預測未來。

我們應該記住,無論多麼漂亮的圖表,如果不能從中獲取有價值的信息,那麼也是一張沒有「靈魂」的圖表。

很多時候,我們面對的問題,並不是沒有數據,而是數據太多,卻不知道怎麼用。

熟悉數據分析的思維,能幫我們找到更重要的數據,排除過多雜亂數據的幹擾。

如果把數據分析比作醫生看病的過程,那麼可以分為以下 4 個階段:

(1)描述:檢查身體,描述指標值是否正常。

(2)診斷:詢問病情,找到疾病的產生原因。

(3)預測:分析病情,預測病情的發展趨勢。

(4)指導:開出藥方,提出有效的治療建議。

我們要儘可能地理解業務並提供價值,從數據的加工者,轉變成故事的講述者,甚至是問題的解決者。

相關焦點

  • 數據分析,用對圖表很重要
    如何將冰冷的數據通過直觀的可視化圖表向上級進行匯報? 在產品設計的時候涉及到數據可視化統計的界面,如何選擇核心指標以及合適的可視化圖表? ........以上只是數據分析應用的其中一部分場景,實際上還有很多。
  • 「疫情分析」的數據可視化大屏設計要點
    基於此分析規劃出數據大屏的信息架構如下圖所示:三、數據分析對需求分析結果中涉及的數據進行分析,可以為後面的設計和開發避開很多坑,需要思考以下八點:可以公開哪些數據?很多信息很敏感。數據來源有哪些?如果接第三方數據,接口是否穩定?能獲取的數據精度怎樣?精度與數據分析指標息息相關。預先評估數據量的級別多大?如何實時刷新大批量數據?
  • 數據可視化的10大優點
    根據估計,2020年全球年度數據生成率為40 Zettabytes。這幾乎是2017年三年後增長率的兩倍。這些來源於人、機器和網際網路本身的數據並不能為管理人員和其他決策者提供有價值的見解,必須整理、規範和進一步解釋數據,然後進行分析和採取行動,才能提供有意義的價值。這是數據可視化的步驟,允許組織領導者實時訪問和解釋數據,以便他們能夠快速做出明智的決策。
  • 數據可視化地圖怎麼做?推薦這個BI軟體
    現在做數據分析基本上離不開數據可視化,在大量的數據中,有很大一部分數據都與地理信息相關,因此,在數據可視化中,可視化地圖是非常重要的一部分。無論是新聞報導,還是商業分析報告,都能看到運用地圖來分析展示相關數據。數據可視化地圖可以最直觀的表達出數據之間的空間關係,因此在很多數據分析場景中被廣泛應用。
  • 數據分析如何從入門到精通?這篇萬字長文終於說清楚了
    如何挖掘數據價值,讓數據直觀呈現並為我所用,數據可視化可謂功不可沒。然而你所用的可視化展現方式是不是清晰地表達出了數據背後的價值,他們之間是否完全合拍?是數據分析人員需要考慮的。這裡為大家提供一些分類說明及思路。
  • 不會代碼,如何自助進行數據分析?
    不會代碼,能否自助進行數據分析?數據分析師一般需要有紮實的SQL基礎、有統計學基礎、能熟練使用Excel且至少掌握一門數據挖掘語言等素質。那麼,對於不懂代碼、沒有SQL語言基礎的業務人員,能否進行數據分析呢?
  • 數據分析的四種類型,你能看懂幾個
    分析方面,億信ABI裡面有很多種分析方式,比如常用的報表分析,它可以製作各種報表,支持布局,可以很輕鬆的完成各種中國式複雜報表、dashboard的製作,裡面內置了非常多種統計圖,比如常用的柱狀圖、折線圖等,還有一些熱門的統計圖,比如:雷達圖、風險圖、力導向布局圖等。同時,統計圖支持多種配色,屬性可以自定義,可以做出來很好看的展示效果。
  • 如何全面解析數據並創造數據故事 | 網際網路數據資訊網-199IT |...
    另一種可視化此類數據的方式是嘗試使用「多變量圖」。下面是關於汽車性能和規格的數據集。股票我們還會碰到與股票有關的數據集。股市數據主要是一個數值數據的時間序列,但作為一個交易員或投資者,我想謹慎地了解每個日期和下跌信息。在這方面,最具吸引力的可視化方式是「燭臺圖」。
  • 數據分析與挖掘 - 08圖形繪製
    接下來要學習的圖形叫做散點圖,也有叫做氣泡圖的。我們可以使用plt.scatter(x,y)這樣的方式來進行圖形的繪製。關於scatter的參數:x就表示x軸上的值y就表示y軸上的值s表示散點標記的大小,這個是可選項c表示散點標記的顏色,可選項cmap表示將浮點數映射成顏色的顏色映射表讓我們通過一段代碼的演示,來看看實踐一下這些參數。自己可以根據我的說明嘗試著修改一下這些參數。
  • 揚州搭建環境地理信息系統 實現數據可視化、決策科學化
    「在這11個模塊中,汙染源、水環境、氣環境、聲環境是建設的重點,我們完成了數據上圖的過程後,再把環境保護相關的汙染源數據、環境質量數據在地圖上以可視化的形式表達出來,這樣比枯燥的數據更有意義,也更容易讓人看懂,更重要的是可以將11個模塊的數據在地圖上進行集中立體的展現。」刁勁輝告訴記者。
  • 車來了城市公交大數據分析平臺在嘉興首例落地
    「車來了城市公交大數據分析平臺」正是基於海量的用戶使用數據,配合車輛 GPS 數據、公交 IC 卡刷卡數據、道路數據等多源數據進行挖掘分析,實現了實時監測、運力和暢通指標分析、營運分析等 10 大模塊、 72 個功能點、 90 項行業指標計算。
  • 14個數據分析項目,數據源全部公開!
    新冠病毒可視化學習如何使用Plotly構建動態可視化數據,展示冠狀病毒是如何在全球範圍內傳播的。Plotly很好用,它可以做動態可視化,好看且操作簡單。澳洲大火數據可視化2019-2020年的叢林大火季,也稱為黑色夏天,由2019年6月開始的幾場極端野火組成的。據維基百科統計,這場大火燒毀了約1,860萬公頃的土地和5,900多座建築物。這是一個有趣的項目,可以利用Plotly或Matplotlib數據可視化工具來可視化野火的規模和對地理的影響。
  • DataFocus 與數據對話 數據看板的樂趣
    圖11-1-1 對比儀錶板  下面6點是DataFocus的數據看板明顯具有的優勢:  1.多媒體  可以將圖像,靜態的或者動態的,添加到數據看板,作為看板的背景圖或者單個圖表的背景圖,為整個數據看板的可視化效果錦上添花。
  • 十年數據分析經驗,總結出這三類分析工具最好用
    我共選了三類工具:ExcelBI工具R、Python等編程類語言下面我一一來介紹:Excel如果說BI工具是戰鬥機,R語言、Python是轟炸機,那麼Excel就是數據分析裡的航空母艦,表格製作、數據透視表、VBA等等功能強大,Excel的體系龐大到沒有任何一個分析工具能夠超過它,保證人們能夠按照需求進行分析。
  • 數據分析圖表類型主要有哪些呢?
    DataFocus搜索式的分析體驗,即使沒有任何代碼基礎都可以快速創建可視化大屏,進行自主的探索式分析,簡潔、高效是最大的競爭力。傳統數據分析產品從上線實施到產生生產力,需要3個月以上,DataFocus可以將這個周期壓縮70%。
  • 中華白海豚信息實現可視化管理!大數據展示平臺正式啟用
    近日,中華白海豚大數據展示平臺正式啟用,中華白海豚救護管理、科研合作、科普宣教,邁上新臺階。據悉,為提升中華白海豚保護工作智能化、信息化水平,充分利用網際網路+新技術,整合保護區管理單位以及相關科研教學機構的數據成果,廣東珠江口中華白海豚國家級自然保護區管理局組織相關單位聯合攻關,經過一年多的努力,完成中華白海豚種群資源資料庫和大數據展示平臺建設。
  • 14個超有趣的數據分析項目,數據集都給你整理好啦
    新冠病毒可視化學習如何使用Plotly構建動態可視化數據,展示冠狀病毒是如何在全球範圍內傳播的。Plotly很好用,它可以做動態可視化,好看且操作簡單。澳洲大火數據可視化2019-2020年的叢林大火季,也稱為黑色夏天,由2019年6月開始的幾場極端野火組成的。據維基百科統計,這場大火燒毀了約1,860萬公頃的土地和5,900多座建築物。這是一個有趣的項目,可以利用Plotly或Matplotlib數據可視化工具來可視化野火的規模和對地理的影響。
  • 數據分析與應用——氣泡圖
    如何利用氣泡圖分析賣場產品的銷售狀況?以下是賣場銷售狀況統計表的原數據,我們下面利用氣泡圖分析以下3個數據之間的關係。首先我們根據已有的數據,全選其中的數據之後插入氣泡圖。選擇右側兩組數據右擊,選擇數據後刪除已經有的數據,再選擇添加現有的數據,系類名稱為為品牌名稱,X軸系列值為每次購買量,Y軸系列值為購買頻數,氣泡大小為同類產品銷量佔比。分別逐次添加殺菌奶,滅菌奶,酸牛奶,配方奶的數據。以下就是添加數據後的氣泡圖。之後為氣泡圖添加數據標籤,選擇數據標籤設置格式,選擇系列名稱再將數據標籤居中。
  • ...數據可視化實驗室」開源FaceX,包含500餘萬張卡通人臉表情簡筆畫
    雷鋒網 AI 科技評論消息,日前,同濟大學「智能大數據可視化實驗室」(iDVX Lab) 開源了一個包含 500 餘萬張卡通人臉表情的高質量簡筆畫數據集 – FaceX。該數據集由專業設計師繪製生成,不同於以往的圖像數據集(例如,ImageNet),此次公開的數據全部為 SVG 格式,完整記錄了設計師繪製過程中的一筆一畫,旨在幫助人工智慧領域的研究人員訓練高質量的繪圖機器人。FaceX 數據集的繪製過程嚴格遵循了相關的設計規範與準則,以保證所生成數據的質量。
  • 可視化分析是什麼?智能化做帳是如何具體實施?「西雀」這樣解釋
    圖自網絡  我們都知道面對數據過多的情況,逐一提取出重要信息然後進行相應的對應分析,找出問題並進行快速的解決。可是財稅公司要面對的數據信息又太多繁雜,這時候就需要依靠外部的系統來幫助完成。「西雀」智慧財稅管理系統在財稅行業沉浸多年,幫助財稅公司解決了許多實際的難題,針對數據處理和快速做帳這兩個方面的具體處理過程,都有著自身的經驗心得。在面對跟數據打交道的時候,可視化分析就是很好的處理方式,而這個也需要系統的加持,「西雀」系統就很好的開發了這個功能。