前段時間不知道從哪裏弄來的一份知乎數據,數據量很少,只有二十萬的樣子,今天就以這二十萬數據來進行一次簡單地數據可視化,主要的工具就是兩個:pandas和matplotlib。
如下相關的代碼和示例數據在文末有相應的下載連接,你能夠下載數據本身嘗試。git
實際上,你也可使用BI軟件進行分析,速度和可視化效果很好,最主要的是操做相對容易,可是咱們拿到的這份示例數據並不規整,也就是有部份內容是亂的,爬蟲爬下來的數據有錯位的狀況,所以對於數據的清洗須要必定的時間,爲了方便,咱們就直接編程實現。github
咱們使用jupyter notebook做爲咱們的ide工具
首先來看一下咱們的原始數據的樣子。正則表達式
咱們習慣於使用英文做爲咱們的列索引,所以咱們在導入數據的時候指定索引的名稱,以下所示。編程
其中,%matplotlib inline指定咱們的plt作的圖嵌入在ide之中,而不是彈窗顯示。
其結果以下所示,後面還有數據列,只是截圖容不下了。ide
咱們首先來看一下哪些高校的知乎用戶數量最多,核心思路就是咱們對高校進行計數,而後按照數量進行降序排序,選擇選取前十位進行繪圖表示。在實際操做的過程總,我發現了一個問題,計數結果排名比較靠前的數據中有一些是諸如」大學「, ’大學本科‘這樣的數據,顯然咱們須要先將其去掉。
咱們自定義一個函數,若是其學校填寫的是某一些特定的數據,咱們就將其置爲空。
由於咱們只須要排名靠前的大學,那些名字更加奇葩的咱們就無論了,畢竟咱們用不到。函數
下面就直接開始繪圖了。工具
其結果以下3d
一眼望過去,你會發現全是985高校,真是着實讓人悲傷。
既然那麼多的985,那麼咱們下一步的思路就是,看一下985的人數在總人數中所佔的比例。code
思路就是咱們定義一個函數,若是這所學校是985的話,咱們就給他一個記號爲1,若是不是就爲0,爲何是1/0而不是其餘的呢,待會咱們做圖的時候你就知道了。blog
看一下效果
檢查一下是否是已經徹底的實現了標記狀況。
直接開始繪圖吧
簡單地解釋一下clean_name.name = ''
在繪製餅圖的時候,Series的name會默認以標籤的形式出如今餅圖的左邊,好好的一個餅圖,左邊多了一個label顯然是不美觀的,所以咱們直接將Series的name去掉,你能夠嘗試註釋掉這一行,來看一下會是什麼樣子。
從上面的餅圖能夠看到,雖然985高校只有34所,可是其佔比達到了1/4,真是讓人懷疑這些高校的學生是否是人手一個知乎App。
這個地方就出現了數據混亂的狀況,按理說,回答都是整數,可是這裏面的部分數據出現了值爲漢字的狀況,所以,要想進行下一步的分析,只能先對這些數據進行處理。
使用正則表達式,將非數字所有替換爲0,最後把這一列的數據類型轉換成整型。
咱們這裏將用戶名做爲咱們的索引,方便下一步的繪圖。
最後,咱們將以上數據中所呈現的專業進行一下詞頻統計,並製做出詞雲。
計算機,金融完勝。
既然作到這了,順便在看一下這些大V的就任公司。
作的很是的粗糙,看到的同窗請見諒。
你能夠去github下載以上的代碼和相應的數據。