R與Python手牽手:資料框的構建、讀取與基本描述
在雙11免費Get新知識的人,才是最會花錢的人,也將是最會賺錢的人!
別的專場拼消費,唯有天善學院,投資你的未來!
▲詳情點選▲
作者:黃天元,復旦大學博士在讀,目前研究涉及文字挖掘、社交網路分析和機器學習等。希望與大家分享學習經驗,推廣並加深R語言在業界的應用。
任務目標
這次任務目標是:1.在程式設計環境內建立資料框;2.在本地匯入csv檔案;3.進行最基本的資料描述性分析。在開始上程式碼之前,有必要對資料框這種資料結構進行一定的解釋。資料框就是典型的關係型資料庫的資料儲存形式,每一行是一條記錄,每一列是一個屬性,最終構成表格的形式,這是資料科學家必須熟悉的最典型的資料結構。
Python
在Python中要使用資料框的型別,需要載入pandas模組。
#載入包 import pandas as pd
構建資料框
data = {'year': [2010, 2011, 2012, 2010, 2011, 2012, 2010, 2011, 2012], 'team': ['FCBarcelona', 'FCBarcelona', 'FCBarcelona', 'RMadrid', 'RMadrid', 'RMadrid', 'ValenciaCF', 'ValenciaCF', 'ValenciaCF'], 'wins': [30, 28, 32, 29, 32, 26, 21, 17, 19], 'draws': [6, 7, 4, 5, 4, 7, 8, 10, 8], 'losses': [2, 3, 2, 4, 2, 5, 9, 11, 11] } football = pd.DataFrame( data, columns=['year', 'team', 'wins', 'draws', 'losses']) football .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; }
讀取csv檔案
下面的csv格式資料可以在以下網址取得:
https://github.com/DataScienceUB/introduction-datascience-python-book
edu = pd.read_csv('G:/Py/introduction-datascience-python-book-master/files/ch02/educ_figdp_1_Data.csv', na_values=':', usecols=['TIME', 'GEO', 'Value']) #na_values是把“:”符號認為是缺失值的意思 edu .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; }
.......... .........
384 rows × 3 columns
資料基本描述
#取前幾行 edu.head() .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right;
#取後幾行 edu.tail() .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right;
#觀察列名稱 edu.columns
Index(['TIME', 'GEO', 'Value'], dtype='object')
#觀察行名稱 edu.index
RangeIndex(start=0, stop=384, step=1)
#彙總統計 edu.describe()
.dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; }
R
R是面向資料的一門語言,自帶資料框型別(data.frame)。不過我們的介紹將會用tidyverse框架下的dplyr介紹,因為它在處理很多問題上更為便捷。
#載入包 pacman::p_load(tidyverse)
構建資料框
year=c(2010, 2011, 2012, 2010, 2011, 2012, 2010, 2011, 2012) team=c('FCBarcelona', 'FCBarcelona', 'FCBarcelona', 'RMadrid', 'RMadrid', 'RMadrid', 'ValenciaCF', 'ValenciaCF', 'ValenciaCF') wins=c(30, 28, 32, 29, 32, 26, 21, 17, 19) draws=c(6, 7, 4, 5, 4, 7, 8, 10, 8) losses=c(2, 3, 2, 4, 2, 5, 9, 11, 11) football = tibble(year,team,wins,draws,losses) football
讀取csv檔案
read_csv('G:/Py/introduction-datascience-python-book-master/files/ch02/educ_figdp_1_Data.csv', na=":") %>%#na的設定時把“:”認作缺失值的意思 select(TIME,GEO,Value)-> edu edu Parsed with column specification: cols( TIME = col_integer(), GEO = col_character(), INDIC_ED = col_character(), Value = col_double(), `Flag and Footnotes` = col_character() )
......... .........
資料基本描述
#取前幾行 edu %>% head
#取後幾行 edu %>% tail
#觀察列名稱 edu %>% colnames
#觀察行名稱 edu %>% rownames
(結果太長,在此不展示了~~)
#彙總統計 edu %>% summary TIME GEO Value Min. :2000 Length:384 Min. :2.880 1st Qu.:2003 Class :character 1st Qu.:4.620 Median :2006 Mode :character Median :5.060 Mean :2006 Mean :5.204 3rd Qu.:2008 3rd Qu.:5.660 Max. :2011 Max. :8.810 NA's :23
比較分析
首先,從呼叫的包來說,python沒有pandas是不能使用dataframe資料結構的,R則自帶有data.frame資料結構,但是在tidyverse生態中的tibble則是增強型的data.frame,能夠滿足更加便捷的功能。其次,就構造資料框而言,python用了字典來構造(字典即鍵-值對),其中每個值對應的是一個列表(注意,R和python的列表概念大不相同);在R中,首相通過構造每個屬性的向量,然後把同等長度的向量合併,從而構造資料框。再次,讀取csv檔案的時候,兩者其實功能相近,不過pd.read_csv可以在函式中選擇要讀的列,而在R中我是先讀了全資料框再選擇這些列。另外需要注意的是,python把缺失值表示為NaN,而R中則是NA。最後,我們發現在描述性資料分析中,兩種語言也是大同小異。值得注意的是,python中行名稱開頭是0,而R則是1.python沿用了計算機的語言,所有開始都是0;而R則更加符合人類的直觀理解,開始的一行標註為第1行。
需要提到的是,我在R中用了不一樣的程式設計風格,與傳統的R程式設計也有所不同。比如用“->”來給右邊的變數賦值,很多計算機程式設計師可能會有意見,認為賦值就是右邊的東西給左邊,其實人類的思考模式向來就是從左到右的,比如“1 + 1 = 2”,再加上管道操作“%>%”也是單向的,這種靈活的程式設計模式讓資料科學家更加自由而富有靈性地在環境中操縱資料。
今日
爆款
如何搭建金融信貸風控中的機器學習模型4折優惠等著你 掃描 下圖二維碼 即可學習 點選 閱讀原文 加入SVIP可免費學習