日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据分析学习01-matplotlib绘图工具基本操作

發布時間:2024/9/15 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据分析学习01-matplotlib绘图工具基本操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是數據分析:
- 數據分析是用適當的方法對收集來的大量數據進行分析,幫助人們作出判斷,以便采取適當行動。
- 將數據進行可視化,更直觀的呈現
- 使數據更加客觀,更具說服力
matplotlib學習
1,什么是matplotlib
Matolotlib是最流行的python底層繪圖庫,主要是做數據可視化圖表。它可以讓數據更加直觀的呈現,讓數據更加客觀,具有說服力。學習爬蟲后,可能會遇到對大量的數據的處理,于是學習數據分析是必不可少的。
http://www.360doc.com/content/20/0808/01/71093473_929113091.shtml
2,matplotlib基本要點
3,matplotlib的散點圖,直方圖,柱狀圖

4,更多的畫圖工具

matplotlib 折線圖案例
案例一:使用折線圖繪制假設一天中每隔兩個小時的氣溫分別是[15,13,14.5,17,20,25,26,26,27,22,18,15]度。

from matplotlib import pyplot as plt # 導入pyplotfig = plt.figure(figsize=(20,8),dpi=80) # figure 圖形圖標的意思,在這里指我們畫的圖 # 傳入figsize給圖片設置長高 # 傳入dpi參數,給圖片增加像素x = range(2,26,2) # 時間 y = [15,13,14.5,17,20,25,26,26,27,22,18,15] # 溫度plt.plot(x,y) # 傳入x和y,通過plot繪制出折線圖 plt.xticks(x) # 設置x軸刻度 #plt.savefig("氣溫.png") # 保存圖片,傳入.svg這種矢量圖格式,放大不會有鋸齒plt.show() # 展示圖形

from matplotlib import pyplot as plt # 導入pyplotfig = plt.figure(figsize=(20,8),dpi=80) # figure 圖形圖標的意思,在這里指我們畫的圖 # 傳入figsize給圖片設置長高 # 傳入dpi參數,給圖片增加像素x = range(2,26,2) # 時間 y = [15,13,14.5,17,20,25,26,26,27,22,18,15] # 溫度 plt.plot(x,y) # 傳入x和y,通過plot繪制出折線圖 # 調整x軸刻度 scale = [i/2 for i in range(4,49)] #plt.xticks() plt.xticks(scale[::3])# 當刻度太密集的時候可使用列表的步長來進行調整,matplotlib會自動做對應 # 調整y軸刻度 plt.yticks(range(min(y),max(y)+1)) #plt.savefig("氣溫.png") # 保存圖片,傳入.svg這種矢量圖格式,放大不會有鋸齒plt.show() # 展示圖形


案例二:隨機生成一個氣溫度數,然后繪制10點到12點每一分鐘的氣溫。

from matplotlib import pyplot as plt # 導入pyplot import random #導入 random隨機數模塊fig = plt.figure(figsize=(20,8),dpi=80) #設置繪制圖片的大小以及像素 x = range(0,120) # 時間 y = [random.randint(20,35)for i in range(120)] # 生成隨機溫度 plt.plot(x,y)# 調整x軸刻度 x_time = ["10點{}分".format(i) for i in range(60)] x_time += ["11點{}分".format(i) for i in range(60)] # 取步長,數字和字符串一一對應,數據長度一樣 plt.xticks(list(x)[::3],x_time[::3],rotation=90) #rotation函數旋轉字符度數) plt.show()

from matplotlib import pyplot as plt # 導入pyplot import random #導入 random隨機數模塊 from matplotlib import font_managermy_font = font_manager.FontProperties(fname='C:/Windows/Fonts/msyhl.ttc')# 設置中文實例解決亂碼fig = plt.figure(figsize=(20,8),dpi=80) #設置繪制圖片的大小以及像素 x = range(0,120) # 時間 y = [random.randint(20,35)for i in range(120)] # 生成隨機溫度 plt.plot(x,y)# 調整x軸刻度 x_time = ["10點{}分".format(i) for i in range(60)] x_time += ["11點{}分".format(i) for i in range(60)] # 取步長,數字和字符串一一對應,數據長度一樣 plt.xticks(list(x)[::3],x_time[::3],rotation=270,fontproperties=my_font) #rotation函數旋轉字符度數 plt.show()

from matplotlib import pyplot as plt # 導入pyplot import random #導入 random隨機數模塊 from matplotlib import font_managermy_font = font_manager.FontProperties(fname='C:/Windows/Fonts/msyhl.ttc')# 設置中文實例解決亂碼fig = plt.figure(figsize=(20,8),dpi=80) #設置繪制圖片的大小以及像素 x = range(0,120) # 時間 y = [random.randint(20,35)for i in range(120)] # 生成隨機溫度 plt.plot(x,y)# 調整x軸刻度 x_time = ["10點{}分".format(i) for i in range(60)] x_time += ["11點{}分".format(i) for i in range(60)] # 取步長,數字和字符串一一對應,數據長度一樣 plt.xticks(list(x)[::3],x_time[::3],rotation=270,fontproperties=my_font) #rotation函數旋轉字符度數 # 添加描述信息 plt.xlabel("時間",fontproperties=my_font) plt.ylabel("溫度 單位(℃)",fontproperties=my_font) plt.title("10點到12點每分鐘的氣溫變化情況",fontproperties=my_font) plt.show()


案例三:假設小明是30歲,統計出小明從11歲到30歲每年交往的女朋友數量如列表a,請繪制出該數據的折線圖。
a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
要求:
y軸表示交往女朋友個數
x軸表示其歲數如11歲,12歲,13歲等

from matplotlib import pyplot as plt # 導入pyplot from matplotlib import font_managerx = range(11,31) y = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1] my_font = font_manager.FontProperties(fname='C:/Windows/Fonts/msyhl.ttc') fig = plt.figure(figsize=(20,8),dpi=80) plt.plot(x,y) plt.yticks(range(min(y),max(y)+1)) xiaoming = ["{}歲".format(i) for i in range(11,31)] plt.xticks(list(x),xiaoming,fontproperties=my_font) plt.xlabel("小明年齡",fontproperties=my_font) plt.ylabel("女朋友個數",fontproperties=my_font) plt.title("小明11歲到30歲女朋友個數詳情",fontproperties=my_font) plt.show()

from matplotlib import pyplot as plt # 導入pyplot from matplotlib import font_managerx = range(11,31) y = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1] my_font = font_manager.FontProperties(fname='C:/Windows/Fonts/msyhl.ttc') fig = plt.figure(figsize=(20,8),dpi=80) plt.plot(x,y) plt.yticks(range(0,9)) xiaoming = ["{}歲".format(i) for i in range(11,31)] plt.xticks(list(x),xiaoming,fontproperties=my_font) plt.xlabel("小明年齡",fontproperties=my_font) plt.ylabel("女朋友個數",fontproperties=my_font) plt.title("小明11歲到30歲女朋友個數詳情",fontproperties=my_font) # 繪制網格 plt.grid(alpha=0.4)#alpha 設置網格深度 plt.show()


案例四:假設小a和小b 都是30歲,請在同一個圖中繪制出a和b從11歲到30歲個交往的女朋友個數的折線圖。
a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
b = [1,0,3,1,2,2,3,3,2,1,2,1,1,1,1,1,1,1,1,1]

from matplotlib import pyplot as plt # 導入pyplot from matplotlib import font_managerx = range(11,31) a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1] b = [1,0,3,1,2,2,3,3,2,1,2,1,1,1,1,1,1,1,1,1]my_font = font_manager.FontProperties(fname='C:/Windows/Fonts/msyhl.ttc') fig = plt.figure(figsize=(20,8),dpi=80) plt.plot(x,a) plt.plot(x,b) plt.yticks(range(0,9)) xiaoming = ["{}歲".format(i) for i in range(11,31)] plt.xticks(list(x),xiaoming,fontproperties=my_font) plt.xlabel("年齡",fontproperties=my_font) plt.ylabel("女朋友個數",fontproperties=my_font) plt.title("a和b從11歲到30歲女朋友個數隊比詳情",fontproperties=my_font) # 繪制網格 plt.grid(alpha=0.4)#alpha 設置網格深度 plt.show()


圖例位置,線條顏色,線條風格

from matplotlib import pyplot as plt # 導入pyplot from matplotlib import font_managerx = range(11,31) a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1] b = [1,0,3,1,2,2,3,3,2,1,2,1,1,1,1,1,1,1,1,1]my_font = font_manager.FontProperties(fname='C:/Windows/Fonts/msyhl.ttc') fig = plt.figure(figsize=(20,8),dpi=80)plt.plot(x,a,label="小a",color="orange",linestyle="--" ) # color 參數表示折線的顏色,linestyle參數表示線條的風格 plt.plot(x,b,label="小b",color="#FFB6C1")plt.yticks(range(0,9)) xiaoming = ["{}歲".format(i) for i in range(11,31)] plt.xticks(list(x),xiaoming,fontproperties=my_font) plt.xlabel("年齡",fontproperties=my_font) plt.ylabel("女朋友個數",fontproperties=my_font) plt.title("a和b從11歲到30歲女朋友個數隊比詳情",fontproperties=my_font) # 繪制網格 plt.grid(alpha=0.4)#alpha 設置網格深度plt.legend(prop=my_font,loc="upper left")# 添加圖例,loc顯示圖列位置 plt.show()



matplotlib-散點圖學習

案例一:
假設通過爬蟲獲取到了北京2020年3,10月份每天白天的最高氣溫(分別位于列表a,b),那么此時如果尋找出氣溫和隨時間(天)變化得某種規律呢?
a = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23]
b = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11,13,12,16,6]

from matplotlib import pyplot as plt from matplotlib import font_managermy_font = font_manager.FontProperties(fname='C:/Windows/Fonts/msyhl.ttc')# 設置字體 y_3 = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23] y_10 = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11,13,12,16,6] fig = plt.figure(figsize=(20,8),dpi=80)# 設置繪圖大小 x_3 = range(1,32) x_10 = range(51,82) # 使用scatter方法繪制散點圖,和之前繪制折線圖的唯一區別 plt.scatter(x_3,y_3,label="3月份") plt.scatter(x_10,y_10,label="10月份")#調整x軸的刻度 _x = list(x_3)+list(x_10) _xtick_labels = ["3月{}日".format(i) for i in x_3] _xtick_labels += ["10月{}日".format(i-50) for i in x_10] plt.xticks(_x[::3],_xtick_labels[::3],fontproperties=my_font,rotation = 45)plt.legend(prop=my_font,loc="upper left")# 添加圖例,loc顯示圖列位置 #添加描述信息 plt.xlabel("時間",fontproperties=my_font) plt.ylabel("溫度",fontproperties=my_font) plt.title("北京2020年3,10月份每天白天的最高氣溫對比",fontproperties=my_font) plt.show()


繪制條形圖
案例一:假設獲取到2017年內地電影(列表a)和電影票房數據(列表b),那么如何更加直觀展示該數據?
a = [“戰狼2”,“速度與激情8”,“功夫瑜伽”,“西游伏妖篇”,“變形金剛5:最后的騎士”,“摔跤吧!爸爸”,“加勒比海盜5:死無對證”,“金剛:骷髏島”,“極限特工:終極回歸”,“生化危機6:終章”,“乘風破浪”,“神偷奶爸3”,“智取威虎山”,“大鬧天竺”,“金剛狼3:殊死一戰”,“蜘蛛俠:英雄歸來”,“悟空傳”,“銀河護衛隊2”,“情圣”,“新木乃伊”]
b = [56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23] 單位:億

from matplotlib import pyplot as plt from matplotlib import font_manager fig = plt.figure(figsize=(20,8),dpi=80)# 設置繪圖大小 my_font = font_manager.FontProperties(fname='C:/Windows/Fonts/msyhl.ttc')# 設置字體a = ["戰狼2","速度與激情8","功夫瑜伽","西游伏妖篇","變形金剛5\n:最后的騎士","摔跤吧!爸爸","加勒比海盜5\n:死無對證","金剛:骷髏島","極限特工\n:終極回歸","生化危機6\n:終章","乘風破浪","神偷奶爸3","智取威虎山","大鬧天竺","金剛狼3\n:殊死一戰","蜘蛛俠\n:英雄歸來","悟空傳","銀河護衛隊2","情圣","新木乃伊"] b = [56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23] #單位:億plt.bar(range(len(a)),b,width=0.3)#width設置線條寬度 plt.xticks(range(len(a)),a,fontproperties=my_font,rotation=45)plt.xlabel("電影名稱",fontproperties=my_font) plt.ylabel("票房",fontproperties=my_font) plt.title("2017年內地電影和電影票房數據",fontproperties=my_font) plt.show()plt.show()

from matplotlib import pyplot as plt from matplotlib import font_manager fig = plt.figure(figsize=(20,8),dpi=80)# 設置繪圖大小 my_font = font_manager.FontProperties(fname='C:/Windows/Fonts/msyhl.ttc')# 設置字體a = ["戰狼2","速度與激情8","功夫瑜伽","西游伏妖篇","變形金剛5\n:最后的騎士","摔跤吧!爸爸","加勒比海盜5\n:死無對證","金剛:骷髏島","極限特工\n:終極回歸","生化危機6\n:終章","乘風破浪","神偷奶爸3","智取威虎山","大鬧天竺","金剛狼3\n:殊死一戰","蜘蛛俠\n:英雄歸來","悟空傳","銀河護衛隊2","情圣","新木乃伊"] b = [56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23] #單位:億plt.barh(range(len(a)),b,height=0.3,color="#33FF00")#height設置線條寬度 plt.yticks(range(len(a)),a,fontproperties=my_font)plt.xlabel("票房(億)",fontproperties=my_font) plt.ylabel("電影名稱",fontproperties=my_font) plt.title("2017年內地電影和電影票房數據",fontproperties=my_font) plt.grid(alpha=0.3)#繪制網格 plt.show()

案例二:假設已知a中電影分別在 2017-09-14(b_14),2017-9-15(b_15),2017-9-16(b_16)三天的票房數據,為了展示列表中電影本身的票房以及同其他電影的數據對比情況,應該如何更加直觀的呈現該票房數據?
a = [“猩球崛起3:終極之戰”,"敦刻爾克,“蜘蛛俠:英雄歸來”,“戰狼2”]
b_14 = [2358,399,2358,362]
b_15 = [12357,156,2045,168]
b_16 = [15764,312,4497,319]

from matplotlib import pyplot as plt from matplotlib import font_managerfig = plt.figure(figsize=(20,8),dpi=80)# 設置繪圖大小 my_font = font_manager.FontProperties(fname='C:/Windows/Fonts/msyhl.ttc')# 設置字體a = ["猩球崛起3:終極之戰","郭刻爾克","蜘蛛俠:英雄歸來","戰狼2"] b_14 = [2358,399,2358,362] b_15 = [12357,156,2045,168] b_16 = [15764,312,4497,319]bar_width = 0.2x_14 = list(range(len(a))) x_15 = [i + bar_width for i in x_14] x_16 = [i + bar_width*2 for i in x_14]plt.bar(range(len(a)),b_14,width=bar_width) plt.bar(x_15,b_15,width=bar_width) plt.bar(x_16,b_16,width=bar_width) plt.show()

from matplotlib import pyplot as plt from matplotlib import font_managerfig = plt.figure(figsize=(20,8),dpi=80)# 設置繪圖大小 my_font = font_manager.FontProperties(fname='C:/Windows/Fonts/msyhl.ttc')# 設置字體a = ["猩球崛起3:終極之戰","敦刻爾克","蜘蛛俠:英雄歸來","戰狼2"] b_14 = [2358,399,2358,362] b_15 = [12357,156,2045,168] b_16 = [15764,312,4497,319]bar_width = 0.2x_14 = list(range(len(a))) x_15 = [i + bar_width for i in x_14] x_16 = [i + bar_width*2 for i in x_14]plt.bar(range(len(a)),b_14,width=bar_width,label="9月14日") plt.bar(x_15,b_15,width=bar_width,label="9月15日") plt.bar(x_16,b_16,width=bar_width,label="9月16日") #設置圖例 plt.legend(prop=my_font) # 設置x軸的刻度 plt.xticks(x_15,a,fontproperties=my_font) plt.show()

繪制直方圖

案例一:
假設你獲取了50部電影的時長(列表a中),希望統計出這些電影時長的分布狀態(比如時長為100分鐘到120分鐘的電影數量,出現的評率)等信息。
a= [131,98,125,131,124,139,131,117,128,108,135,138,131,102,107,114,119,128,121,142,127,130,124,101,110,116,117,110,128,128,115,99,136,126,134,95,138,117,111,78,132,124,113,150,110,117,86,95,144,105,126,130,126,130,126,116,123,106,112,138,123,86,101,99,136,123,117,119,105,137,123,128,125,104,109,134,77,88,99,100,121,95,92,123,128,111,135,132,124,150,151,98,75,72,77,82,100,98,99,100]

from matplotlib import pyplot as plt from matplotlib import font_managerfig = plt.figure(figsize=(20,8),dpi=80)# 設置繪圖大小 my_font = font_manager.FontProperties(fname='C:/Windows/Fonts/msyhl.ttc')# 設置字體a= [131,98,125,131,124,139,131,117,128,108,135,138,131,102,107,114,119,128,121,142,127,130,124,101,110,116,117,110,128,128,115,99,136,126,134,95,138,117,111,78,132,124,113,150,110,117,86,95,144,105,126,130,126,130,126,116,123,106,112,138,123,86,101,99,136,123,117,119,105,137,123,128,125,104,109,134,77,88,99,100,121,95,92,123,128,111,135,132,124,150,151,98,75,72,77,82,100,98,99,100]#計算組數 d = 5 #組距 num_bins = (max(a)-min(a))//d plt.hist(a,num_bins) #設置x軸的刻度 plt.xticks(range(min(a),max(a)+d,d)) plt.grid()# 繪制網格 plt.show()


我們發現圖片出現了偏移是因為組距無法被整除

from matplotlib import pyplot as plt from matplotlib import font_managerfig = plt.figure(figsize=(20,8),dpi=80)# 設置繪圖大小 my_font = font_manager.FontProperties(fname='C:/Windows/Fonts/msyhl.ttc')# 設置字體a= [131,98,125,131,124,139,131,117,128,108,135,138,131,102,107,114,119,128,121,142,127,130,124,101,110,116,117,110,128,128,115,99,136,126,134,95,138,117,111,78,132,124,113,150,110,117,86,95,144,105,126,130,126,130,126,116,123,106,112,138,123,86,101,99,136,123,117,119,105,137,123,128,125,104,109,134,77,88,99,100,121,95,92,123,128,111,135,132,124,150,151,98,75,72,77,82,100,98,99,100]#計算組數 d = 1 #組距 num_bins = (max(a)-min(a))//dplt.hist(a,num_bins,density=True) #設置x軸的刻度 plt.xticks(range(min(a),max(a),d)) plt.grid()# 繪制網格 plt.show()

interval = [0,5,10,15,20,25,30,25,40,45,60,90] # x軸
width = [5,5,5,5,5,5,5,5,5,15,30,60] # 寬度
quantity = [836,2737,3723,3926,3596,1438,3273,642,824,613,215,47] # y軸

from matplotlib import pyplot as plt from matplotlib import font_managerfig = plt.figure(figsize=(20,8),dpi=80)# 設置繪圖大小 my_font = font_manager.FontProperties(fname='C:/Windows/Fonts/msyhl.ttc')# 設置字體interval = [0,5,10,15,20,25,30,25,40,45,60,90] # x軸 width = [5,5,5,5,5,5,5,5,5,15,30,60] # 寬度 quantity = [836,2737,3723,3926,3596,1438,3273,642,824,613,215,47] # y軸plt.bar(range(12),quantity,width=1)# 設置x軸刻度 _x = [i - 0.5 for i in range(13)] _xtick_labels = interval+[150] plt.xticks(_x,_xtick_labels) plt.grid() plt.show()

1,應該選擇哪種圖形來呈現數據
2,matplotlib.plot(x,y)
3,matplotlib.bar(x,y)
4,matplotlib.scatter(x,y)
5,matplotlib.hist(data,bins,normed)
6,xticks和yticks的設置
7,label和title,grid的設置
8,繪圖的大小和保存圖片

matplotlib支持的圖形非常多可參考 https://matplotlib.org/gallery/index.html

https://echarts.apache.org/examples/zh/index.html

總結

以上是生活随笔為你收集整理的数据分析学习01-matplotlib绘图工具基本操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。