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