作為從事數(shù)據(jù)相關(guān)工作的我們,,平時接觸的更多的是一張有板有眼的數(shù)據(jù)表格,,在這里我們就叫作數(shù)據(jù)框。在Python中可以通過pandas模塊的DataFrame函數(shù)構(gòu)造數(shù)據(jù)框,,而R語言則是data.frame創(chuàng)建數(shù)據(jù)框,。接下來我們將對比Python和R語言如下幾個方面的應(yīng)用: 1、數(shù)據(jù)框的構(gòu)造 在Python中,可以借助于列表,、元組,、字典進(jìn)行手工構(gòu)建數(shù)據(jù)框,我們用例子說明: 通過列表創(chuàng)建數(shù)據(jù)框 發(fā)現(xiàn),,這樣創(chuàng)建數(shù)據(jù)框的話,,沒有變量名稱。該如何創(chuàng)建的時候加上列名稱呢,? 是的,,可以運(yùn)用DataFrame函數(shù)中的columns參數(shù)給數(shù)據(jù)框的每列添加名稱,如果你需要給行加上索引名稱,,你可以使用index參數(shù),。 通過字典創(chuàng)建數(shù)據(jù)框 發(fā)現(xiàn)輸出結(jié)果中列名稱順序與構(gòu)造時的數(shù)據(jù)不一致,這是因?yàn)樽值洳⒎鞘且环N序列,,而是一種特殊的鍵值對關(guān)系的對象,。如果你需要按照指定的列順序排列,仍然可以通過columns參數(shù)實(shí)現(xiàn),。 在R語言中,,構(gòu)造數(shù)據(jù)框的方法就相對單一一些了,只需要往data.frame函數(shù)傳入向量對象即可,。 2,、數(shù)據(jù)的讀入 在更多的場景下我們是讀取外部數(shù)據(jù),,然后基于外部數(shù)據(jù)進(jìn)行數(shù)據(jù)分析,、可視化、數(shù)據(jù)挖掘等研究,。這里跟大家介紹一下文本文件,、電子表格和MySQL數(shù)據(jù)庫的讀取,。 文本文件的讀取 在pandas模塊中有read_table和read_csv兩個函數(shù)讀取常見的文本文件,這里就以txt和csv文件為例,,對比Python和R語言的讀取,。 read_table和read_csv兩個函數(shù)都可以讀文本文件數(shù)據(jù),區(qū)別在于默認(rèn)的sep參數(shù)不一致,,read_table默認(rèn)以制表符Tab鍵為字段間的間隔符,,而read_csv默認(rèn)以逗號為字段間的間隔符。 由于原始數(shù)據(jù)文件books.txt沒有字段名稱,,故設(shè)置header=None,,并用names參數(shù)給表字段加上名稱,usecols則是設(shè)置讀取原始數(shù)據(jù)的哪些列,。下面再來看看使用read_table函數(shù)讀取csv文件,。 在R語言中,也有兩個常用的函數(shù)read.table和read.csv函數(shù)讀取txt和csv文件,,不妨就用read.csv函數(shù)讀取上面的co2.csv數(shù)據(jù)集: 電子表格的讀取 pandas模塊中read_excel函數(shù)可以非常方便的讀取外部的xls和xlsx電子表格: 在R語言中,,基礎(chǔ)包就無法讀取電子表格數(shù)據(jù)了,這里強(qiáng)烈推薦R的用戶使用readxl包讀取Excel文件,。但需要注意的一點(diǎn)是,,數(shù)據(jù)的路徑一定不能包含中文,連文件名稱也不可以,。 MySQL數(shù)據(jù)庫數(shù)據(jù)的讀取 使用Python讀取MySQL數(shù)據(jù)庫,,還需要結(jié)合pymysql模塊一起使用。這里我們就在本地的MySQL創(chuàng)建一個數(shù)據(jù)集,,并用Python和R實(shí)現(xiàn)數(shù)據(jù)庫數(shù)據(jù)的讀取,。 在MySQL中創(chuàng)建數(shù)據(jù) 運(yùn)用Python與MySQL創(chuàng)建連接,并讀取數(shù)據(jù); 運(yùn)用R與MySQL創(chuàng)建連接,并讀取數(shù)據(jù)(需要下載RMySQL包),; 3,、數(shù)據(jù)的概覽信息 外部數(shù)據(jù)讀取到Python或R語言中,往往對數(shù)據(jù)需要做一些大概的了解,,如最小值,、最大值、平均值,、各變量都是哪些數(shù)據(jù)類型,、數(shù)據(jù)量如何等。我們來看看這些問題是如何解決的: shape屬性和columns屬性返回?cái)?shù)據(jù)集的行列數(shù)及變量名,; describe屬性可以對數(shù)值型變量(include=['number'])和離散型變量(include=['object'])進(jìn)行描述性統(tǒng)計(jì),; info屬性則對數(shù)據(jù)集的變量類型進(jìn)行簡單的描述。 在R語言中,,上面關(guān)于數(shù)據(jù)的概覽信息,,可以對應(yīng)到如下的代碼: dim函數(shù)和names函數(shù),; summary函數(shù)進(jìn)行統(tǒng)計(jì)描述; str函數(shù)對數(shù)據(jù)集的變量類型進(jìn)行描述,。 今天我們的內(nèi)容就介紹到這邊,,歡迎大家拍磚。下期我們來聊聊pandas模塊的數(shù)據(jù)框DataFrame第二部分,。主要涉及變量,、觀測的篩選;變量的重命名,;數(shù)據(jù)類型的變換,;排序和數(shù)據(jù)集的去重 |
|