克服困難,收穫喜悅——第二關,數據結構入門
終於完成了大數據分析學習的第二關學習任務,這期間不僅是知識技能從無到有的過程,也是一個文科生在轉行數據分析時內心從不確定到略有自信,再到剛建立一點自信就被摧毀然後通過攻克一個個困難後重建自信的過程。雖然過程很痛苦,但因為早有心理準備所以學習總結我不想寫成血淚史,而是想用收穫進步後的喜悅放鬆心情來寫,況且回頭想想其中的困難在克服後看來都不算是困難,因為我知道還有更大的坎兒要邁,還有更多的喜悅等著我去收割。好了,吐槽完畢,開始我的學習總結。
一、學習內容
1.書本
《深入淺出統計學》1-4章
《R語言實戰》1-2章
2. 課程
mooc學院《R語言快速入門》第一課
《R語言的介紹及基礎語法》第一課
猴子老師的「從零開始學習大數據」課程第二講。
3.在線資料
知乎上有關數據分析的學習資料,社群內其他學員發分享。
二、學習方法
1.《深入淺出統計學》讀書、做習題,整理筆記。
2.《R語言實戰》先讀書再聽課,聽課後依照書本及課程敲代碼。
3.在線課程:邊聽課邊記筆記,不懂的地方反覆聽,課後將所學內容在RStudio中實踐練習。
三、學習收穫
(一)《深入淺出統計學》1-4章
1.信息可視化——一圖勝千言
餅圖:使類別一目了然並且將頻數較高的一組或幾組能鮮明體現,但比例差別不鮮明時餅圖的優勢就不明顯。
條形圖:相對餅圖而言更精確,更能體現細小的差別。要注意:不是每張條形圖的標度都以0為起點,查看別人繪製的條形圖時要小心這一點,這很容易讓人無視某些數據。
直方圖:外觀和條形圖類似但長方形之間沒有間隔,相比條形圖更能體現分組數值型數據。
累積頻數圖:當原有數據上不斷有新值增加時想要得出累計總和時選用累積頻數圖更直觀。
2.用平均數能迅速找到數據中最具代表性的數值,從而幫助我們快速把握全局。
平均數包括:均值、中位數、眾數。
均值很常用但是當數據中出現異常值時數據會發生偏斜,有偏大異常值時數據向右偏斜,有偏小異常值時數據向左偏斜。
中位數:當偏斜數據產生誤導時,用中間值即中位數來找到數據中的典型值,
眾數:一批數字中最常見的數值,眾數不僅用於數值型數據也用於類別數據,而均值、中位數卻不能。
3.數據分散性和變異性的度量——距、差
看分散性——距:全距、四分位距(對數據集進行比較時能讓我們較少受異常值影響)、十分位距、百分位距。
看變異性——差:用來度量各個數值與均值的平均距離——標準差(把方差開根號即可得到)
標準分:可對不同數據集的數據(不同環境下的相關數據)進行比較,這些數據集的均值和標準差各不相同。P119
4用概率預測未來——評估出現各種結果的可能性
概率的圖形表示:維恩圖、概率樹(更適合表示條件概率)
逆條件概率——貝葉斯定理(在需要求出條件概率,且該條件概率與已知條件概率順序相反時使用 。)p173.
相關事件VS獨立事件(投擲硬幣,連續兩次正面朝上時獨立事件)判斷獨立事件的公式——P(A|B)=P(A)
(二)R語言(1-2章)
1.數據結構(用於存儲數據的對象類型):向量(用函數c ()創建向量)、矩陣(用函數matrix()創建)、數組(用函數array()創建)、數據框(用函數data.frame()創建)、列表(用函數list()創建)。
向量、矩陣、數組,都只能存儲一種模式的數據,只是維度由一維到二維再到大於二維。
數據框(類似於excle表格,非常適合做數據分析)和列表都可以存儲多種模式的數據,不同點在於數據框每列數據長度必須一致而列表則不需要。
(三)RStudio中的實踐過程
1.向量長度及訪問向量中的元素
2.創建矩陣
3.手動輸入數據框
4.對數據框的操作
腳本內容
運行結果
5.導入excle數據
兩種操作方式
(1) 將excle轉換成CSV文件,用函數read.table()導入,這也是書中推薦的常用方法。
需要注意的是:
輸入文件地址時在R語言中用 「/」, 而我們平時在Windows中默認用「」,我的做法是把地址複製過來後修改,有的人說可以把「」改為「\」。
使用函數str()之後,可以看到姓名、糖尿病類型、病情都是因子,因為read.table()函數默認把字元變數轉變為因子。要改變這種情況,可以加入stringsAsFactors = FALSE。
(2) 用xlsx導入Excle表
首先要安裝幾個包:xlsx,xlsxjars,rJava,並且安裝了Java和JAVA環境。
遇到的問題是rJava無法載入:(Google搜索後找出了解決辦法http://blog.csdn.net/sinat_26917383/article/details/50867851)
解決後可以正常導入excle了
代碼腳本
運行結果如下
6.導出數據
可以用write.table()函數導出CSV文件
(1)使用當前目錄
運行 結果如下
(2)用file=,給出輸出路徑,將文件保存到指定地址中,且不加行名,字元串用引號
運行結果如下
write.table函數語法:
write.table (x, file ="", sep
="", row.names =TRUE, col.names =TRUE, quote =TRUE)x:需要導出的數據
file:導出的文件路徑
sep:分隔符,默認為空格(" "),也就是以空格為分割列
row.names:是否導出行序號,默認為TRUE,也就是導出行序號
col.names:是否導出列名,默認為TRUE,也就是導出列名
quote:字元串是否使用引號表示,默認為TRUE,也就是使用引號表示
例如:將數據框patientdata輸出為.csv文件
write.table(patientdata,file="patientdada.csv",sep =
",") patientdata.csv將保存在R的當前目錄下,當不加sep= ", "時,輸出的數據會在同一個單元格里,因此要加「,」還可以用write.xlsx()將對象輸出到excle中,但要注意write.xlsx()是xlsx包中的函數,所以先要載入xlsx包
運行結果如下
(四)第二關實踐中總結到的一些技巧和經驗。
1.向量不僅可以進行四則運算,還可以邏輯運算用「==」實現。
2.賦值的操作符「=」和「<-」,推薦使用第二種,「<-」的快捷鍵是Alt鍵加「-」,「=」不僅賦值還可以參數引用。
3.用「$」+列名,可以取出某一列。
4.可以用簡寫,TRUE簡寫為T,FALSE簡寫為F。
5.需要用雙引號時不要忘記加上,如install.packages("xlsx")
能夠正常執行,然而Install.packages(xlsx) 就會報錯。6.注意輸入符號時區分全形和半形,尤其是在輸入中文後要切換輸入法。
7.注意不要輸錯英文詞,尤其是輸入文件名稱或變數名稱時。
推薦閱讀:
※多組時間序列預測
※R語言4月到6月全職學習計劃
※Kaggle數據分析——Titanic
※Kindle是否值得包月
※阿里數據招人啦
TAG:數據分析 |