在上一篇文章中足删,我們通過決策樹模型寿谴,對機器學習有了初步的認識;但是在整個數(shù)據(jù)分析的生命周期中失受,建模并不是第一位的讶泰,當我們拿到數(shù)據(jù)后,首先要對數(shù)據(jù)進行觀察拂到、解讀峻厚,從中發(fā)現(xiàn)我們所需要的特征變量,本文將簡要介紹如何通過Pandas對數(shù)據(jù)進行觀察與探索谆焊。
Pandas
就像我們前面提到的惠桃,任何機器學習、數(shù)據(jù)分析的第一步都是要先了解數(shù)據(jù)、解讀數(shù)據(jù)辜王, Pandas 是基于NumPy 的一種工具劈狐,該工具是為了解決數(shù)據(jù)分析任務而創(chuàng)建的。它納入了大量庫和一些標準的數(shù)據(jù)模型呐馆,提供了高效地操作大型數(shù)據(jù)集所需的工具肥缔。
有了Pandas,我們能快速便捷地處理數(shù)據(jù)汹来,你很快就會發(fā)現(xiàn)续膳,它是使Python成為強大而高效的數(shù)據(jù)分析環(huán)境的重要因素之一。
通常我們在使用中將pandas縮寫為pd
收班,而Numpy縮寫為np
import pandas as pd
import numpy as np
Pandas中最重要的部分莫過于DataFrame了坟岔,有過數(shù)據(jù)庫基礎的讀者可以將它視為一個Excel的Sheet或SQL數(shù)據(jù)表。
Pandas 提供了許多強大的方法供您進行數(shù)據(jù)操作摔桦。
例如社付,接下來我們將演示如何使用Pandas觀察澳大利亞墨爾本的房價數(shù)據(jù);Kaggle提供了一套愛荷華州的房價數(shù)據(jù)供您練習邻耕,您可以稍后在練習環(huán)境中回顧本文學到的知識鸥咖。
示例數(shù)據(jù)路徑在:../input/melbourne-housing-snapshot/melb_data.csv
我們通過下面的代碼來加載數(shù)據(jù):
# 將路徑保存到變量,防止多處硬編碼
melbourne_file_path = '../input/melbourne-housing-snapshot/melb_data.csv'
# 從csv文件中讀取數(shù)據(jù)兄世,保存在名為 melbourne_data的DataFrame中
melbourne_data = pd.read_csv(melbourne_file_path)
# 輸出數(shù)據(jù)的統(tǒng)計信息啼辣,包含無缺數(shù)據(jù)量,最大值御滩、最小值鸥拧、均值、標準差艾恼,四分位數(shù)住涉,下面將會詳細介紹。
melbourne_data.describe()
解釋數(shù)據(jù)
describe輸出了一個8行n列的數(shù)據(jù)表
count
count
行統(tǒng)計了此列共有多少行沒有缺失值钠绍,即:
某列具有缺失值的行 = 總行數(shù) - count;
出現(xiàn)缺失值可能有很多原因舆声,例如調(diào)查1室1廳的房屋時,不會詢問是否有第二個臥室柳爽。
mean
平均值媳握,即是算術(shù)平均值,反應此列特征的一般水平磷脯。
std
標準差蛾找,反應此列數(shù)據(jù)的離散程度,一個較大的標準差赵誓,代表大部分數(shù)值和其平均值之間差異較大打毛;一個較小的標準差柿赊,代表這些數(shù)值較接近平均值。
min幻枉、25%碰声、50%、75%熬甫、max
min max分別是最小值和最大值胰挑。
25%、50%椿肩、75%為四分位數(shù)瞻颂,分位數(shù)是將總體的全部數(shù)據(jù)按大小順序排列后,處于各等分位置的變量值郑象。如果將全部數(shù)據(jù)分成相等的兩部分贡这,它就是中位數(shù);如果分成四等分扣唱,就是四分位數(shù)藕坯。
第一四分位數(shù) (Q1)团南,又稱“較小四分位數(shù)”噪沙,等于該樣本中所有數(shù)值由小到大排列后第25%的數(shù)字。
第二四分位數(shù) (Q2)吐根,又稱“[中位數(shù)]”浮梢,等于該樣本中所有數(shù)值由小到大排列后第50%的數(shù)字萝嘁。
第三四分位數(shù) (Q3),又稱“較大四分位數(shù)”,等于該樣本中所有數(shù)值由小到大排列后第75%的數(shù)字坑傅。
第三四分位數(shù)與第一四分位數(shù)的差距又稱[四分位距](InterQuartile Range,IQR)。
通過四分位數(shù)矾兜,可以看出一個變量的分布情況是左偏寸宵、右偏或?qū)ΨQ分布。
進入練習
點擊下面的網(wǎng)址進入練習題术幔,您可能先要注冊并登錄kaggle
https://www.kaggle.com/kernels/fork/1258954
本練習將測試您讀取數(shù)據(jù)和對數(shù)據(jù)進行統(tǒng)計觀察的能力另萤,對有基礎的讀者來說,這可能很簡單诅挑,但本教程是一個循序漸進的過程四敞,后面將會有更多更深入的數(shù)據(jù)預處理、模型構(gòu)建拔妥、模型改進的練習忿危。
課程中使用了墨爾本的數(shù)據(jù),為了保證練習效果没龙,避免直接抄襲課件铺厨,您必須使用新的數(shù)據(jù)集缎玫,來自愛荷華州的房價數(shù)據(jù)。
在此練習中解滓,你要學習使用Notebook
編碼環(huán)境碘梢,如果您不熟悉,可以觀看一個90秒的介紹視頻(有墻)
首先要將這段初始化代碼運行一下伐蒂,鼠標點進去按Shift+Enter
煞躬,下方顯示 Setup Complete,表示執(zhí)行成功逸邦。
# Set up code checking
from learntools.core import binder
binder.bind(globals())
from learntools.machine_learning.ex2 import *
print("Setup Complete")
如果不執(zhí)行這段代碼恩沛,下面的代碼將無法執(zhí)行,例如:
第一步缕减,加載數(shù)據(jù)
您需要完善下面的代碼雷客,然后按Shift+Enter執(zhí)行代碼,加載數(shù)據(jù)
import pandas as pd
# Path of the file to read
iowa_file_path = '../input/home-data-for-ml-course/train.csv'
# Fill in the line below to read the file into a variable home_data
home_data = pd.read_csv(_)
# Call line below with no argument to check that you've loaded the data correctly
step_1.check()
step_1.check()
會對您的結(jié)果進行檢查桥狡,如果填寫正確搅裙,將會有綠色的Correct
字樣
當然,如果您不知道怎么做裹芝,可以取消下面這段二級提示代碼的注釋部逮,運行它;其中第一級提示hint()
為您講解需要使用什么技術(shù)嫂易,第二級提示Solution
給出了正確的源代碼兄朋,如果您只是需要一點技術(shù)提示,請先看看hint()
的提示是否能夠喚起你的記憶怜械。
# Lines below will give you a hint or solution code
# step_1.hint()
# step_1.solution()
例如:
# Lines below will give you a hint or solution code
step_1.hint()
step_1.solution()
最后颅和,通過本文,我們了解到Pandas的冰山一角缕允,并且掌握了打開kaggle練習題的正確姿勢峡扩,為了避免被噴,以后的文章中不再對這部分重復講解障本。