iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 9
0

在Colab跑我們的TensorFlow,其中要pandas範例來練習。Pandas是個重要且流行的套件(library)是個不錯的工具。


(本篇使用first-steps-with-tensorflow

在Crash course課程中,有說到機器學習有個重要的插件,就是「Pandas」(熊貓們/images/emoticon/emoticon25.gif
Pandas這個套件適合做資料整理與分析,簡單上手,使用標籤和索引可以快速的處理數據,是個好用工具。
而他有兩個特殊的資料結構,叫做DataFrameSeriesDataFrame可以當做資料表,裡面放著要處理的資料,Series則可以看成資料庫的每一行資料。

說明:

(可以操作Quick Introduction to pandas,在Colab中可以進行各種實作)

  • DataFrame

可以視為一個關係型的資料表,裡面包含了已經命名的列,以及多個資料行,也就是Series,而這些資料行的列不一定相同。

Series,它是单一列。DataFrame 中包含一个或多个 Series,每个 Series 均有一个名称。

  • Series

是一個類似陣列的物件,也可以當做資料表內的每一筆資料。由Series組成DataFrame

廢話不多說,來實作看看就知道這些關係囉!

實作:

首先要開始的當然是引用Pandas:

import pandas as pd
pd.__version__

這樣就可以使用pandas(以pd為名)。

接著我們先看一下series怎麼運作:

pd.Series(['San Francisco', 'San Jose', 'Sacramento'])

Series內有個陣列,裡面放著三個城市,這樣的結構,就是完整的Series,夠簡單吧!

我們可以把不同的Series放在同一個DataFrame內,像是我們把資料放在dic中,把城市和人口的資料放入,組成一個新的table(Series)。

city_names = pd.Series(['San Francisco', 'San Jose', 'Sacramento'])
population = pd.Series([852469, 1015785, 485199])

pd.DataFrame({ 'City name': city_names, 'Population': population })

所以會形成表單:

# City name Population
0 San Francisco 852469.0
1 San Jose 1015785.0
2 Sacramento 485199.0

萬一Series彼此的資料數不同呢?會不會產生問題?
答案是不會,因為系統會自動把缺的欄位加上「NA/NaN」。那我們來試看看,在城市後面增加個「睫毛城」。

city_names = pd.Series(['San Francisco', 'San Jose', 'Sacramento', '睫毛城'])
population = pd.Series([852469, 1015785, 485199])

pd.DataFrame({ 'City name': city_names, 'Population': population })

結果會是:

# City name Population
0 San Francisco 852469.0
1 San Jose 1015785.0
2 Sacramento 485199.0
3 睫毛城 NaN

你會發現,如果用手輸入會很蠢,因為我們的數據都是幾萬幾十萬筆,用手輸入會打到天荒地老,因此也可以用外部輸入資料的方式:

california_housing_dataframe = pd.read_csv("https://download.mlcc.google.cn/mledu-datasets/california_housing_train.csv", sep=",")
california_housing_dataframe.describe()

資料表呈現節錄如下:

longitude latitude housing_median_age total_rooms total_bedrooms population households median_income median_house_value
count 17000.000000 17000.000000 17000.000000 17000.000000 17000.000000 17000.000000 17000.000000 17000.000000 17000.000000
mean -119.562108 35.625225 28.589353 2643.664412 539.410824 1429.573941 501.221941 3.883578 207300.912353

可以看得出來很方便的整理資料!!

而在呈現方面,可以使用california_housing_dataframe.head()california_housing_dataframe.hist('housing_median_age')......,這些都可以讓資料呈現有所變化。其餘詳細資料可以在Colab裡面玩耍與觀察,這邊就不詳細說明!


睫毛之聲:
Pandas真的是好用的工具!善用的話可以很容易的整理與呈現資料


上一篇
【Day8】休息:分享網站
下一篇
【Day10】2rd:DataFrame和Series的更多應用
系列文
Machine Learning(by Google)30

尚未有邦友留言

立即登入留言