數據直觀分析與可視化
一、數據的直觀分析核心價值
數據的直觀分析旨在通過視覺化的方式,幫助人們更直觀、更快速地理解數據的特征和模式,從而發現趨勢、異常值、分布情況以及變量之間的關系,為決策提供支持。
數據可視化與信息圖形、信息可視化、科學可視化及統計圖形密切相關。
可視化的終極目標是洞悉蘊含在數據中的現象和規律,這里面有多重含義:發現、決策、解釋、分析、探索和學習。
二、特殊統計圖繪制技巧
2.1 函數圖繪制
# 橢圓圖
plt.plot(x,y,c='r')
plt.axvline(x=0)
plt.axhline(y=0)
plt.text(0.2,1,r'$\frac{x^2}{a^2}+\frac{y^2}{b^2}=1$',fontsize=25)
2.2 氣泡圖與三維可視化
# 二維氣泡圖,s=8y
x=np.linspace(-4,4,20)
print(x)
y=x**2
plt.scatter(x,y,s=100*y)
# 三維散點圖
# 創建數據
x = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, x) # 從坐標向量x,y中返回坐標矩陣
Z = np.sin(np.sqrt(X**2 + Y**2)) # Z=sin(sqrt(X^2+Y^2))# 創建圖形
fig = plt.figure(figsize=(10, 8))
ax = fig.add_axes(Axes3D(fig, elev=30, azim=20)) # 使用add_axes方法創建3D坐標軸
ax.scatter(X, Y, Z, c=Z, cmap='viridis', s=30, alpha=0.6) # 添加顏色映射和透明度# 設置標簽
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')# 顯示圖形
plt.show()
三、Seaborn高效統計繪圖
3.1 箱線圖與小提琴圖對比
繪圖所用數據如下:
# 讀取繪圖用數據
import pandas as pd
BSdata=pd.read_excel('DaPy_data.xlsx','BSdata')
BSdata.head()
# 箱線圖(boxplot)
sns.boxplot(x=BSdata['身高'])
# 小提琴圖(violinplot)
sns.violinplot(x='開設', y='支出', hue='性別', data=BSdata)
3.2 分布圖矩陣
# 概率分布圖
BSdata['身高'].hist()
四、ggplot繪圖系統實踐
4.1 基礎使用
包的安裝:
!pip show ggplot
!pip show plotnine
包的加載與設置:
from plotnine import * #加載和調用ggplot所有方法
theme_set(theme_bw(base_family='SimHei'))
#設置圖形主題背景為白色bw、中文字體為黑體SimHei
4.2 ggplot中圖層
GP=ggplot(BSdata,aes(x='身高',y='體重')) #繪制直角坐標系
GP
GP + geom_point() #增加點圖
GP + geom_line() #增加線圖
GP + geom_point() + geom_line() #增加點和線圖
4.3 統計圖繪制
#在plotnine中可使用facet_wrap參數可以按類型繪制分面圖。
ggplot(BSdata,aes('身高','體重')) + geom_point() + facet_wrap('性別',nrow=2)
# 折線圖
ggplot(BSdata,aes(x='支出',y='身高',color='性別',shape='性別')) + geom_line() + geom_point()
五、pyecharts動態繪圖精解
pyecharts是基于Echarts圖表的一個類庫,而Echarts是百度開源的商業級數據圖表,它是一個純JavaScript的圖表庫,可以為用戶提供直觀生動、可交互、可高度個性化定制的數據可視化圖表,賦予了用戶對數據進行挖掘整合的能力。
https://echarts.apache.org/zh/index.html
pyecharts主要基于web瀏覽器進行顯示,繪制的圖形比較多,包括折線圖、柱狀圖、餅圖、漏斗圖、地圖、極坐標圖等,代碼量很少,而且很靈活,繪制出來的圖形很美觀。
使用pyecharts時,需要安裝相應的庫,安裝命令為:
pip install pyecharts
A Python Echarts Plotting Library——https://pyecharts.org/#/
5.1 pyecharts安裝全攻略
環境準備
# 創建虛擬環境(推薦)
python -m venv vis_env
source vis_env/bin/activate # Linux/Mac
vis_env\Scripts\activate # Windows# 核心安裝
pip install pyecharts -U# 擴展組件
pip install echarts-countries-pypkg # 437個國家地圖
pip install echarts-china-provinces-pypkg # 34個省級行政區
pip install echarts-china-cities-pypkg # 367個市級城市
版本驗證
import pyecharts
print(pyecharts.__version__) # 輸出應為1.x.x或2.x.x
5.2 基礎圖表快速上手
動態柱狀圖
from pyecharts.charts import Barbar = Bar()
bar.add_xaxis(["蘋果", "華為", "小米", "OPPO"])
bar.add_yaxis("手機銷量", [25, 30, 18, 22])
bar.set_global_opts(title_opts={"text": "2023 Q2手機銷量統計"})
bar.render('phone_sales.html')
3D散點圖
from pyecharts.charts import Scatter3D
import randomdata = [[random.randint(0,100) for _ in range(3)] for _ in range(100)]
scatter = Scatter3D().add("", data)
scatter.render("3d_scatter.html")
5.3 高級配置技巧
地圖可視化
from pyecharts.charts import Mapdata = [("廣東", 125), ("江蘇", 98), ("山東", 87)]
map_chart = Map().add("GDP分布", data, "china")
map_chart.set_global_opts(visualmap_opts=opts.VisualMapOpts(max_=150))
map_chart.render('china_gdp.html')
六、常見問題解決方案
6.1 地圖顯示異常處理
現象:地圖空白或只顯示輪廓
# 正確加載省級地圖
from pyecharts.datasets import register_url
register_url("https://echarts-maps.github.io/echarts-china-provinces-js/")# 強制刷新緩存
import pyecharts.globals as g
g._WarningControl.ShowWarning = False
6.2 Jupyter內聯顯示配置
from pyecharts.globals import CurrentConfig
CurrentConfig.NOTEBOOK_SHOW = True# 顯示圖表
bar.load_javascript()
bar.render_notebook()
七、可視化最佳實踐建議
-
數據預處理:清洗缺失值,規范數據格式
-
顏色選擇:使用ColorBrewer科學配色方案
-
交互設計:合理控制動畫效果復雜度
-
移動適配:響應式布局配置
bar.set_global_opts(datazoom_opts=[opts.DataZoomOpts(type_="inside")],toolbox_opts=opts.ToolboxOpts(is_show=True))
八、學習資源推薦
- ECharts官方示例庫
- pyecharts-gallery項目
- 《Python數據可視化之美》專業書籍
- DataViz項目實戰案例集