程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python大作業——爬蟲+可視化+數據分析+數據庫(數據分析篇)

編輯:Python

個人博客

Python大作業——爬蟲+可視化+數據分析+數據庫(簡介篇)

Python大作業——爬蟲+可視化+數據分析+數據庫(爬蟲篇)

Python大作業——爬蟲+可視化+數據分析+數據庫(可視化篇)

Python大作業——爬蟲+可視化+數據分析+數據庫(數據庫篇)

一、生成歌詞詞雲

首先我們需要先獲取所有爬取到的歌曲的歌詞,將他們合成字符串

隨後提取其中的中文,再合成字符串

text = re.findall('[一-龥]+', lyric, re.S) # 提取中文
text = " ".join(text)

之後使用jieba進行分詞,並將其中分出來的長度大於等於2的詞保存

word = jieba.cut(text, cut_all=True) # 分詞
new_word = []
for i in word:
if len(i) >= 2:
new_word.append(i) # 只添加長度大於2的詞
final_text = " ".join(new_word)

接下來為生成的詞雲選擇一張好看的圖片,就可以開始生成了!

mask = np.array(Image.open("2.jpg"))
word_cloud = WordCloud(background_color="white", width=800, height=600, max_words=100, max_font_size=80, contour_width=1, contour_color='lightblue', font_path="C:/Windows/Fonts/simfang.ttf", mask=mask).generate(final_text)
# plt.imshow(word_cloud, interpolation="bilinear")
# plt.axis("off")
# plt.show()
word_cloud.to_file(self.keyword+'詞雲.png')
os.startfile(self.keyword+'詞雲.png')

WordCloud參數中的contour_width=1, contour_color='lightblue’分別為背景圖片輪廓線條的粗細和顏色,如果沒有設置則不會出現輪廓,font_path是用來指定字體的

生成後可以通過show展示也可以通過保存到本地並打開,最終結果如下

二、熱門歌手歌曲量餅圖

首先是獲得熱門歌手列表以及熱門歌手歌曲量

隨後用每個歌手歌曲數量除以所有這十個歌手的總歌曲數量,得到每個歌手歌曲量的占比

接下來可以選擇設置哪一塊突出顯示,如圖中周傑倫部分突出顯示

如下只需要將突出部分的值設置大即可

explode = [0.1, 0, 0, 0, 0, 0, 0, 0, 0, 0]

接下來就可以生成餅圖了

plt.figure(figsize=(6, 9)) # 設置圖形大小寬高
plt.rcParams['font.sans-serif'] = ['SimHei'] # 解決中文亂碼問題
plt.axes(aspect=1) # 設置圖形是圓的
plt.pie(x=proportion, labels=name, explode=explode, autopct='%3.1f %%',
shadow=True, labeldistance=1.2, startangle=0, pctdistance=0.8)
plt.title("熱門歌手歌曲量占比")
# plt.show()
plt.savefig("熱門歌手歌曲量占比餅圖.jpg")
os.startfile("熱門歌手歌曲量占比餅圖.jpg")

其中x是歌曲量占比的列表,labels是對應的標簽(在此圖中則為歌手的姓名),explode就是上文提到的突出顯示,這三個列表中的各個值是一一對應的,autopct是設置占比數值的顯示方式,3.1f則表示占寬為3位(如果大於會原樣輸出),精度為1的浮點數

同樣可以選擇直接show展示,或者保存到本地再打開

三、歌曲熱度占比條形圖

在之前我們通過爬蟲獲取了top500的歌曲的信息(如下),現在我們希望對歌曲的熱度進行分析,生成柱狀圖

效果圖如下:

本來是想生成歌手擁有熱門歌曲數量的柱形圖的,但是那個爬取熱門歌曲的網站中那些熱門歌曲沒有對應的歌手,還需要自己再去其他網站獲得每首歌曲對應的歌手,太麻煩了就沒這麼做了,有興趣的小伙伴可以自己實現一下

首先我們要獲得每個熱度范圍的歌曲數量

下面的data列表就是對應x元組范圍的歌曲數量

我們只要通過遍歷歌曲熱度列表,每次都在其data列表對應熱度+1,最終即可得到每個熱度范圍的歌曲數量

x = ('0-10', '10-20', '20-30', '30-40', '40-50', '>50')
data = [0, 0, 0, 0, 0, 0]

接下來就是創建柱狀圖,首先解決中文亂碼問題

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

隨後即可通過plt.bar創建,其中第一個參數為橫坐標數據,第二個參數為縱坐標數據,第三個參數為為柱狀圖填充顏色,第四個參數為透明度

title,xlabel,ylabel顯然就是該柱狀圖的標題,橫坐標和縱坐標的名稱

plt.bar(x, data, color='steelblue', alpha=0.8)
plt.title("pop500歌曲熱度")
plt.xlabel("歌曲熱度范圍")
plt.ylabel("歌曲數量")
plt.show()

先自我介紹一下,小編13年上師交大畢業,曾經在小公司待過,去過華為OPPO等大廠,18年進入阿裡,直到現在。深知大多數初中級java工程師,想要升技能,往往是需要自己摸索成長或是報班學習,但對於培訓機構動則近萬元的學費,著實壓力不小。自己不成體系的自學效率很低又漫長,而且容易碰到天花板技術停止不前。因此我收集了一份《java開發全套學習資料》送給大家,初衷也很簡單,就是希望幫助到想自學又不知道該從何學起的朋友,同時減輕大家的負擔。添加下方名片,即可獲取全套學習資料哦


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved