1. 程式人生 > >機器學習(4):資料分析的工具-pandas的使用

機器學習(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的使用

前面幾節說一些沉悶的概念,你若看了估計已經心生厭倦,我也是。所以,找到了一個理由來說一個有興趣的話題,就是資料分析。是什麼理由呢?就是,機器學習的處理過程中,資料分析是經常出現的操作。就算機器對大量樣本預測了結果,那對結果進行資料分析與展示,也是經常遇到的標準作業,所以,這一次,來看看怎麼做到資料分析的。 在

機器學習4python基礎及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 合併或者連結在一起來分析資料集,但是這個過程還是非常花費時間的,