使用Python和Jupyter Notebook進行數據分析

2021-03-02 數據思踐

「君之所以明者,兼聽也;其所以暗者,偏信也。」——漢·王符《潛夫論·明暗》

數據分析,不管對於個人,還是公司,都是一種核心能力。和一些數據朋友聊天時,會談及一些有效的數據分析工具。一位友人說,「我用Python,Jupyter notebook和Python相應的庫(numpy, matplotlib,seaborn和pandas等)做數據分析工作,非常有效,也很便利」。懷揣著學習和進取的心態,我立刻在google上面檢索關鍵詞:python jupyter notebook data analysis,閱讀了一些與這個主題相關的系列文章,並且積極地進行實踐之,讓自己一來熟悉jupyter notebook這個工具,二來藉助這個工具實現更有效地做數據分析。同時,發現一篇用jupyter notebook做數據分析的淺顯易懂的教程,特翻譯之,以備學習之用。

譯者:王路情
作者:Wei Tang
原文連結:
http://www.storybench.org/getting-started-with-python-and-jupyter-notebooks-for-data-analysis/

讓我們討論一下用Python做數據分析。在本教程中,您將在使用Python和pandas探索數據集時學習一些簡單的數據分析過程。

在我們開始之前,請確保您已經為這個實踐設置了環境。請安裝Python 3.6、pandas和matplotlib。此外,我們將在本教程中使用一個Jupyter Notebook。如果您還沒有聽說過這個組合工具,那麼這一段 Linear Digressions 可以很好地解釋它們。

我將使用Anaconda,它是一個運行Python的平臺,包含一套數據分析工具。本教程將分為三個部分:問題、處理和探索。

在這裡下載本教程的Jupyter Notebook。

決定您的數據集和問題

數據分析總是從問題開始。反過來,這些將決定您收集什麼類型的數據。在本教程中,我們將探索NewsWhip在2016年11月至2017年5月期間收集的由世界500強新聞出版商發布在Facebook上的10,000篇新聞文章的數據集。我們可能會問,哪些新聞機構在這組新聞中發表的文章最多,標題中最重要的關鍵詞是什麼。

將數據集導入一個Jupyter Notebook

讓我們下載數據集,然後在一個Jupyter Notebook中導入和打開它。當你把Jupyter notebook 輸入終端時,一個Jupyter Notebook會立即啟動。

接下來,你將會看到這樣的一個頁面:

接下來,單擊upload按鈕上傳數據集。然後點擊「新建」下拉菜單,選擇Python [conda root]。

請跟隨我導入本教程所需的所有包。

然後,讓我們導入數據集

1df = pd.read_csv("file_name.csv")

通過輸入df.head(10),您可以查看該數據集中的前10行。

處理(Wrangle)

一旦我們導入數據集之後,我們需要處理數據以幫助回答前面提到的問題。沒有一個數據集是完美的,這就是為什麼我們需要檢查這個數據集中的問題並修復它們。

讓我們輸入df.shape來檢查這個數據集中有多少列和行。

這意味著我們有10,000行和12列。接下來,輸入df.dtypes檢查每個列的數據類型。

注意到Publisher, Headline, Link, 和Date都是作為對象列出的。這是奇怪的。進一步的研究表明,它們實際上是字符串,我通過輸入:

1type(df['column name'][0])

將日期列從對象轉換為日期時間

讓我們將Date的數據類型從object更改為datetime。
輸入:

1df[' Date '] = pd.to_datetime(df[' Date '])

完成後,請輸入df.types,以確保它工作。

很好,Date的數據類型現在是datetime64[ns]。接下來,讓我們檢查這個數據集中是否有缺失的值。我們會輸入:

1df.info()

注意在Keywords,在10,000行中,只有7,528行包含Keywords列中的對象。這意味著大約有2500個缺失值。這意味著這些文章沒有關鍵詞。請記住這一點,因為在討論數據分析時,我們需要包括這一點。

接下來,我們輸入df.duplicate()檢查是否有任何重複的數據

這看起來不錯。我們不需要刪除任何重複的數據。

探索和可視化數據

現在您已經清理了數據,您可以使用一些數學操作(如sum和count)來顯示數據中的模式。通過使用value_counts函數,我們可以統計列中唯一值的個數。然後,我們可以調用結果上的plot函數來創建柱狀圖。

讓我們來算一下哪個出版商發表的文章最多。輸入:

1 df['column name』].value_counts()

我們發現BuzzFeed在數據集中發表的文章最多。為了使其可視化,我們可以使用matplotlib製作一個柱狀圖。在Jupyter notebook 中創建可視化時,有一件事非常方便,那就是matplot inline,它允許您在notebook中查看繪圖。

我們可以使用df[' Publisher '].value_counts()繪製一個簡單的柱狀圖。使用figsize改變圖的大小。

哇!這個圖有點亂。讓我們按降序來篩選前10位發布者。

我們可以通過設置ascending = false來實現這一點,然後通過將top10[:10]分配給變量top10來獲得前Top10:

1top10 = df["Publisher"].value_counts()
2top10.sort_values(ascending=False)
3top10 = top10[:10]
4top10.plot(kind="bar")

然後,繪製變量Top10的柱狀圖:

1top10.plot(kind="bar")

很好,我們得到了第一個柱狀圖!

繪製Top20的關鍵詞

接下來,讓我們嘗試創建一個柱狀圖來顯示Keywords列中的前20個關鍵字。

這個問題有點複雜,因為關鍵字不是單個單詞,而是由逗號分隔的字符串。如果不這樣做,這就是我們所可視化的:

為了獲得準確的關鍵字計數,我們需要將列拆分為單個單詞並將它們放入數組中—在panda中稱為series。

讓我們把這一列拆成單個單詞,並把它們放到一個序列中。然後,循環遍曆本序列中的每個單詞,我們就可以的關鍵字的準確計數。

1keyword_count = pd.Series(np.concatenate([str(x).lower().strip().replace(' ', '').split(',')
2                                          for x in df.Keywords])).value_counts()
3keyword_count = keyword_count[keyword_count != 2472]
4keyword_count = keyword_count[keyword_count != 910]
5result = keyword_count.nlargest(20)
6result.plot(kind='bar',figsize=(12,8))
7print (keyword_count)

讓我解釋一下我寫的代碼。第一行是計算關鍵字是NULL的總數,然後將它們從序列中刪除。第二行是計算關鍵字為空的總數,然後將它們從序列中刪除。

我們可以為這個結果做一個餅狀圖。

讓我們展開這個餅狀圖以便更好地進行比較。它看起來很酷!

1labels = keyword_count = 'donaldtrump ','politics','news','uspolitics','india','culture','environment','barackobama','russia','u.s.news'
2sizes =[1723,549,388,288,236,213,205,199,170,169]
3explode =(0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.3,0.3) 
4fig1, ax1 = plt.subplots()
5ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',
6        shadow=True, startangle=90)
7ax1.axis('equal')  
8
9plt.show()

為了繪製這個餅狀圖,我們需要添加一些特徵。標籤是我們獲得的前10個關鍵詞;size是每個關鍵字的總數;Explode以不同的程度分割每個標籤——數字越大,差距就越大;startangle =90是我們自定義的起始角,這意味著所有東西都是逆時針旋轉90度。

希望您喜歡本教程。評論?建議嗎?請留言。

上善若水。水善利萬物而不爭,處眾人之所惡, 故幾於道。居,善地;心,善淵;與,善仁;言,善信;正,善治;事,善能;動,善時。夫唯不爭,故無尤。——老子《道德經》第八章

內容推薦

我是數據人王路情,專注於從數據中學習
我們創建數據人網http://shujuren.org,它是數據人的家園,一個數據人學習,交流和分享的場所。歡迎您,大家一起來創造和分享數據知識,共建和共享數據智庫,為智能化社會助力。

相關焦點

  • Python安裝Jupyter Notebook配置使用教程
    為什麼要用Jupyter Notebook推薦新手寫python用什麼編輯器就有有人問:為什麼沒有Jupyter Notebook。本來想數據分析和可視化的時候才介紹的,所以沒有加上。最近要截圖比較多,用Jupyter Notebook可以很好看到代碼和結果。
  • Python學習|Anaconda、Jupyter Notebook、pycharm安裝使用詳解
    本文還對Jupyter Notebook的使用進行了講解,包括 Jupyter Notebook 如何與 Anaconda 聯合使用,進行不同 環境的 python 開發。本文會介紹pycharm,如何安裝、如何新建工程、如何與 Anaconda 聯合使用。
  • Jupyter Notebook 使用小技巧
    Jupyter Notebook 是一種基於網絡的交互式工具,它是機器學習和數據科學經常使用的工具。它可以被用於快速測試,作為報告工具,甚至作為複雜的學習材料在在線課程中使用。數據科學愛好者 Shadab Hussain 分享了 Jupyter Notebook 使用的一些小技巧。
  • 樹莓派打造python在線編程工具Jupyter Notebook
    樹莓派可以安裝很多好玩的應用,這些引用都可以使用docker安裝,之前介紹過docker,如果用樹莓派做伺服器,一定要安裝docker,超級方便。樹莓派安裝docker以及簡單使用這次介紹一個python在線ide工具jupyter Notebook,也是用docker安裝的。
  • 15個應該掌握的Jupyter Notebook 使用技巧
    計算單元的執行時間我們可以在一個jupyter notebook單元的開頭使用%%time命令來計算執行該單元的時間。2. 進度條可以使用python外部庫創建進度條,它可以實時更新代碼運行的進度。它讓用戶知道正在運行的代碼腳本的狀態。你可以在這裡獲得相關的庫Github庫。
  • jupyter notebook在線平臺和教程
    jupyter logo很多同學都在了解學習python過程中,都聽過jupyter和jupyter notebook的大名,但默認的python安裝是不包含jupyter的,因此很多人還不了解jupyter是幹什麼用的
  • jupyter notebook 一個編程交互式的記事本
    好奇計算機語言,近期想學一些東西,想要留下一些記錄什麼的供自己以後翻閱,想想還是將每日所操作的記錄下來:在利用python進行大數據分析一書中看到了jupyter這個工具,就照著做了,感覺還可以可以代替繼承的開發環境,對於感興趣的來說新奇有夠用
  • Jupyter Notebook 的 28 個技巧(下)
    執行 shell 命令從你的 notebook 中執行 shell 命令是很簡單的。你可以直接使用下面的命令去檢查當前文件夾中可用的數據集:!jupyter-notebook-latexMarkdown 在 notebook 中是很重要的一部分內容,所以不要忘記去使用它豐富的表現能力。19.
  • 手把手教你用 Jupyter Notebook 分析安全事件(一)
    Jupyter Notebook 項目是 IPython Notebook 庫的演變,開發這個庫的主要目的是為了通過可共享的 Web 文檔實現科學操作和高級數據分析功能,從而增強默認的 python 交互控制臺。
  • 快速入門 Jupyter notebook
    本文會通過一個簡單的數據分析例子來介紹 Jupyter notebook 的使用方法。這裡的例子就是給定一個自 1955 年發布以來,一共 50 年時間的美國 500 家公司的數據,任務是分析這些公司的利潤變化過程。1.
  • Jupyter NoteBook 安裝以及常用配置
    pip安裝如果只安裝了一個Python版本,那直接在命令行中使用以下命令就可以了python -m pip install--upgrade pip # 如果沒有pip 則安裝,如果有則更新pip install jupyter # 安裝 jupyter包如果安裝了多個Python版本,則根據設置的Python安裝別名進行安裝在Python2 和Python3共存的前提下
  • 上手jupyter notebook神器
    一、簡介Jupyter Notebook是一個開源的 Web 應用,能夠讓你創建、分享包含可執行代碼、可視化結構和文字說明的文檔。Jupyter Notebook的應用非常廣泛,它可以用在數據清理與轉換、數字模擬、統計模型、數據可視化、機器學習等方面。Jupyter Notebook非常活躍於深度學習領域。在項目的實驗測試階段,它相比於用 py 文件來直接編程更方便。
  • Jupyter Notebook——也許你總在使用她,但也許你從未嘗試過去了解她?
    前言:你應該去了解並掌握正確滴打開和使用她的姿勢!點擊這裡你可以查看jupyter notebook支持的所有語言分享便捷:可以使用電子郵件、Dropbox、GitHub和Jupyter Notebook Viewer與他人共享。
  • 大神教小白搭建Jupyter Notebook環境
    notebook,但發現在notebook中的python其實並沒有運行在指定的虛擬環境引擎上,只需要安裝nb_conda_kernels插件即可解決,注意是在base環境下安裝,而不是虛擬環境(base) conda install nb_conda_kernels安裝成功後,在kernel -> change
  • Jupyter Notebook介紹、安裝及配置教程
    Jupyter Notebook(此前被稱為 IPython notebook)是一個交互式筆記本,支持運行 40 多種程式語言。Jupyter Notebook 的本質是一個 Web 應用程式,便於創建和共享文學化程序文檔,支持實時代碼,數學方程,可視化和 markdown。用途包括:數據清理和轉換,數值模擬,統計建模,機器學習等等。二、組成部分1.
  • python小白學習之anaconda的安裝與Jupyter環境配置
    隨著機器學習和人工智慧的崛起,python被越來越多的程序猿使用。python非常易用,但是包管理和Python不同版本問題卻讓人非常頭疼。Anaconda有著強大的包管理與環境管理功能,將python和許多常用的package打包。本文主要介紹linux下Anaconda的安裝與Jupyter環境配置。
  • 一款容易上手jupyter notebook神器
    我把用戶畫像分析出來!五條:Python爬蟲+數據可視化  看看全球最美Top100女神?.一、簡介Jupyter Notebook是一個開源的 Web 應用,能夠讓你創建、分享包含可執行代碼、可視化結構和文字說明的文檔。
  • 如何部署Jupyter Notebook用於交互式Python開發?
    如果沒有,可以使用單個命令來添加它:sudo apt-get install python3 -y 接下來,我們需要安裝一個軟體,該軟體允許您使用以下命令為Python創建虛擬環境:sudo apt-get install python3-venv -y 最後,我們必須使用以下命令安裝PIP(用於安裝Python軟體包的工具):sudo
  • python金融風控評分卡模型和數據分析
    《金融現金貸用戶數據分析和畫像》:此課程用python代碼對LendingClub平臺貸款數據分析和用戶畫像,針對銀行,消費金融,現金貸等場景,教會學員用python實現金融信貸申請用戶數據分析。項目採用lendingclub 12萬多條真實信貸數據,包括用戶年收入,貸款總額,分期金額,分期數量,職稱,住房情況等幾十個維度。
  • 安卓運行Jupyter Notebook操作指南,不用電腦也能做數據分析!
    而在Python的使用過程中,最受歡迎的可謂是Jupyter notebook 了,因為它具有以下眾多優點:1 極其適合數據分析( 想像一下如下混亂的場景:你在終端中運行程序,可視化結果卻顯示在另一個窗口中