本系列將全面涉及本項目從爬蟲、數據提取與準備、數據異常發現與清洗、分析與可視化等細節,並將代碼統一開源在GitHub:DesertsX/gulius-projects ,感興趣的朋友能夠先行 star 哈。html
請先閱讀「中國年輕人正帶領國家走向危機」,這鍋背是不背? 一文,以對「手把手教你完成一個數據科學小項目」系列有個全局性的瞭解。git
我知道好幾個朋友按照前幾篇文章的內容已經開始運行代碼了,也知道一些人遇到了我碰到的 BUG,雖然更鼓勵自行根據報錯信息網上搜索解決方案,但也不介意加 Python
交友娛樂會所羣(QQ羣:613176398,娛樂會所沒有嫩模)來詢問,力所能及處也會幫忙新手小白看看爲什麼出錯,可愛友善的羣友也一樣會幫忙的。github
而若是你正被 BUG 折騰的「心力交瘁」,這裏送上一首葉嘉瑩先生的《踏莎行》,但願你能元氣滿滿哈。(如何評價葉嘉瑩? - Deserts X)bash
—世多艱,寸心如水。也曾局囿深杯里。炎天流火劫燒餘,藐姑初識真仙子。
谷內青松,蒼然若此。歷盡冰霜偏未死。一朝鯤化欲鵬飛,天風吹動狂波起。echarts
但無論什麼說,截至目前已經完成了數據爬取、數據提取與IP查詢、數據異常與清洗,拿到手的數據終於能夠用來分析和可視化了,也是件值得欣慰的事。spa
那麼,閒言少敘,先來看看評論數隨時間的變化狀況吧,雖然上一篇文章:數據異常與清洗裏涉及過,但因爲側重點在數據異常,因此未作展開,如今從新擴展下。3d
import pandas as pd
df = pd.read_csv('Sina_Finance_Comments_All_20180811_Cleaned.csv',encoding='utf-8')
df.head()
複製代碼
請無視前面幾列多出來的:
code
先來看看評論數隨時間戳變化狀況:cdn
import matplotlib.pyplot as plt
%matplotlib inline
plt.plot(df.stamp, df.cmntcount);
複製代碼
pyecharts
(
pyecharts 配置文檔 )繪製每日評論數的變化折線圖:
df_ymdcount = df.groupby('time_ymd')['cmntcount'].count()
from pyecharts import Line
line = Line("每日評論數變化狀況")
line.add("日期", df_ymdcount.index, df_ymdcount.values,line_type='dotted')
line
複製代碼
按天來看,這篇文章的大部分評論都是產生於在8月8號,即2008年北京奧運會十週年的當日,固然可能並不相關。
htm
df_mdhcount = df.groupby('time_mdh')['cmntcount'].count()
from pyecharts import Line
line = Line("每小時評論數")
line.add("小時", df_mdhcount.index, df_mdhcount.values,line_opacity=1,line_type='dotted')
line
複製代碼
細分到每一個小時上,評論的峯值發生在8號的9點,高達658條,數值大小在本文的圖裏看不出來,但 jupyter notebook 代碼裏的 pyecharts 圖表都是交互式的,每一個點的數值和時間都可查看。需注意的是須要運行過過代碼才能看到,Github上點開是空白的。
而後是看起來更爲立體的每小時評論數柱形圖:
from pyecharts import Bar
bar = Bar("每小時評論數")
bar.add("小時", df_mdhcount.index, df_mdhcount.values,is_label_show=True,xaxis_interval=0,xaxis_rotate=-90)
bar
複製代碼
該新浪財經這篇《中國年輕人正帶領國家走向危機》文章,有着極其「聳人聽聞」的標題,但一樣逃不過「速朽」的命運,在一兩天內就趨於平淡了。
評論數隨時間的變化狀況大概就是這樣了,其實沒太多可說的,若是把後面提取地理位置(area 列)中的省份和城市數據,並調用百度地圖API拿到全部位置的經緯度,並用BDP繪製動態熱力圖的實現過程先在這裏一塊兒講的話,可能更有的可說,不過內容所限仍是後續再講哈。感興趣的朋友能夠按照這裏的思路自行嘗試繪製出下面的動態圖哈。
仍值得一說的是在做圖和可視化的過程當中,對評論數相關圖表仍是不滿意,因而想把每小時評論數的柱形圖和總評論數變化的曲線圖組合到一塊兒,就像當初爬取張佳瑋138w+知乎關注者:數據可視化完成項目時,在徹底不懂 ECharts3裏的代碼和配置項的狀況下,硬着頭皮坑 JavaScript 代碼,搞了個知乎第一大V「張公子」張佳瑋的138萬關注中自身有100+關注的人羣的性別人數和比例圖,今日看來,依舊兼具美感和創意,不像別處看到的可視化圖通常「醜陋」(逃…);
也在簡書=雞湯?爬取簡書今日看點:1916篇熱門文章可視化項目裏繪製了簡書熱門文章發佈時間的年月分佈圖,審美槓槓的(逃…):
固然這裏沒必要像上述兩者那樣須要去啃 ECharts3 的 JavaScript 代碼(相關實現:圖表太醜怎麼破,ECharts神器帶你飛!),直接在 pyecharts 配置文檔 裏有組合圖多種示例,輕鬆實現下圖:
df_mdhmax = df.groupby('time_mdh')['cmntcount'].max()
df_mdhcount = df.groupby('time_mdh')['cmntcount'].count()
from pyecharts import Bar, Line, Overlap
bar = Bar("每小時評論數")
bar.add("小時", df_mdhcount.index, df_mdhcount.values,is_label_show=True,xaxis_interval=-90,
xaxis_rotate=-90, yaxis_interval=200,yaxis_max=800)
line = Line("每小時評論數")
line.add("小時", df_mdhmax.index, df_mdhmax.values,line_opacity=1,
line_type='dotted', yaxis_interval=1000,yaxis_max=4000)
overlap = Overlap()
overlap.add(bar)
overlap.add(line, is_add_yaxis=True, yaxis_index=1)
#overlap.render() # 使用 render() 渲染生成 .html 文件
overlap
複製代碼
便捷的代價就是配色上沒有太多選擇的餘地:
pyecharts( 圖表詳情) 提供的圖表選擇仍是蠻多的,你們能夠自行選擇想呈現的效果。後面地圖可視化也會用到。並且,用起來很簡單的,套用示例,改爲本身的數據就行。
本系列將全面涉及本項目從爬蟲、數據提取與準備、數據異常發現與清洗、分析與可視化等細節,並將代碼統一開源在GitHub:DesertsX/gulius-projects ,感興趣的朋友能夠先行 star 哈。
本系列文章:
「中國年輕人正帶領國家走向危機」,這鍋背是不背?
手把手教你完成一個數據科學小項目(1):數據爬取
手把手教你完成一個數據科學小項目(2):數據提取、IP 查詢
手把手教你完成一個數據科學小項目(3):數據異常與清洗