機器學習(4):資料分析的工具-pandas的使用
前面幾節說一些沉悶的概念,你若看了估計已經心生厭倦,我也是。所以,找到了一個理由來說一個有興趣的話題,就是資料分析。是什麼理由呢?就是,機器學習的處理過程中,資料分析是經常出現的操作。就算機器對大量樣本預測了結果,那對結果進行資料分析與展示,也是經常遇到的標準作業,所以,這一次,來看看怎麼做到資料分析的。
在python提供的模組中,pandas,是一個實用的資料分析的工具。說到pandas,我就想起“機動部隊”裡面的pandas(熊貓),一道綠光。
本文結合微信好友的資料,介紹如何使用pandas進行資料分析。
資料分析之前,先得有資料,這裡使用小程的微信好友的資料進行分析。
(一)獲取微信好友的資料
為了獲取微信好友的資料,需要使用一個工具,叫itchat。itchat是網頁微信介面的封裝,在工具篇,小程介紹過如何給微信群自動地傳送(批量)訊息,用的就是itchat。
這裡直接介紹使用itchat獲取微信好友的資訊。
試驗一下,先算一下小程有多少異性朋友吧,可以這樣寫程式碼:
執行這段程式碼,可以看到這樣的輸出:
為了後續的資料分析,接下來,小程提取更具體的好友資料,並儲存到檔案,這裡面用到了pandas。
如果你沒有安裝pandas,那可以這樣安裝(假設你是mac系統):
pip install pandas
以下是獲取好友資料的程式碼:
執行這段程式碼,在本地生成了一個檔案:friends_info.csv,csv檔案一般是純文字,用來儲存記錄的檔案(一般所有記錄都有相同的欄位)。
用excel開啟這個csv檔案,可以看到這樣的資訊(如果你發現excel開啟會亂碼,那可以先用word並選擇用utf8來開啟,然後再儲存,之後再用excel開啟):
這個csv檔案的內容,就是後續資料分析的基礎。
(二)分析資料
有了基礎資料之後,就可以使用pandas進行分析,並用matplotlib進行繪圖。matplotlib是繪圖的實用工具,小程另找機會詳細介紹,你可以先不管這部分內容,或者先簡單瞭解,因為程式碼截圖中有相應的解釋。
這裡演示對微信好友的性別與地區進行資料分析。
(1)引入pandas與matplotlib
引入pandas與matplotlib的程式碼,以及程式碼的執行效果是這樣的:
(2)分析性別
這裡根據性別種類的個數,繪製條形圖。
先來看分析性別與繪製的程式碼,截圖中的解釋是重點內容:
執行這段程式碼,可以看到這樣的輸出與顯示:
由展示圖可見,小程的朋友以男性居多。
(3)分析地區
實現的思路跟性別分析類似,程式碼如下:
執行的效果如下:
由展示圖可見,小程的朋友以廣州跟深圳為主,小程的朋友圈很窄。
以上介紹了怎麼分析性別與地區的分佈資料,其中pandas的使用是本文的重點。
以上的程式碼中,用到了pandas的DataFrame跟Series型別,也用到了Series的統計函式max。接下來,對pandas的知識再做一個簡單的介紹。
(三)pandas的知識
pandas的資料,有兩個型別。一個是DataFrame,一個是Series。
DataFrame就是一個數據表(由若干列組成),而Series就是其中的一列(一個欄位的所有內容)。對於DataFrame或Series變數,有各種函式,可以完成資料分析,包括:個數、最大值、最小值、平均值、中位數、眾數、方差、峰值,等等。
對於pandas的詳細理解,可以參考這個文件:http://pandas.pydata.org/pandas-docs/stable/index.html
你也可以邊用邊學,誰用誰研究。
至此,主要內容已經介紹完畢,以下是一個好玩的詞雲圖分析,只是附帶內容。
(三)詞雲圖
小程拿到的好友資訊中,包括了“簽名”這項內容,一般來說,可以弄個詞雲圖來看看簽名的重點資訊。
安裝模組jieba,這是一個支援中文的分詞器:
pip install jieba
安裝模組PIL,這是一個影象處理庫:
pip install Pillow
安裝wordcloud,這是一個詞雲圖庫:
pip install wordcloud
實現微信好友的簽名的詞雲圖,大概的思路是這樣的:使用pandas從基礎資料中讀取到一個數據表,從資料表中拿到簽名的列並把這一列的內容轉換成list,對簽名list的每個簽名逐一處理,過濾掉一些關鍵詞,再使用正則表示式把一些特殊字元去除掉,最後把處理後的簽名用空格拼接在一起,並呼叫分詞器進行分詞處理,得到一個分詞list。建立詞雲圖物件,設定背景顏色、字型等,並傳遞分詞list,最終顯示並儲存詞雲圖物件生成的影象。
實現的程式碼,請參考下圖:
執行這段程式碼,可以看到這樣的效果:
由圖可見,小程的好友很有個性(喜歡說“自己”),小程的好友跟“程式”分不開,小程的好友已經開始聊人生與合作了(估計年紀比較大了)。
在生成詞雲圖時,設定了背景圖(back.jpg),小程這裡使用的是這張圖:
設定不同的背景圖跟顏色等屬性,會有不同的效果,你可以嘗試一下,這裡不細說了。
總結一下,本文以微信好友的資訊為資料基礎,使用pandas進行了資料分析。pandas是機器學習處理過程中經常使用的工具,有所理解是有必要的。文章最後順帶演示了詞雲圖的生成。
相關推薦
機器學習(4):資料分析的工具-pandas的使用
前面幾節說一些沉悶的概念,你若看了估計已經心生厭倦,我也是。所以,找到了一個理由來說一個有興趣的話題,就是資料分析。是什麼理由呢?就是,機器學習的處理過程中,資料分析是經常出現的操作。就算機器對大量樣本預測了結果,那對結果進行資料分析與展示,也是經常遇到的標準作業,所以,這一次,來看看怎麼做到資料分析的。 在
機器學習(4):python基礎及fft、svd、股票k線圖、分形等實踐
本節我們主要簡單介紹機器學習常用的語言–python。樓主本身是寫java的,在這之前對python並不瞭解,接觸之後發現python比java簡直要好用幾千倍。這裡主要通過常用的統計量、fft、股票k線圖及分形等樣例,介紹python的使用及各種包的載入。
前置機器學習(四):一文掌握Pandas用法
> Pandas提供快速,靈活和富於表現力的**資料結構**,是強大的**資料分析**Python庫。 本文收錄於[機器學習前置教程系列](https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&__biz=MzUxMjU4NjI4MQ=
機器學習 第4篇:資料預處理(sklearn 插補缺失值)
由於各種原因,現實世界中的許多資料集都包含缺失值,通常把缺失值編碼為空白,NaN或其他佔位符。但是,此類資料集與scikit-learn估計器不相容,這是因為scikit-learn的估計器假定陣列中的所有值都是數字,並且都存在有價值的含義。如果必須使用不完整資料集,那麼處理缺失資料的基本策略是丟棄包含缺失值
robotframework 學習(4) :介面測試,返回json資料的獲取和驗證
一、前言 上一篇部落格寫了怎麼從excel文件中獲取資料和傳參到介面當中,這一篇文章就記錄一下,獲取到介面返回的引數後的怎麼解析json資料。 二、具體步驟 1、之前看到其
吳裕雄 資料探勘與分析案例實戰(4)——python資料處理工具:Pandas
# 匯入模組import pandas as pdimport numpy as np # 構造序列gdp1 = pd.Series([2.8,3.01,8.99,8.59,5.18])print(gdp1)# 取出gdp1中的第一、第四和第五個元素print('行號風格的序列:\n',gdp1[[0,3,
OpenCV機器學習(1):貝葉斯分類器實現程式碼分析
OpenCV的機器學習類定義在ml.hpp檔案中,基礎類是CvStatModel,其他各種分類器從這裡繼承而來。 今天研究CvNormalBayesClassifier分類器。 1.類定義 在ml.hpp中有以下類定義: class CV_EXPORTS_W CvNorm
機器學習(十三):CS229ML課程筆記(9)——因子分析、主成分分析(PCA)、獨立成分分析(ICA)
1.因子分析:高維樣本點實際上是由低維樣本點經過高斯分佈、線性變換、誤差擾動生成的,因子分析是一種資料簡化技術,是一種資料的降維方法,可以從原始高維資料中,挖掘出仍然能表現眾多原始變數主要資訊的低維資料。是基於一種概率模型,使用EM演算法來估計引數。因子分析,是分析屬性們的公
機器學習(一):用sklearn進行資料預處理:缺失值處理、資料標準化、歸一化
在我們平時進行資料資料探勘建模時,一般首先得對資料進行預處理,其中就包括資料缺失值、異常值處理、資料的標準化、歸一化等等。 下面主要介紹如何對一個數據檔案進行資料的缺失值處理、標準化和歸一化 MID_SP MID_AC MID_R25 MID_COND LITHO1 55.
機器學習(七):主成分分析PCA降維_Python
六、PCA主成分分析(降維) 1、用處 資料壓縮(Data Compression),使程式執行更快 視覺化資料,例如3D-->2D等 …… 2、2D–>1D,nD–&
Java學習(4):統計一個文件中的英文,中文,數字,其他字符以及字符總數
port let args str reader 文件路徑 要求 cnblogs pub 要求:統計一個文件中的英文,中文,數字,其他字符以及字符總數(此隨筆以txt文件為例) import java.io.BufferedReader; import java.io.F
Andrew Ng機器學習(零):什麽是機器學習
中學 修正 style tar 輸入 color 情況 html 知識 1.什麽是機器學習? 自動化:讓計算機處理繁瑣和重復的工作。 編程:設計一種算法,適用於解決特定的問題。 機器學習:可以解決更廣泛的而不是特定的問題。類比於人類從經驗中學習這種活動,從已有的數據中發現自
Java虛擬機器學習(1):體系結構 記憶體模型
JVM記憶體區域模型 1.方法區 也稱”永久代” 、“非堆”, 它用於儲存虛擬機器載入的類資訊、常量、靜態變數、是各個執行緒共享的記憶體區域。預設最小值為16MB,最大值為64MB,可以通過-XX:PermSize 和 -XX:MaxPermSize 引數限制方法區的大小。
tensorflow學習(4):損失函式+優化方法
一、損失函式 提起損失函式,大概最常用的就是交叉熵和均方誤差了。 1.交叉熵損失函式:針對分類問題 假設某個樣例的正確答案是(1,0,0),預測值是[0.5,0.4,0.1] 那麼其交叉熵為H((1,0,0),(0.5,0.4,0.1))=-(1log0.5+0log0.4+0*log
用python來實現機器學習(一):線性迴歸(linear regression)
需要下載一個data:auto-mpg.data 第一步:顯示資料集圖 import pandas as pd import matplotlib.pyplot as plt columns = ["mpg","cylinders","displacement","horsepowe
多執行緒學習(4):三種實現Java多執行緒的方法:Thread、Callable和Runable 的比較與區別
2018年10月03日 目錄 前言 前言 JVM允許應用程式併發執行多執行緒:最常用的是兩個方法:(1)基礎Thread類,重寫run()方法;(2)或實現Runnable 介面,實現介面的run()方法;(3)另外一種方法是:實現callable 介面
機器學習(二):logistic迴歸
基礎知識: logistic迴歸其實是一個分類問題,可以定義如下:c為2時是一個兩類分類問題. 當分佈為伯努利分佈時: logistic迴歸和線性迴歸類似,不同的條件概率是不同的,方程如下: 其中:sigmoid函式定義如下: 使用logist
機器學習(一): 主要術語
機器學習研究如何通過計算的方式,利用資料集來改善系統自身的效能。 而深度學習是屬於機器學習的一個子分支。 機器學習的通用的兩種型別: 無監督學習:事先並沒有任務訓練資料的樣本,需要直接對資料進行建模型。 監督學習:通過已經有的訓練樣本(即輸入資訊和對應的輸出)來訓練,
機器學習(二):機器學習中的幾個基本概念
前言 對於《統計學習方法》中遇到的一些問題,以及機器學習中的一些自己沒有理解透徹的問題,希望通過梳理總結能夠有更深入的理解。 在上一章最開始我們已經概括了統計學習方法的三要素,即模型、策略、演算法,這裡就不再詳述了。 本文討論總結了如下幾個概念:損失函式與風險
pandas系列學習(五):資料連線
作者:chen_h 微訊號 & QQ:862251340 微信公眾號:coderpai 利用 Python 處理任何實際的資料時,你就需要將 pandas DataFrame 合併或者連結在一起來分析資料集,但是這個過程還是非常花費時間的,