python --數據可視化(一)

python --數據可視化


 

1、python -- pyecharts庫的使用

pyecharts--> 生成Echarts圖標的類庫html

一、安裝:

pip install pyecharts
pip install pyecharts_snapshot

 

二、入門test

首先,測試繪製個圖表python

from pyecharts import Bar

bar = Bar("個人第一個圖表", "這裏是副標題")
bar.add("服裝", ["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"], [5, 20, 36, 10, 75, 90])
bar.show_config()
bar.render("temperature.html")
  • add()
    主要方法,用於添加圖表的數據和設置各類配置項
  • show_config()
    打印輸出圖表的全部配置項
  • render()
    默認將會在根目錄下生成一個 render.html 的文件,支持 path 參數,設置文件保存位置,如 render(r"e:\my_first_chart.html"),文件用瀏覽器打開。
    默認的編碼類型爲 UTF-8,在 Python3 中是沒什麼問題的,Python3 對中文的支持好不少。可是在 Python2 中,編碼的處理是個很頭疼的問題,暫時沒能找到完美的解決方法,目前只能經過文本編輯器本身進行二次編碼,我用的是 Visual Studio Code,先經過 Gbk 編碼從新打開,而後再用 UTF-8 從新保存,這樣用瀏覽器打開的話就不會出現中文亂碼問題了。

基本上全部的圖表類型都是這樣繪製的:瀏覽器

  1. chart_name = Type() 初始化具體類型圖表。
  2. add() 添加數據及配置項。
  3. render() 生成 .html 文件。

 


 

三、圖表類型

3.一、Bar(柱狀圖/條形圖)

from pyecharts import Bar

attr = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
v1 = [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]
v2 = [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]
bar = Bar("Bar chart", "precipitation and evaporation one year")  # 主標題、副標題
bar.add("precipitation", attr, v1, mark_line=["average"], mark_point=["max", "min"])
bar.add("evaporation", attr, v2, mark_line=["average"], mark_point=["max", "min"])
bar.render("name.html")  # 渲染成HTML文件

attr:列表 ,名稱 ,橫向座標方向echarts

v1 / v2:列表, 數據,縱座標方向編輯器

mark_point / mark_line:標記點、標記線。用於標記最大最小值,標記平均值的線,標記的形狀、顏色 、大小,自定義標記的點等。標記線能夠是任何兩點連線測試

 文中 mark_line=["average"]:標記平均值 , mark_point=["max", "min"]:標記最大值、最小值動畫

render:渲染成文件編碼

若是在A、B商家中的bar_add參數中添加is_stack:表示疊加效果,即商家A、商家B數據疊在一塊兒展現spa

橫向柱形圖:is_convert=True,標識交換X軸和Y軸3d

 

效果:

 


 

x軸和y軸交換:

  


3.二、EffectScatter(帶有漣漪特效動畫的散點圖)

 

from pyecharts import EffectScatter

v1 = [10, 20, 30, 40, 50, 60]  # 橫座標
v2 = [25, 20, 15, 10, 60, 33]  #縱座標
es = EffectScatter("動態散點圖示例")
es.add("effectScatter", v1, v2)
es.render()  # 默認在當前路徑渲染成render.html文件

 

 

動態散點圖多圖形

from pyecharts import EffectScatter

es = EffectScatter("動態散點圖各類圖形示例")
es.add("", [10], [10], symbol_size=20, effect_scale=3.5, effect_period=3, symbol="pin")
es.add("", [20], [20], symbol_size=12, effect_scale=4.5, effect_period=4,symbol="rect")
es.add("", [30], [30], symbol_size=30, effect_scale=5.5, effect_period=5,symbol="roundRect")
es.add("", [40], [40], symbol_size=10, effect_scale=6.5, effect_brushtype='fill',symbol="diamond")
es.add("", [50], [50], symbol_size=16, effect_scale=5.5, effect_period=3,symbol="arrow")
es.add("", [60], [60], symbol_size=6, effect_scale=2.5, effect_period=3,symbol="triangle")
es.render()


 

3.三、Line折線圖 

from pyecharts import Line

attr = ["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"]
v1 = [5, 20, 36, 10, 10, 100]
v2 = [55, 60, 16, 20, 15, 80]
line = Line("折線圖示例")
line.add("商家A", attr, v1, mark_point=["average"])
line.add("商家B", attr, v2, is_smooth=True, mark_line=["max", "average"])
line.show_config()
line.render()

 

 


 

3.四、Pie(餅圖) 

from pyecharts import Pie

attr = ["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"]
v1 = [11, 12, 13, 10, 10, 10]
pie = Pie("餅圖示例")
pie.add("", attr, v1, is_label_show=True)
pie.show_config()
pie.render()

 

 


 

3.五、WordCloud(詞雲圖)

from pyecharts import WordCloud

name = ['Sam S Club', 'Macys', 'Amy Schumer', 'Jurassic World', 'Charter Communications',
        'Chick Fil A', 'Planet Fitness', 'Pitch Perfect', 'Express', 'Home', 'Johnny Depp',
        'Lena Dunham', 'Lewis Hamilton', 'KXAN', 'Mary Ellen Mark', 'Farrah Abraham',
        'Rita Ora', 'Serena Williams', 'NCAA baseball tournament', 'Point Break']
value = [10000, 6181, 4386, 4055, 2467, 2244, 1898, 1484, 1112, 965, 847, 582, 555,
         550, 462, 366, 360, 282, 273, 265]
wordcloud = WordCloud(width=1300, height=620)
wordcloud.add("", name, value, word_size_range=[20, 100])
wordcloud.show_config()
wordcloud.render()

 


from pyecharts import WordCloud

name = ['Sam S Club', 'Macys', 'Amy Schumer', 'Jurassic World', 'Charter Communications',
        'Chick Fil A', 'Planet Fitness', 'Pitch Perfect', 'Express', 'Home', 'Johnny Depp',
        'Lena Dunham', 'Lewis Hamilton', 'KXAN', 'Mary Ellen Mark', 'Farrah Abraham',
        'Rita Ora', 'Serena Williams', 'NCAA baseball tournament', 'Point Break']
value = [10000, 6181, 4386, 4055, 2467, 2244, 1898, 1484, 1112, 965, 847, 582, 555,
         550, 462, 366, 360, 282, 273, 265]

wordcloud = WordCloud(width=1300, height=620)
wordcloud.add("", name, value, word_size_range=[30, 100], shape='diamond')
wordcloud.show_config()
wordcloud.render()

 


 ** 數據分析

 數據表:luqu.csv  ,共100條數據

一、查詢分數相同的數量:

import pandas as pd
import matplotlib.pyplot as plt

f = pd.read_csv("luqu.csv",encoding='gbk')  #導入數據
# print(f.head())
f['分數'].value_counts().plot(kind="barh",rot='0')  # value_counts:數量,kind:統計數據類型,bar:柱狀圖,h表示橫向展現 , rot:label的角度
plt.show()

將plot的參數改動下:

f['分數'].value_counts().plot(kind="bar",rot='30') 

 

 發現x軸label角度變了,柱狀圖也變成縱向的了

相關文章
相關標籤/搜索