Python × 資料分析

Pandas


Kristen Chan

Agenda


  • Structure
  • Reading Files
  • Inspect
  • Descriptive Statistics
  • Reshaping
  • Selection
  • Setting Value
  • Insert and Drop
  • Missing Value
  • Combine
  • Output File
  • Reshaping II
  • Grouping
  • Binning
  • Duplicate

Note

  • 基於 Numpy
  • 用於數據分析,提供容易操作的資料結構及分析工具
  • 匯入 Pandas
In [1]:
import pandas as pd

也一併匯入 Numpy

In [2]:
import numpy as np

Pandas


Structure

Data Frame 其實是源自於 R 語言

DataFrame Reference

Reference : https://github.com/pandas-dev/pandas

Structure


  • Series

    • 類似 numpy 中的 1d-ndarray
    • 每個元素都有各自的索引值(標籤)
    • 底層是 ndarray
  • DataFrame

    • 類似 numpy 中的 2d-ndarray
    • pd.Series 組成
    • 可儲存不同類型的資料
    • 有欄、列索引值(標籤)
  • Panel

    • 三維數據結構
    • 有資料集、欄、列索引值(標籤)

Structure


Create a Series

Method1. 1D-Ndarray to pd.Series

In [3]:
Taipei = np.array([17.0,8.3,20.1,22.6,27.0,27.8,30.1,30.3,29.4,27.1,24.0,17.5,])
type(Taipei)
Out[3]:
numpy.ndarray
In [4]:
print(Taipei)
[ 17.    8.3  20.1  22.6  27.   27.8  30.1  30.3  29.4  27.1  24.   17.5]

Structure


Create a Series

Method1. 1D-Ndarray to pd.Series

In [5]:
Taipei_series = pd.Series(Taipei)
type(Taipei_series)
Out[5]:
pandas.core.series.Series
In [6]:
print(Taipei_series)
0     17.0
1      8.3
2     20.1
3     22.6
4     27.0
5     27.8
6     30.1
7     30.3
8     29.4
9     27.1
10    24.0
11    17.5
dtype: float64

Structure


Create a Series

Method1. 1D-Ndarray to pd.Series,加入 index

In [7]:
month = [ 'FEB', 'JAN', 'MAR', 'APR', 'MAY', 'JUN',
          'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC']
In [8]:
Taipei_series = pd.Series( Taipei ,
                           index = month )
In [9]:
print(Taipei_series)
FEB    17.0
JAN     8.3
MAR    20.1
APR    22.6
MAY    27.0
JUN    27.8
JUL    30.1
AUG    30.3
SEP    29.4
OCT    27.1
NOV    24.0
DEC    17.5
dtype: float64

Structure


Create a Series

Method2. Dictionary to pd.Series

In [10]:
Taipei = {'FEB': 17.0, 'JAN': 8.3, 'MAR': 20.1, 'APR': 22.6, 'MAY': 27.0, 'JUN': 27.8,
          'JUL': 30.1, 'AUG': 30.3, 'SEP': 29.4, 'OCT': 27.1, 'NOV': 24.0, 'DEC': 17.5}
type(Taipei)
Out[10]:
dict
In [11]:
print(Taipei)
{'FEB': 17.0, 'JAN': 8.3, 'MAR': 20.1, 'APR': 22.6, 'MAY': 27.0, 'JUN': 27.8, 'JUL': 30.1, 'AUG': 30.3, 'SEP': 29.4, 'OCT': 27.1, 'NOV': 24.0, 'DEC': 17.5}

Structure


Create a Series

Method2. Dictionary to pd.Series

In [12]:
Taipei_series = pd.Series(Taipei)
type(Taipei_series)
Out[12]:
pandas.core.series.Series
In [13]:
print(Taipei_series)
APR    22.6
AUG    30.3
DEC    17.5
FEB    17.0
JAN     8.3
JUL    30.1
JUN    27.8
MAR    20.1
MAY    27.0
NOV    24.0
OCT    27.1
SEP    29.4
dtype: float64

Dictionary 的 Key 會變成 index

Structure


Create a Series

Method3. DataFrame 中的某一行或某一列

後面補充

Structure


Create a DataFrame

Method1. 2D-Ndarray to pd.DataFrame

In [14]:
Temperature = np.array([[17.0,8.3,20.1,22.6,27.0,27.8,30.1,30.3,29.4,27.1,24.0,17.5],
                        [21.1,21.7,22.9,25.7,28.4,28.4,29.4,30.2,29.7,28.9,26.9,21.6]])
type(Temperature)
Out[14]:
numpy.ndarray
In [15]:
print(Temperature)
[[ 17.    8.3  20.1  22.6  27.   27.8  30.1  30.3  29.4  27.1  24.   17.5]
 [ 21.1  21.7  22.9  25.7  28.4  28.4  29.4  30.2  29.7  28.9  26.9  21.6]]

Structure


Create a DataFrame

Method1. 2D-Ndarray to pd.DataFrame

In [16]:
Temperature_dataframe = pd.DataFrame(Temperature)
type(Temperature_dataframe)
Out[16]:
pandas.core.frame.DataFrame
In [17]:
print(Temperature_dataframe)
     0     1     2     3     4     5     6     7     8     9     10    11
0  17.0   8.3  20.1  22.6  27.0  27.8  30.1  30.3  29.4  27.1  24.0  17.5
1  21.1  21.7  22.9  25.7  28.4  28.4  29.4  30.2  29.7  28.9  26.9  21.6

Structure


Create a DataFrame

Method1. 2D-Ndarray to pd.DataFrame

加入 index 及 column name

In [18]:
Temperature_dataframe = pd.DataFrame(Temperature,
                                     index=['Taipei','Kaohsiung'],
                                     columns = month)
type(Temperature_dataframe)
Out[18]:
pandas.core.frame.DataFrame
In [19]:
print(Temperature_dataframe)
            FEB   JAN   MAR   APR   MAY   JUN   JUL   AUG   SEP   OCT   NOV  \
Taipei     17.0   8.3  20.1  22.6  27.0  27.8  30.1  30.3  29.4  27.1  24.0   
Kaohsiung  21.1  21.7  22.9  25.7  28.4  28.4  29.4  30.2  29.7  28.9  26.9   

            DEC  
Taipei     17.5  
Kaohsiung  21.6  

Structure


Create a DataFrame

Method2. Dictionary to pd.DataFrame

In [20]:
Temperature = {'FEB': [17.0,21.1], 'JAN': [8.3,21.7], 'MAR': [20.1,22.9], 'APR': [22.6,25.7], 
               'MAY': [27.0,28.4], 'JUN': [27.8,28.4],'JUL': [30.1,29.4], 'AUG': [30.3,30.2],
               'SEP': [29.4,29.7], 'OCT': [27.1,28.9], 'NOV':[24.0,26.9], 'DEC': [17.5,21.6]}
type(Temperature)
Out[20]:
dict
In [21]:
print(Temperature)
{'FEB': [17.0, 21.1], 'JAN': [8.3, 21.7], 'MAR': [20.1, 22.9], 'APR': [22.6, 25.7], 'MAY': [27.0, 28.4], 'JUN': [27.8, 28.4], 'JUL': [30.1, 29.4], 'AUG': [30.3, 30.2], 'SEP': [29.4, 29.7], 'OCT': [27.1, 28.9], 'NOV': [24.0, 26.9], 'DEC': [17.5, 21.6]}

Structure


Create a DataFrame

Method2. Dictionary to pd.DataFrame

In [22]:
Temperature_dataframe = pd.DataFrame(Temperature)
type(Temperature_dataframe)
Out[22]:
pandas.core.frame.DataFrame
In [23]:
print(Temperature_dataframe)
    APR   AUG   DEC   FEB   JAN   JUL   JUN   MAR   MAY   NOV   OCT   SEP
0  22.6  30.3  17.5  17.0   8.3  30.1  27.8  20.1  27.0  24.0  27.1  29.4
1  25.7  30.2  21.6  21.1  21.7  29.4  28.4  22.9  28.4  26.9  28.9  29.7

Dictionary 的 Key 會變成 column name

Structure


Create a DataFrame

Method2. Dictionary to pd.DataFrame

依照想要的 column name 排序

In [24]:
Temperature_dataframe = pd.DataFrame(Temperature,
                                     columns = month)
type(Temperature_dataframe)
Out[24]:
pandas.core.frame.DataFrame
In [25]:
print(Temperature_dataframe)
    FEB   JAN   MAR   APR   MAY   JUN   JUL   AUG   SEP   OCT   NOV   DEC
0  17.0   8.3  20.1  22.6  27.0  27.8  30.1  30.3  29.4  27.1  24.0  17.5
1  21.1  21.7  22.9  25.7  28.4  28.4  29.4  30.2  29.7  28.9  26.9  21.6

Structure


Create a DataFrame

Method2. Dictionary to pd.DataFrame

加入 index

In [26]:
Temperature_dataframe = pd.DataFrame(Temperature,
                                     columns = month,
                                     index=['Taipei','Kaohsiung'])
type(Temperature_dataframe)
Out[26]:
pandas.core.frame.DataFrame
In [27]:
print(Temperature_dataframe)
            FEB   JAN   MAR   APR   MAY   JUN   JUL   AUG   SEP   OCT   NOV  \
Taipei     17.0   8.3  20.1  22.6  27.0  27.8  30.1  30.3  29.4  27.1  24.0   
Kaohsiung  21.1  21.7  22.9  25.7  28.4  28.4  29.4  30.2  29.7  28.9  26.9   

            DEC  
Taipei     17.5  
Kaohsiung  21.6  

Note

Create Demo Data -- Temperature_dataframe

In [28]:
Temperature = {'FEB': [17.0,21.1,'Good'], 'JAN': [8.3,21.7,'Good'], 'MAR': [20.1,22.9,'Bad'],
               'APR': [22.6,25.7,'Bad'],  'MAY': [27.0,28.4,'Bad'], 'JUN': [27.8,28.4,'Good'],
               'JUL': [30.1,29.4,'Bad'],  'AUG': [30.3,30.2,'Bad'], 'SEP': [29.4,29.7,'Good'], 
               'OCT': [27.1,28.9,'Bad'],  'NOV':[24.0,26.9,'Good'], 'DEC': [17.5,21.6,'Good']}
In [29]:
Temperature_dataframe = pd.DataFrame(Temperature, columns = month)
print(Temperature_dataframe)
    FEB   JAN   MAR   APR   MAY   JUN   JUL   AUG   SEP   OCT   NOV   DEC
0    17   8.3  20.1  22.6    27  27.8  30.1  30.3  29.4  27.1    24  17.5
1  21.1  21.7  22.9  25.7  28.4  28.4  29.4  30.2  29.7  28.9  26.9  21.6
2  Good  Good   Bad   Bad   Bad  Good   Bad   Bad  Good   Bad  Good  Good

Note

Create Demo Data -- Temperature_dataframe2

可包含不同類型的資料

In [30]:
Taipei = [17.0,8.3,20.1,22.6,27.0,27.8,30.1,30.3,29.4,27.1,24.0,17.5]
Kaohsiung = [21.1,21.7,22.9,25.7,28.4,28.4,29.4,30.2,29.7,28.9,26.9,21.6]
Quality = ['Good','Good','Bad','Bad','Bad','Good','Bad','Bad','Good','Bad','Good','Good']

Temperature2 = { 'Taipei' : Taipei ,
                'Kaohsiung' : Kaohsiung ,
                'Quality' : Quality }
In [31]:
Temperature_dataframe2 = pd.DataFrame(Temperature2, index = month)
print(Temperature_dataframe2)
     Kaohsiung Quality  Taipei
FEB       21.1    Good    17.0
JAN       21.7    Good     8.3
MAR       22.9     Bad    20.1
APR       25.7     Bad    22.6
MAY       28.4     Bad    27.0
JUN       28.4    Good    27.8
JUL       29.4     Bad    30.1
AUG       30.2     Bad    30.3
SEP       29.7    Good    29.4
OCT       28.9     Bad    27.1
NOV       26.9    Good    24.0
DEC       21.6    Good    17.5

Pandas


Reading Files

Reading Files


  • .read_csv( )
    讀取 csv 格式資料

  • .read_excel( )
    讀取 excel 資料

  • .read_json( )
    讀取 JSON 格式資料

Reading Files


Note

檢查目前所在目錄

In [32]:
import os
os.getcwd()
Out[32]:
'/Users/hsinyu/Desktop/Python資料分析/Slide'

Reading Files


Note

Reading Files


csv Files

2002 - 2013 年國民出國目的地人數統計

Reference : 政府開放資料 http://data.gov.tw/node/7325

In [33]:
Aboard = pd.read_csv('/Users/hsinyu/Desktop/Python資料分析/Data/Aboard.csv',encoding='big5')
In [34]:
Aboard.head()
Out[34]:
Continent Country 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013
0 ASIA 香港 Hong Kong 2418872 1,869,069 2,559,705 2,807,027 2,993,317 3,030,971 2,851,170 2,261,001 2,308,633 2,156,760 2,021,212 2,038,732
1 ASIA 大陸 Mainland China 1 44 - - - - 188,744 1,516,087 2,424,242 2,846,572 3,139,055 3,072,327
2 ASIA 日本 Japan 797460 731,330 1,051,954 1,180,406 1,214,058 1,280,853 1,309,847 1,113,857 1,377,957 1,136,394 1,560,300 2,346,007
3 ASIA 韓國 Korea 120208 179,893 298,325 368,206 396,705 457,095 363,122 388,806 406,290 423,266 532,729 518,528
4 ASIA 新加坡 Singapore 190455 125,491 160,088 184,926 204,834 189,835 167,479 137,348 166,126 207,808 241,893 297,588

Reading Files


xlsx Files

100-104 年各縣市消防人力人數統計

Reference : 內政部統計查詢網 http://statis.moi.gov.tw/micst/stmain.jsp?sys=100

In [35]:
Fire = pd.read_excel('/Users/hsinyu/Desktop/Python資料分析/Data/Fire.xlsx')
In [36]:
Fire.head()
Out[36]:
年度 區域 未滿25歲 25-29歲 30-34歲 35-39歲 40-44歲 45-49歲 50-54歲 55-59歲 60-64歲 65歲以上
0 100年 新北市 1833 244 263 880 540 163 93 89 29 15 5 0
1 100年 臺北市 1424 220 194 329 435 267 132 166 93 19 8 1
2 100年 桃園市 905 110 199 311 211 107 73 80 28 4 2 0
3 100年 臺中市 974 117 136 266 220 136 116 145 59 12 1 0
4 100年 臺南市 841 78 20 145 230 165 119 156 73 9 2 0

Reading Files


JSON Files

臺北市施工資訊

In [37]:
construction = pd.read_json('/Users/hsinyu/Desktop/Python資料分析/Data/construction.json')
In [38]:
construction.head(1)
Out[38]:
AC_NO ADDR APPMODE APPTIME APP_NAME CB_DA CE_DA CO_TI C_NAME DELAYTIME ... ST_NO TC_MA TC_MA3 TC_MA3ID TC_MAID TC_NA TC_TL TC_TL3 X Y
0 102004900 紹興南街17~21-3號與仁愛路1段1~19號 0 1060407093547 台電輸變電 1020708 1060728 依交維計畫訂定時間施工 2月11日-3月2日禁止道路施工 中正 NaN ... 1 黃少榮 連彥宇 F126173460 G121445426 長聖營造有限公司 0988038303 0937141297 302738.601 2770178.978

1 rows × 23 columns

Reading Files


JSON Files

Note

Encoding Problem

In [39]:
import codecs
In [40]:
construction = pd.read_json(codecs.open('/Users/hsinyu/Desktop/Python資料分析/Data/construction.json', 'r', 'utf-8'))

Pandas


Inspect

Inspect


  • .shape
    DataFrame 中幾欄幾列

  • .size
    DataFrame 中有幾筆資料

  • .dtypes
    欄位資料類型

  • .columns
    欄位名稱

  • .index
    索引名稱

Inspect


  • .values
    取得資料(取出後的資料型態為 ndarray)

  • .head( n )
    看前 n 筆資料

  • .tail( n )
    看後 n 筆資料

  • .info( )
    整體資料狀況

Inspect


Use Demo Data

In [41]:
Temperature_dataframe
Out[41]:
FEB JAN MAR APR MAY JUN JUL AUG SEP OCT NOV DEC
0 17 8.3 20.1 22.6 27 27.8 30.1 30.3 29.4 27.1 24 17.5
1 21.1 21.7 22.9 25.7 28.4 28.4 29.4 30.2 29.7 28.9 26.9 21.6
2 Good Good Bad Bad Bad Good Bad Bad Good Bad Good Good

Inspect


Use Demo Data

In [42]:
Temperature_dataframe2
Out[42]:
Kaohsiung Quality Taipei
FEB 21.1 Good 17.0
JAN 21.7 Good 8.3
MAR 22.9 Bad 20.1
APR 25.7 Bad 22.6
MAY 28.4 Bad 27.0
JUN 28.4 Good 27.8
JUL 29.4 Bad 30.1
AUG 30.2 Bad 30.3
SEP 29.7 Good 29.4
OCT 28.9 Bad 27.1
NOV 26.9 Good 24.0
DEC 21.6 Good 17.5

Inspect


.shape

確認 Temperature_dataframe 及 Temperature_dataframe2 的外觀

In [43]:
Temperature_dataframe.shape
Out[43]:
(3, 12)
In [44]:
Temperature_dataframe2.shape
Out[44]:
(12, 3)

Inspect


.dtypes

確認 Temperature_dataframe 及 Temperature_dataframe2 的整體資料狀況

In [45]:
Temperature_dataframe.dtypes
Out[45]:
FEB    object
JAN    object
MAR    object
APR    object
MAY    object
JUN    object
JUL    object
AUG    object
SEP    object
OCT    object
NOV    object
DEC    object
dtype: object
In [46]:
Temperature_dataframe2.dtypes
Out[46]:
Kaohsiung    float64
Quality       object
Taipei       float64
dtype: object

Inspect


.colunms

找出 Temperature_dataframe2 的欄位名稱

In [47]:
Temperature_dataframe2.columns
Out[47]:
Index(['Kaohsiung', 'Quality', 'Taipei'], dtype='object')

Inspect


.index

找出 Temperature_dataframe2 的 index 名稱

In [48]:
Temperature_dataframe2.index
Out[48]:
Index(['FEB', 'JAN', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT',
       'NOV', 'DEC'],
      dtype='object')

Inspect


.values

取出 Temperature_dataframe2 的資料,取出後的資料型態為 ndarray

In [49]:
Temperature_dataframe2.values
Out[49]:
array([[21.1, 'Good', 17.0],
       [21.7, 'Good', 8.3],
       [22.9, 'Bad', 20.1],
       [25.7, 'Bad', 22.6],
       [28.4, 'Bad', 27.0],
       [28.4, 'Good', 27.8],
       [29.4, 'Bad', 30.1],
       [30.2, 'Bad', 30.3],
       [29.7, 'Good', 29.4],
       [28.9, 'Bad', 27.1],
       [26.9, 'Good', 24.0],
       [21.6, 'Good', 17.5]], dtype=object)

Inspect


.head( n )

查看 Temperature_dataframe2 的前筆資料

In [50]:
Temperature_dataframe2.head(3)
Out[50]:
Kaohsiung Quality Taipei
FEB 21.1 Good 17.0
JAN 21.7 Good 8.3
MAR 22.9 Bad 20.1

Inspect


.head( n )

查看 Temperature_dataframe2 的前筆資料

In [51]:
Temperature_dataframe2.head(5)
Out[51]:
Kaohsiung Quality Taipei
FEB 21.1 Good 17.0
JAN 21.7 Good 8.3
MAR 22.9 Bad 20.1
APR 25.7 Bad 22.6
MAY 28.4 Bad 27.0

Inspect


.tail( n )

查看 Temperature_dataframe2 的後筆資料

In [52]:
Temperature_dataframe2.tail(3)
Out[52]:
Kaohsiung Quality Taipei
OCT 28.9 Bad 27.1
NOV 26.9 Good 24.0
DEC 21.6 Good 17.5

Inspect


.tail( n )

查看 Temperature_dataframe2 的後筆資料

In [53]:
Temperature_dataframe2.tail(5)
Out[53]:
Kaohsiung Quality Taipei
AUG 30.2 Bad 30.3
SEP 29.7 Good 29.4
OCT 28.9 Bad 27.1
NOV 26.9 Good 24.0
DEC 21.6 Good 17.5

Inspect


.info( )

確認 Temperature_dataframe 及 Temperature_dataframe2 的欄位資料類型

In [54]:
Temperature_dataframe.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 12 columns):
FEB    3 non-null object
JAN    3 non-null object
MAR    3 non-null object
APR    3 non-null object
MAY    3 non-null object
JUN    3 non-null object
JUL    3 non-null object
AUG    3 non-null object
SEP    3 non-null object
OCT    3 non-null object
NOV    3 non-null object
DEC    3 non-null object
dtypes: object(12)
memory usage: 368.0+ bytes

Inspect


.info( )

確認 Temperature_dataframe 及 Temperature_dataframe2 的欄位資料類型

In [55]:
Temperature_dataframe2.info()
<class 'pandas.core.frame.DataFrame'>
Index: 12 entries, FEB to DEC
Data columns (total 3 columns):
Kaohsiung    12 non-null float64
Quality      12 non-null object
Taipei       12 non-null float64
dtypes: float64(2), object(1)
memory usage: 384.0+ bytes

Pandas


Descriptive Statistics

Descriptive Statistics


  • .describe( )
    資料中連續型資料的基本統計敘述

  • .value_counts( )
    資料中類別型資料的次數

Descriptive Statistics


Note

Data science process flowchart

Descriptive Statistics


.describe( )

查看 Temperature_dataframe2 中連續型資料的基本統計敘述

In [56]:
Temperature_dataframe2.describe()
Out[56]:
Kaohsiung Taipei
count 12.000000 12.000000
mean 26.241667 23.433333
std 3.496611 6.675373
min 21.100000 8.300000
25% 22.600000 19.450000
50% 27.650000 25.500000
75% 29.025000 28.200000
max 30.200000 30.300000

Descriptive Statistics


Note

Category Continuous
次 數 Central Dispersion
平均數 標準差
中位數 全 距
眾 數 四分位差

Descriptive Statistics


Note

Descriptive Statistics ( Category )

治療癌症,共有兩個方法 : Method A , Method B

Simpson's paradox

以整體來看 Method A 比 Method B 好

Descriptive Statistics


Note

Descriptive Statistics ( Category )

Simpson's paradox

Simpson's paradox

Descriptive Statistics


.value_counts( )

查看 Temperature_dataframe2 中類別型資料的次數

In [57]:
Temperature_dataframe2['Quality'].value_counts()
Out[57]:
Good    6
Bad     6
Name: Quality, dtype: int64

Exercise

Q. 2002 - 2013 年國民出國目的地人數統計

  1. 資料中共有幾個觀測值
  2. 資料中共有幾個欄位及各欄位的名稱分別是什麼
  3. 資料中各個欄位的 Descriptive Statistics

Answers

1. 資料中共有幾個觀測值

Method1.

In [58]:
Aboard_shape = Aboard.shape
print(Aboard_shape)
(34, 14)
In [59]:
Aboard_shape[0]*Aboard_shape[1]
Out[59]:
476

1. 資料中共有幾個觀測值

Method2.

In [60]:
Aboard.size
Out[60]:
476

Answers

2. 資料中共有幾個欄位及各欄位的名稱分別是什麼稱

Aboard 中共有幾個欄位

Method1.

In [61]:
len(Aboard.columns)
Out[61]:
14

Method2.

In [62]:
Aboard_shape[1]
Out[62]:
14

Answers

2. 資料中共有幾個欄位及各欄位的名稱分別是什麼

Aboard 的欄位名稱

In [63]:
Aboard.columns
Out[63]:
Index(['Continent', 'Country', '2002', '2003', '2004', '2005', '2006', '2007',
       '2008', '2009', '2010', '2011', '2012', '2013'],
      dtype='object')

Answers

3. 資料中各個欄位的 Descriptive Statistics

Aboard 的敘述統計

In [64]:
Aboard.describe()
Out[64]:
Continent Country 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013
count 34 34 34 34 34 34 34 34 34 34 34 34 34 34
unique 6 34 31 31 27 27 27 30 34 33 33 34 34 34
top ASIA 德國 Germany 0 0 0 0 0 0 38,205 2,838 1,110 31,337 49,986 61,338
freq 15 1 4 4 7 7 7 3 1 2 2 1 1 1

What's wrong??

所有欄位都是全部都是文字(非數值)

Answers

Note 將 2002 - 2013 轉成數值型態

檢查 Aboard 欄位資料類型

In [65]:
Aboard.dtypes
Out[65]:
Continent    object
Country      object
2002         object
2003         object
2004         object
2005         object
2006         object
2007         object
2008         object
2009         object
2010         object
2011         object
2012         object
2013         object
dtype: object

Answers

Note 將 2002 - 2013 轉成數值型態

檢查 Aboard 原始資料 ( csv file )

check original file

數字中含有 ,

Answers

Note 更新前的 Aboard

In [66]:
Aboard.head(1)
Out[66]:
Continent Country 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013
0 ASIA 香港 Hong Kong 2418872 1,869,069 2,559,705 2,807,027 2,993,317 3,030,971 2,851,170 2,261,001 2,308,633 2,156,760 2,021,212 2,038,732

Answers

Note 將 2002 - 2013 轉成數值型態

重新讀入 Aboard.csv ,加上 thousands=','

In [67]:
Aboard = pd.read_csv('/Users/hsinyu/Desktop/Python資料分析/Data/Aboard.csv',encoding='big5',sep=',', thousands=',')
In [68]:
Aboard.head(1)
Out[68]:
Continent Country 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013
0 ASIA 香港 Hong Kong 2418872 1,869,069 2,559,705 2,807,027 2,993,317 3,030,971 2,851,170 2,261,001 2,308,633 2,156,760 2021212 2038732

Answers

Note 將 2002 - 2013 轉成數值型態

重新檢查 Aboard 欄位資料類型

In [69]:
Aboard.dtypes
Out[69]:
Continent    object
Country      object
2002         object
2003         object
2004         object
2005         object
2006         object
2007         object
2008         object
2009         object
2010         object
2011         object
2012          int64
2013          int64
dtype: object

2012,2013 從 object 轉成 int64

其他怎麼辦 ??

Answers

Note 將 2002 - 2011 轉成數值型態

再次檢查 Aboard 原始資料 ( csv file ) check original file

資料中 “-” 應該表示為 Missing Value (遺失值)

Note

.replace( A , B ) : 把資料中 A 取代成 B

將 Temperature_dataframe2 中 Bad 取代成 Not Good

In [70]:
Temperature_dataframe2.replace( 'Bad' , 'Not Good' )
Out[70]:
Kaohsiung Quality Taipei
FEB 21.1 Good 17.0
JAN 21.7 Good 8.3
MAR 22.9 Not Good 20.1
APR 25.7 Not Good 22.6
MAY 28.4 Not Good 27.0
JUN 28.4 Good 27.8
JUL 29.4 Not Good 30.1
AUG 30.2 Not Good 30.3
SEP 29.7 Good 29.4
OCT 28.9 Not Good 27.1
NOV 26.9 Good 24.0
DEC 21.6 Good 17.5

Answers

Note 將 2002 - 2011 轉成數值型態

利用 replace( ) , 把“-”取代成 np.NaN

In [71]:
Aboard = Aboard.replace('-', np.NaN)
In [72]:
Aboard.head(2)
Out[72]:
Continent Country 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013
0 ASIA 香港 Hong Kong 2418872 1,869,069 2,559,705 2,807,027 2,993,317 3,030,971 2,851,170 2,261,001 2,308,633 2,156,760 2021212 2038732
1 ASIA 大陸 Mainland China 1 44 NaN NaN NaN NaN 188,744 1,516,087 2,424,242 2,846,572 3139055 3072327

Answers

Note 將 2002 - 2011 轉成數值型態

重新檢查 Aboard 欄位資料類型

In [73]:
Aboard.dtypes
Out[73]:
Continent    object
Country      object
2002         object
2003         object
2004         object
2005         object
2006         object
2007         object
2008         object
2009         object
2010         object
2011         object
2012          int64
2013          int64
dtype: object

Note

pd.to_numeric( ) : 把資料轉換成數值

In [74]:
test_data = pd.Series(['1.0', '2', -3])
test_data.dtypes
Out[74]:
dtype('O')
In [75]:
test_data = pd.to_numeric(test_data)
test_data.dtypes
Out[75]:
dtype('float64')

Answers

Note 將 2002 - 2011 轉成數值型態

Exercise q. 利用 for 迴圈,處理 2002-2011 的資料

Step1. 刪除資料中含有 , 的部分

Step2. 將資料從文字轉成數值型態

Example.

Aboard['2003'] = pd.to_numeric(Aboard['2003'].str.replace(',', ''))

Answers

Note 將 2002 - 2011 轉成數值型態

Answers

In [76]:
for i in Aboard.columns[2:12]:
    Aboard[i] = pd.to_numeric(Aboard[i].str.replace(',', ''))
In [77]:
Aboard.dtypes
Out[77]:
Continent     object
Country       object
2002         float64
2003         float64
2004         float64
2005         float64
2006         float64
2007         float64
2008         float64
2009         float64
2010         float64
2011         float64
2012           int64
2013           int64
dtype: object

Answers

3. 資料中各個欄位的 Descriptive Statistics

Aboard 連續型資料的敘述統計

In [78]:
Aboard.describe().astype(int)
Out[78]:
2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013
count 33 33 32 32 32 32 33 33 33 33 34 34
mean 221802 179487 243145 256503 270980 280116 256521 246841 285338 290427 301223 325085
std 478266 366132 500191 550757 584762 593101 548830 493054 601773 622276 662565 713321
min 0 0 0 0 0 0 0 0 0 1 6 0
25% 5850 3770 14996 11712 11023 10169 1233 2838 1654 7486 2218 128
50% 28967 24819 37990 45629 59260 56859 65393 61893 36142 36376 38868 37061
75% 186791 159724 270525 197513 214338 219023 188744 173429 212509 212826 234266 279920
max 2418872 1869069 2559705 2807027 2993317 3030971 2851170 2261001 2424242 2846572 3139055 3072327

Answers

3. 資料中各個欄位的 Descriptive Statistics

Aboard 類別型資料的敘述統計

In [79]:
Aboard['Continent'].value_counts()
Out[79]:
ASIA       15
EUROPE      8
OCEANIA     4
AFRICA      3
AMERICA     3
Others      1
Name: Continent, dtype: int64

Pandas


Reshaping

Reshaping


  • .T
    資料轉置

  • .sort_index( )
    依據資料的 index/column 排序

  • .sort_values( )

    依據資料中某個變數做排序

Reshaping


Note

  • 參數 axis=0 : 列、縱向(上下) vertical

  • 參數 axis=1 : 行、橫向(左右) horizontal

Reshaping


.T

將 Aboard 資料轉置(並存成Aboard_T)

In [80]:
Aboard_T = Aboard.T
In [81]:
Aboard_T.head(2)
Out[81]:
0 1 2 3 4 5 6 7 8 9 ... 24 25 26 27 28 29 30 31 32 33
Continent ASIA ASIA ASIA ASIA ASIA ASIA ASIA ASIA ASIA ASIA ... EUROPE EUROPE OCEANIA OCEANIA OCEANIA OCEANIA AFRICA AFRICA AFRICA Others
Country 香港 Hong Kong 大陸 Mainland China 日本 Japan 韓國 Korea 新加坡 Singapore 馬來西亞 Malaysia 泰國 Thailand 菲律賓 Philippines 印尼 Indonesia 汶淶 Brunei ... 奧地利 Austria 歐洲其他地區 Others 澳大利亞 Australia 紐西蘭 New Zealand 帛琉 Palau 大洋洲其他地區 Others 南非 S.Africa 非洲其他地區 Others 非洲合計 Total 其他 Others

2 rows × 34 columns

In [82]:
Aboard_T.shape
Out[82]:
(14, 34)

Reshaping


.sort_index( )

將 Aboard 資料中的列(index)依照遞減排序

In [83]:
Aboard.sort_index(axis=0,ascending=False)
Out[83]:
Continent Country 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013
33 Others 其他 Others 118789.0 159724.0 304234.0 363672.0 352526.0 480264.0 592862.0 143312.0 3519.0 7486.0 3397 442
32 AFRICA 非洲合計 Total 0.0 0.0 0.0 0.0 0.0 1.0 40.0 2838.0 1110.0 238.0 1826 14
31 AFRICA 非洲其他地區 Others 0.0 0.0 0.0 0.0 0.0 1.0 2.0 2838.0 1110.0 237.0 1820 12
30 AFRICA 南非 S.Africa 0.0 0.0 0.0 0.0 0.0 0.0 38.0 0.0 0.0 1.0 6 2
29 OCEANIA 大洋洲其他地區 Others 0.0 0.0 0.0 0.0 0.0 129.0 28.0 57.0 110.0 684.0 47 126
28 OCEANIA 帛琉 Palau 15812.0 28388.0 41909.0 31012.0 26685.0 28238.0 15918.0 13264.0 19951.0 30079.0 37512 27164
27 OCEANIA 紐西蘭 New Zealand 35758.0 24819.0 21047.0 20742.0 21495.0 17565.0 10732.0 1.0 997.0 15962.0 1621 6
26 OCEANIA 澳大利亞 Australia 70141.0 70679.0 75957.0 87912.0 76424.0 75408.0 66543.0 89793.0 74787.0 54889.0 49986 69824
25 EUROPE 歐洲其他地區 Others 771.0 7.0 0.0 0.0 0.0 475.0 36.0 191.0 1654.0 4063.0 586 18
24 EUROPE 奧地利 Austria 24654.0 21754.0 22045.0 39047.0 42096.0 38107.0 34080.0 34829.0 26081.0 35901.0 39734 23487
23 EUROPE 英國 U.K. 25764.0 23432.0 34071.0 33831.0 39255.0 38310.0 39114.0 50621.0 36142.0 36376.0 38002 1
22 EUROPE 瑞士 Switzerland 4.0 2.0 0.0 0.0 0.0 0.0 169.0 565.0 919.0 1414.0 64 0
21 EUROPE 荷蘭 Netherlands 129124.0 105885.0 128162.0 121728.0 93422.0 85352.0 98321.0 84535.0 43955.0 85238.0 83253 22102
20 EUROPE 義大利 Italy 16346.0 16367.0 24484.0 25809.0 20552.0 17175.0 14656.0 9726.0 7719.0 9355.0 12718 70
19 EUROPE 德國 Germany 18911.0 20524.0 25160.0 33911.0 33651.0 37105.0 38205.0 32797.0 31975.0 35378.0 36271 41122
18 EUROPE 法國 France 28967.0 24245.0 26423.0 26696.0 29287.0 27973.0 442.0 23518.0 23960.0 31337.0 30132 33000
17 AMERICA 美洲其他地區 Others 9.0 11.0 0.0 0.0 0.0 0.0 0.0 110.0 283.0 678.0 832 135
16 AMERICA 加拿大 Canada 132605.0 95226.0 112413.0 104346.0 93244.0 87161.0 65393.0 61893.0 63002.0 67733.0 66614 65086
15 AMERICA 美國 U.S.A. 532180.0 479264.0 536217.0 578998.0 593794.0 587872.0 515590.0 415465.0 436233.0 404848.0 469568 381374
14 ASIA 亞洲其他地區 Others 15894.0 9190.0 31097.0 52211.0 92672.0 151278.0 78065.0 63519.0 80531.0 83802.0 8574 121210
13 ASIA 柬埔寨 Cambodia NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 65599 61338
12 ASIA 緬甸 Myanmar 19814.0 17152.0 18064.0 15518.0 14606.0 13336.0 10608.0 11570.0 14097.0 16263.0 18380 23864
11 ASIA 澳門 Macao 1269840.0 837936.0 1038006.0 1163822.0 1232232.0 1196110.0 926593.0 739263.0 667910.0 587633.0 527050 514701
10 ASIA 越南 Vietnam 225733.0 222487.0 266115.0 234009.0 242852.0 272020.0 285263.0 264819.0 313987.0 318587.0 341511 361957
9 ASIA 汶淶 Brunei 5850.0 3770.0 5795.0 296.0 276.0 670.0 1233.0 216.0 714.0 1628.0 1100 2411
8 ASIA 印尼 Indonesia 259610.0 251284.0 283757.0 185348.0 186165.0 201358.0 186117.0 173429.0 179845.0 212826.0 198893 166378
7 ASIA 菲律賓 Philippines 128158.0 91418.0 112552.0 119125.0 110041.0 107824.0 114155.0 97372.0 139762.0 178876.0 211385 129361
6 ASIA 泰國 Thailand 530945.0 392414.0 422189.0 268231.0 379275.0 353439.0 332997.0 258449.0 350074.0 382635.0 306746 507616
5 ASIA 馬來西亞 Malaysia 186791.0 121267.0 180883.0 161296.0 181911.0 187788.0 157650.0 153695.0 212509.0 209164.0 193170 226919
4 ASIA 新加坡 Singapore 190455.0 125491.0 160088.0 184926.0 204834.0 189835.0 167479.0 137348.0 166126.0 207808.0 241893 297588
3 ASIA 韓國 Korea 120208.0 179893.0 298325.0 368206.0 396705.0 457095.0 363122.0 388806.0 406290.0 423266.0 532729 518528
2 ASIA 日本 Japan 797460.0 731330.0 1051954.0 1180406.0 1214058.0 1280853.0 1309847.0 1113857.0 1377957.0 1136394.0 1560300 2346007
1 ASIA 大陸 Mainland China 1.0 44.0 NaN NaN NaN NaN 188744.0 1516087.0 2424242.0 2846572.0 3139055 3072327
0 ASIA 香港 Hong Kong 2418872.0 1869069.0 2559705.0 2807027.0 2993317.0 3030971.0 2851170.0 2261001.0 2308633.0 2156760.0 2021212 2038732

Reshaping


.sort_index( )

將 Aboard 資料中的行(column)依照遞增排序

In [84]:
Aboard.sort_index(axis=1,ascending=True)
Out[84]:
2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 Continent Country
0 2418872.0 1869069.0 2559705.0 2807027.0 2993317.0 3030971.0 2851170.0 2261001.0 2308633.0 2156760.0 2021212 2038732 ASIA 香港 Hong Kong
1 1.0 44.0 NaN NaN NaN NaN 188744.0 1516087.0 2424242.0 2846572.0 3139055 3072327 ASIA 大陸 Mainland China
2 797460.0 731330.0 1051954.0 1180406.0 1214058.0 1280853.0 1309847.0 1113857.0 1377957.0 1136394.0 1560300 2346007 ASIA 日本 Japan
3 120208.0 179893.0 298325.0 368206.0 396705.0 457095.0 363122.0 388806.0 406290.0 423266.0 532729 518528 ASIA 韓國 Korea
4 190455.0 125491.0 160088.0 184926.0 204834.0 189835.0 167479.0 137348.0 166126.0 207808.0 241893 297588 ASIA 新加坡 Singapore
5 186791.0 121267.0 180883.0 161296.0 181911.0 187788.0 157650.0 153695.0 212509.0 209164.0 193170 226919 ASIA 馬來西亞 Malaysia
6 530945.0 392414.0 422189.0 268231.0 379275.0 353439.0 332997.0 258449.0 350074.0 382635.0 306746 507616 ASIA 泰國 Thailand
7 128158.0 91418.0 112552.0 119125.0 110041.0 107824.0 114155.0 97372.0 139762.0 178876.0 211385 129361 ASIA 菲律賓 Philippines
8 259610.0 251284.0 283757.0 185348.0 186165.0 201358.0 186117.0 173429.0 179845.0 212826.0 198893 166378 ASIA 印尼 Indonesia
9 5850.0 3770.0 5795.0 296.0 276.0 670.0 1233.0 216.0 714.0 1628.0 1100 2411 ASIA 汶淶 Brunei
10 225733.0 222487.0 266115.0 234009.0 242852.0 272020.0 285263.0 264819.0 313987.0 318587.0 341511 361957 ASIA 越南 Vietnam
11 1269840.0 837936.0 1038006.0 1163822.0 1232232.0 1196110.0 926593.0 739263.0 667910.0 587633.0 527050 514701 ASIA 澳門 Macao
12 19814.0 17152.0 18064.0 15518.0 14606.0 13336.0 10608.0 11570.0 14097.0 16263.0 18380 23864 ASIA 緬甸 Myanmar
13 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 65599 61338 ASIA 柬埔寨 Cambodia
14 15894.0 9190.0 31097.0 52211.0 92672.0 151278.0 78065.0 63519.0 80531.0 83802.0 8574 121210 ASIA 亞洲其他地區 Others
15 532180.0 479264.0 536217.0 578998.0 593794.0 587872.0 515590.0 415465.0 436233.0 404848.0 469568 381374 AMERICA 美國 U.S.A.
16 132605.0 95226.0 112413.0 104346.0 93244.0 87161.0 65393.0 61893.0 63002.0 67733.0 66614 65086 AMERICA 加拿大 Canada
17 9.0 11.0 0.0 0.0 0.0 0.0 0.0 110.0 283.0 678.0 832 135 AMERICA 美洲其他地區 Others
18 28967.0 24245.0 26423.0 26696.0 29287.0 27973.0 442.0 23518.0 23960.0 31337.0 30132 33000 EUROPE 法國 France
19 18911.0 20524.0 25160.0 33911.0 33651.0 37105.0 38205.0 32797.0 31975.0 35378.0 36271 41122 EUROPE 德國 Germany
20 16346.0 16367.0 24484.0 25809.0 20552.0 17175.0 14656.0 9726.0 7719.0 9355.0 12718 70 EUROPE 義大利 Italy
21 129124.0 105885.0 128162.0 121728.0 93422.0 85352.0 98321.0 84535.0 43955.0 85238.0 83253 22102 EUROPE 荷蘭 Netherlands
22 4.0 2.0 0.0 0.0 0.0 0.0 169.0 565.0 919.0 1414.0 64 0 EUROPE 瑞士 Switzerland
23 25764.0 23432.0 34071.0 33831.0 39255.0 38310.0 39114.0 50621.0 36142.0 36376.0 38002 1 EUROPE 英國 U.K.
24 24654.0 21754.0 22045.0 39047.0 42096.0 38107.0 34080.0 34829.0 26081.0 35901.0 39734 23487 EUROPE 奧地利 Austria
25 771.0 7.0 0.0 0.0 0.0 475.0 36.0 191.0 1654.0 4063.0 586 18 EUROPE 歐洲其他地區 Others
26 70141.0 70679.0 75957.0 87912.0 76424.0 75408.0 66543.0 89793.0 74787.0 54889.0 49986 69824 OCEANIA 澳大利亞 Australia
27 35758.0 24819.0 21047.0 20742.0 21495.0 17565.0 10732.0 1.0 997.0 15962.0 1621 6 OCEANIA 紐西蘭 New Zealand
28 15812.0 28388.0 41909.0 31012.0 26685.0 28238.0 15918.0 13264.0 19951.0 30079.0 37512 27164 OCEANIA 帛琉 Palau
29 0.0 0.0 0.0 0.0 0.0 129.0 28.0 57.0 110.0 684.0 47 126 OCEANIA 大洋洲其他地區 Others
30 0.0 0.0 0.0 0.0 0.0 0.0 38.0 0.0 0.0 1.0 6 2 AFRICA 南非 S.Africa
31 0.0 0.0 0.0 0.0 0.0 1.0 2.0 2838.0 1110.0 237.0 1820 12 AFRICA 非洲其他地區 Others
32 0.0 0.0 0.0 0.0 0.0 1.0 40.0 2838.0 1110.0 238.0 1826 14 AFRICA 非洲合計 Total
33 118789.0 159724.0 304234.0 363672.0 352526.0 480264.0 592862.0 143312.0 3519.0 7486.0 3397 442 Others 其他 Others

Reshaping


.sort_values( )

將 Aboard 資料依照 2003年度做遞增排序

In [85]:
Aboard.sort_values(by='2013',ascending=True)
Out[85]:
Continent Country 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013
22 EUROPE 瑞士 Switzerland 4.0 2.0 0.0 0.0 0.0 0.0 169.0 565.0 919.0 1414.0 64 0
23 EUROPE 英國 U.K. 25764.0 23432.0 34071.0 33831.0 39255.0 38310.0 39114.0 50621.0 36142.0 36376.0 38002 1
30 AFRICA 南非 S.Africa 0.0 0.0 0.0 0.0 0.0 0.0 38.0 0.0 0.0 1.0 6 2
27 OCEANIA 紐西蘭 New Zealand 35758.0 24819.0 21047.0 20742.0 21495.0 17565.0 10732.0 1.0 997.0 15962.0 1621 6
31 AFRICA 非洲其他地區 Others 0.0 0.0 0.0 0.0 0.0 1.0 2.0 2838.0 1110.0 237.0 1820 12
32 AFRICA 非洲合計 Total 0.0 0.0 0.0 0.0 0.0 1.0 40.0 2838.0 1110.0 238.0 1826 14
25 EUROPE 歐洲其他地區 Others 771.0 7.0 0.0 0.0 0.0 475.0 36.0 191.0 1654.0 4063.0 586 18
20 EUROPE 義大利 Italy 16346.0 16367.0 24484.0 25809.0 20552.0 17175.0 14656.0 9726.0 7719.0 9355.0 12718 70
29 OCEANIA 大洋洲其他地區 Others 0.0 0.0 0.0 0.0 0.0 129.0 28.0 57.0 110.0 684.0 47 126
17 AMERICA 美洲其他地區 Others 9.0 11.0 0.0 0.0 0.0 0.0 0.0 110.0 283.0 678.0 832 135
33 Others 其他 Others 118789.0 159724.0 304234.0 363672.0 352526.0 480264.0 592862.0 143312.0 3519.0 7486.0 3397 442
9 ASIA 汶淶 Brunei 5850.0 3770.0 5795.0 296.0 276.0 670.0 1233.0 216.0 714.0 1628.0 1100 2411
21 EUROPE 荷蘭 Netherlands 129124.0 105885.0 128162.0 121728.0 93422.0 85352.0 98321.0 84535.0 43955.0 85238.0 83253 22102
24 EUROPE 奧地利 Austria 24654.0 21754.0 22045.0 39047.0 42096.0 38107.0 34080.0 34829.0 26081.0 35901.0 39734 23487
12 ASIA 緬甸 Myanmar 19814.0 17152.0 18064.0 15518.0 14606.0 13336.0 10608.0 11570.0 14097.0 16263.0 18380 23864
28 OCEANIA 帛琉 Palau 15812.0 28388.0 41909.0 31012.0 26685.0 28238.0 15918.0 13264.0 19951.0 30079.0 37512 27164
18 EUROPE 法國 France 28967.0 24245.0 26423.0 26696.0 29287.0 27973.0 442.0 23518.0 23960.0 31337.0 30132 33000
19 EUROPE 德國 Germany 18911.0 20524.0 25160.0 33911.0 33651.0 37105.0 38205.0 32797.0 31975.0 35378.0 36271 41122
13 ASIA 柬埔寨 Cambodia NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 65599 61338
16 AMERICA 加拿大 Canada 132605.0 95226.0 112413.0 104346.0 93244.0 87161.0 65393.0 61893.0 63002.0 67733.0 66614 65086
26 OCEANIA 澳大利亞 Australia 70141.0 70679.0 75957.0 87912.0 76424.0 75408.0 66543.0 89793.0 74787.0 54889.0 49986 69824
14 ASIA 亞洲其他地區 Others 15894.0 9190.0 31097.0 52211.0 92672.0 151278.0 78065.0 63519.0 80531.0 83802.0 8574 121210
7 ASIA 菲律賓 Philippines 128158.0 91418.0 112552.0 119125.0 110041.0 107824.0 114155.0 97372.0 139762.0 178876.0 211385 129361
8 ASIA 印尼 Indonesia 259610.0 251284.0 283757.0 185348.0 186165.0 201358.0 186117.0 173429.0 179845.0 212826.0 198893 166378
5 ASIA 馬來西亞 Malaysia 186791.0 121267.0 180883.0 161296.0 181911.0 187788.0 157650.0 153695.0 212509.0 209164.0 193170 226919
4 ASIA 新加坡 Singapore 190455.0 125491.0 160088.0 184926.0 204834.0 189835.0 167479.0 137348.0 166126.0 207808.0 241893 297588
10 ASIA 越南 Vietnam 225733.0 222487.0 266115.0 234009.0 242852.0 272020.0 285263.0 264819.0 313987.0 318587.0 341511 361957
15 AMERICA 美國 U.S.A. 532180.0 479264.0 536217.0 578998.0 593794.0 587872.0 515590.0 415465.0 436233.0 404848.0 469568 381374
6 ASIA 泰國 Thailand 530945.0 392414.0 422189.0 268231.0 379275.0 353439.0 332997.0 258449.0 350074.0 382635.0 306746 507616
11 ASIA 澳門 Macao 1269840.0 837936.0 1038006.0 1163822.0 1232232.0 1196110.0 926593.0 739263.0 667910.0 587633.0 527050 514701
3 ASIA 韓國 Korea 120208.0 179893.0 298325.0 368206.0 396705.0 457095.0 363122.0 388806.0 406290.0 423266.0 532729 518528
0 ASIA 香港 Hong Kong 2418872.0 1869069.0 2559705.0 2807027.0 2993317.0 3030971.0 2851170.0 2261001.0 2308633.0 2156760.0 2021212 2038732
2 ASIA 日本 Japan 797460.0 731330.0 1051954.0 1180406.0 1214058.0 1280853.0 1309847.0 1113857.0 1377957.0 1136394.0 1560300 2346007
1 ASIA 大陸 Mainland China 1.0 44.0 NaN NaN NaN NaN 188744.0 1516087.0 2424242.0 2846572.0 3139055 3072327

Pandas


Selection

Selection


Slicing Subsets of Rows and Columns

  • Using Column Name (Labels)
  • .loc:依照資料的索引值(標籤) ( column / index ) 選取
  • .iloc( ):依照資料的位置選取
  • Boolean 選取

Selection


Using Column Name

Method 1.

取出 Aboard 中 Country 的資料

In [86]:
Aboard.Country
Out[86]:
0          香港 Hong Kong
1     大陸 Mainland China
2              日本 Japan
3              韓國 Korea
4         新加坡 Singapore
5         馬來西亞 Malaysia
6           泰國 Thailand
7       菲律賓 Philippines
8          印尼 Indonesia
9             汶淶 Brunei
10           越南 Vietnam
11             澳門 Macao
12           緬甸 Myanmar
13         柬埔寨 Cambodia
14        亞洲其他地區 Others
15            美國 U.S.A.
16           加拿大 Canada
17        美洲其他地區 Others
18            法國 France
19           德國 Germany
20            義大利 Italy
21       荷蘭 Netherlands
22       瑞士 Switzerland
23              英國 U.K.
24          奧地利 Austria
25        歐洲其他地區 Others
26       澳大利亞 Australia
27      紐西蘭 New Zealand
28             帛琉 Palau
29       大洋洲其他地區 Others
30          南非 S.Africa
31        非洲其他地區 Others
32           非洲合計 Total
33            其他 Others
Name: Country, dtype: object

Selection


Using Column Name

Method 2.

取出 Aboard 中 Country 的資料

In [87]:
Aboard['Country']
Out[87]:
0          香港 Hong Kong
1     大陸 Mainland China
2              日本 Japan
3              韓國 Korea
4         新加坡 Singapore
5         馬來西亞 Malaysia
6           泰國 Thailand
7       菲律賓 Philippines
8          印尼 Indonesia
9             汶淶 Brunei
10           越南 Vietnam
11             澳門 Macao
12           緬甸 Myanmar
13         柬埔寨 Cambodia
14        亞洲其他地區 Others
15            美國 U.S.A.
16           加拿大 Canada
17        美洲其他地區 Others
18            法國 France
19           德國 Germany
20            義大利 Italy
21       荷蘭 Netherlands
22       瑞士 Switzerland
23              英國 U.K.
24          奧地利 Austria
25        歐洲其他地區 Others
26       澳大利亞 Australia
27      紐西蘭 New Zealand
28             帛琉 Palau
29       大洋洲其他地區 Others
30          南非 S.Africa
31        非洲其他地區 Others
32           非洲合計 Total
33            其他 Others
Name: Country, dtype: object

Selection


Using Column Name

Method 2.

取出 Aboard 中 Country 及 Continent 的資料

In [88]:
Aboard[['Country','Continent']]
Out[88]:
Country Continent
0 香港 Hong Kong ASIA
1 大陸 Mainland China ASIA
2 日本 Japan ASIA
3 韓國 Korea ASIA
4 新加坡 Singapore ASIA
5 馬來西亞 Malaysia ASIA
6 泰國 Thailand ASIA
7 菲律賓 Philippines ASIA
8 印尼 Indonesia ASIA
9 汶淶 Brunei ASIA
10 越南 Vietnam ASIA
11 澳門 Macao ASIA
12 緬甸 Myanmar ASIA
13 柬埔寨 Cambodia ASIA
14 亞洲其他地區 Others ASIA
15 美國 U.S.A. AMERICA
16 加拿大 Canada AMERICA
17 美洲其他地區 Others AMERICA
18 法國 France EUROPE
19 德國 Germany EUROPE
20 義大利 Italy EUROPE
21 荷蘭 Netherlands EUROPE
22 瑞士 Switzerland EUROPE
23 英國 U.K. EUROPE
24 奧地利 Austria EUROPE
25 歐洲其他地區 Others EUROPE
26 澳大利亞 Australia OCEANIA
27 紐西蘭 New Zealand OCEANIA
28 帛琉 Palau OCEANIA
29 大洋洲其他地區 Others OCEANIA
30 南非 S.Africa AFRICA
31 非洲其他地區 Others AFRICA
32 非洲合計 Total AFRICA
33 其他 Others Others

Selection


Note

In [89]:
Aboard.head(2)
Out[89]:
Continent Country 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013
0 ASIA 香港 Hong Kong 2418872.0 1869069.0 2559705.0 2807027.0 2993317.0 3030971.0 2851170.0 2261001.0 2308633.0 2156760.0 2021212 2038732
1 ASIA 大陸 Mainland China 1.0 44.0 NaN NaN NaN NaN 188744.0 1516087.0 2424242.0 2846572.0 3139055 3072327
In [90]:
Aboard.index
Out[90]:
RangeIndex(start=0, stop=34, step=1)

Selection


Note

改變 Aboard 的 index

In [91]:
Aboard.index = Aboard['Country'].str.extract('^(?P<Country>[^\s]+)[\.\w\s]+$',expand=False)
del Aboard.index.name
In [92]:
Aboard.index
Out[92]:
Index(['香港', '大陸', '日本', '韓國', '新加坡', '馬來西亞', '泰國', '菲律賓', '印尼', '汶淶', '越南',
       '澳門', '緬甸', '柬埔寨', '亞洲其他地區', '美國', '加拿大', '美洲其他地區', '法國', '德國', '義大利',
       '荷蘭', '瑞士', '英國', '奧地利', '歐洲其他地區', '澳大利亞', '紐西蘭', '帛琉', '大洋洲其他地區', '南非',
       '非洲其他地區', '非洲合計', '其他'],
      dtype='object')

Selection


.loc:依照資料的索引值(標籤) ( column / index ) 選取

取出 Aboard 中 Country 的資料

In [93]:
Aboard.loc[:,'Country']
Out[93]:
香港              香港 Hong Kong
大陸         大陸 Mainland China
日本                  日本 Japan
韓國                  韓國 Korea
新加坡            新加坡 Singapore
馬來西亞           馬來西亞 Malaysia
泰國               泰國 Thailand
菲律賓          菲律賓 Philippines
印尼              印尼 Indonesia
汶淶                 汶淶 Brunei
越南                越南 Vietnam
澳門                  澳門 Macao
緬甸                緬甸 Myanmar
柬埔寨             柬埔寨 Cambodia
亞洲其他地區         亞洲其他地區 Others
美國                 美國 U.S.A.
加拿大               加拿大 Canada
美洲其他地區         美洲其他地區 Others
法國                 法國 France
德國                德國 Germany
義大利                義大利 Italy
荷蘭            荷蘭 Netherlands
瑞士            瑞士 Switzerland
英國                   英國 U.K.
奧地利              奧地利 Austria
歐洲其他地區         歐洲其他地區 Others
澳大利亞          澳大利亞 Australia
紐西蘭          紐西蘭 New Zealand
帛琉                  帛琉 Palau
大洋洲其他地區       大洋洲其他地區 Others
南非               南非 S.Africa
非洲其他地區         非洲其他地區 Others
非洲合計              非洲合計 Total
其他                 其他 Others
Name: Country, dtype: object

Selection


.loc:依照資料的索引值(標籤) ( column / index ) 選取

取出 Aboard 中 香港 的資料

In [94]:
Aboard.loc['香港']
Out[94]:
Continent            ASIA
Country      香港 Hong Kong
2002          2.41887e+06
2003          1.86907e+06
2004          2.55970e+06
2005          2.80703e+06
2006          2.99332e+06
2007          3.03097e+06
2008          2.85117e+06
2009            2.261e+06
2010          2.30863e+06
2011          2.15676e+06
2012              2021212
2013              2038732
Name: 香港, dtype: object

Selection


.loc:依照資料的索引值(標籤) ( column / index ) 選取

取出 Aboard 中 香港 的 2002,2003 年度資料

In [95]:
Aboard.loc['香港',['2002','2003']].astype(int)
Out[95]:
2002    2418872
2003    1869069
Name: 香港, dtype: int64

Selection


.iloc( ):依照資料的位置選取

取出 Aboard 中 Country 的資料

In [96]:
Aboard.iloc[:,1]
Out[96]:
香港              香港 Hong Kong
大陸         大陸 Mainland China
日本                  日本 Japan
韓國                  韓國 Korea
新加坡            新加坡 Singapore
馬來西亞           馬來西亞 Malaysia
泰國               泰國 Thailand
菲律賓          菲律賓 Philippines
印尼              印尼 Indonesia
汶淶                 汶淶 Brunei
越南                越南 Vietnam
澳門                  澳門 Macao
緬甸                緬甸 Myanmar
柬埔寨             柬埔寨 Cambodia
亞洲其他地區         亞洲其他地區 Others
美國                 美國 U.S.A.
加拿大               加拿大 Canada
美洲其他地區         美洲其他地區 Others
法國                 法國 France
德國                德國 Germany
義大利                義大利 Italy
荷蘭            荷蘭 Netherlands
瑞士            瑞士 Switzerland
英國                   英國 U.K.
奧地利              奧地利 Austria
歐洲其他地區         歐洲其他地區 Others
澳大利亞          澳大利亞 Australia
紐西蘭          紐西蘭 New Zealand
帛琉                  帛琉 Palau
大洋洲其他地區       大洋洲其他地區 Others
南非               南非 S.Africa
非洲其他地區         非洲其他地區 Others
非洲合計              非洲合計 Total
其他                 其他 Others
Name: Country, dtype: object

Selection


.iloc( ):依照資料的位置選取

取出 Aboard 中 香港 的 2002,2003 年度資料

In [97]:
Aboard.iloc[0,2:4]
Out[97]:
2002    2.41887e+06
2003    1.86907e+06
Name: 香港, dtype: object

Selection


Boolean 選取

取出 Aboard 中 2002 年度為 0 的資料

In [98]:
Aboard.loc[Aboard.loc[:,'2002']==0,'2002']
Out[98]:
大洋洲其他地區    0.0
南非         0.0
非洲其他地區     0.0
非洲合計       0.0
Name: 2002, dtype: float64

Pandas


Setting Value

Setting Value


  • 將特定資料選出後賦予一個新的值
  • 新增資料並賦予新的值

Setting Value


將特定資料選出後賦予一個新的值

選出 Aboard 中 英國 的 2013 年度資料,並給予 34567

Original

In [99]:
Aboard.loc['英國','2013'] 
Out[99]:
1

Setting Value


將特定資料選出後賦予一個新的值

選出 Aboard 中 英國 的 2013 年度資料,並給予 34567

New

In [100]:
Aboard.loc['英國','2013'] = 34567
In [101]:
Aboard.loc['英國','2013'] 
Out[101]:
34567

Setting Value


新增資料並賦予新的值

對 Aboard 的資料新增一列總計的資料,並給予 np.NaN

In [102]:
Aboard.loc['總計',:] = np.NaN
In [103]:
print(Aboard.loc['總計',:])
Continent    NaN
Country      NaN
2002         NaN
2003         NaN
2004         NaN
2005         NaN
2006         NaN
2007         NaN
2008         NaN
2009         NaN
2010         NaN
2011         NaN
2012         NaN
2013         NaN
Name: 總計, dtype: object

Setting Value


Note

更新 Aboard 中總計的資料

In [104]:
Aboard.loc['總計',:] = np.array([np.NaN,np.NaN,7319466,5923072,7780652,8208125,8671375,8963713,8465212,8145784,9416184,9584111,10241586,11087488])
In [105]:
Aboard.loc['總計',:]
Out[105]:
Continent            NaN
Country              NaN
2002         7.31947e+06
2003         5.92307e+06
2004         7.78065e+06
2005         8.20812e+06
2006         8.67138e+06
2007         8.96371e+06
2008         8.46521e+06
2009         8.14578e+06
2010         9.41618e+06
2011         9.58411e+06
2012         1.02416e+07
2013         1.10875e+07
Name: 總計, dtype: object

Exercise

Q. 現在有另一個檔案 Aboard_2.xlsx

  1. 讀入 Aboard_2.xlsx,並存一個名叫 Aboard_2 的 DataFrame
  2. 將 Aboard_2 轉置
  3. 改變 Aboard_2 的 column name ( 依序為 2013 2014 2015 2016 )

    可以利用 Aboard_2.loc['Year',:].values 的值

Answers

讀入 Aboard_2.xlsx

In [106]:
Aboard_2 = pd.read_excel('/Users/hsinyu/Desktop/Python資料分析/Data/Aboard_2.xlsx')
In [107]:
Aboard_2
Out[107]:
Year 香港 大陸 日本 韓國 新加坡 馬來西亞 泰國 菲律賓 印尼 ... 英國 奧地利 歐洲其他地區 歐洲合計 澳大利亞 紐西蘭 帛琉 大洋洲其他地區 大洋洲合計 其他
0 2013 2038732 3072327 2346007 518528 297588 226919 507616 129361 166378 ... 1 23487 18 119800 69824 6 27164 126 97120 442
1 2014 2018129 3267238 2971846 626694 283925 198902 419133 133583 170301 ... 0 26256 1295 133677 85745 0 30471 126 116342 3460
2 2015 2008153 3403920 3797879 500100 318516 201631 599523 180091 176478 ... 0 32835 3546 161529 103806 3 14421 160 118390 1472
3 2016 1902647 3685477 4295240 808420 319915 245298 532787 231801 175738 ... 16321 41934 35483 258087 139501 2804 14203 1218 157726 5646

4 rows × 36 columns

Answers

將 Aboard_2 轉置

In [108]:
Aboard_2 = Aboard_2.T
In [109]:
Aboard_2
Out[109]:
0 1 2 3
Year 2013 2014 2015 2016
香港 2038732 2018129 2008153 1902647
大陸 3072327 3267238 3403920 3685477
日本 2346007 2971846 3797879 4295240
韓國 518528 626694 500100 808420
新加坡 297588 283925 318516 319915
馬來西亞 226919 198902 201631 245298
泰國 507616 419133 599523 532787
菲律賓 129361 133583 180091 231801
印尼 166378 170301 176478 175738
汶淶 2411 298 285 540
越南 361957 339107 409013 465944
澳門 514701 493188 527144 598850
緬甸 23864 22817 19999 25196
柬埔寨 61338 69195 66593 67281
亞洲其他地區 121210 81308 143963 183933
亞洲合計 10388937 11095664 12353288 13539067
美國 381374 425138 477156 527099
加拿大 65086 70285 71079 93405
美洲其他地區 135 56 32 2687
美洲合計 446595 495479 548267 623191
法國 33000 39126 41185 46461
德國 41122 44251 53043 66454
義大利 70 0 14 13054
荷蘭 22102 22749 30906 32851
瑞士 0 0 0 5529
英國 1 0 0 16321
奧地利 23487 26256 32835 41934
歐洲其他地區 18 1295 3546 35483
歐洲合計 119800 133677 161529 258087
澳大利亞 69824 85745 103806 139501
紐西蘭 6 0 3 2804
帛琉 27164 30471 14421 14203
大洋洲其他地區 126 126 160 1218
大洋洲合計 97120 116342 118390 157726
其他 442 3460 1472 5646

Answers

改變 Aboard_2 的 column name ( 依序為 2013 2014 2015 2016 )

可以利用 Aboard_2.loc['Year',:].values 的值

In [110]:
Aboard_2.columns = Aboard_2.loc['Year',:].values
In [111]:
Aboard_2
Out[111]:
2013 2014 2015 2016
Year 2013 2014 2015 2016
香港 2038732 2018129 2008153 1902647
大陸 3072327 3267238 3403920 3685477
日本 2346007 2971846 3797879 4295240
韓國 518528 626694 500100 808420
新加坡 297588 283925 318516 319915
馬來西亞 226919 198902 201631 245298
泰國 507616 419133 599523 532787
菲律賓 129361 133583 180091 231801
印尼 166378 170301 176478 175738
汶淶 2411 298 285 540
越南 361957 339107 409013 465944
澳門 514701 493188 527144 598850
緬甸 23864 22817 19999 25196
柬埔寨 61338 69195 66593 67281
亞洲其他地區 121210 81308 143963 183933
亞洲合計 10388937 11095664 12353288 13539067
美國 381374 425138 477156 527099
加拿大 65086 70285 71079 93405
美洲其他地區 135 56 32 2687
美洲合計 446595 495479 548267 623191
法國 33000 39126 41185 46461
德國 41122 44251 53043 66454
義大利 70 0 14 13054
荷蘭 22102 22749 30906 32851
瑞士 0 0 0 5529
英國 1 0 0 16321
奧地利 23487 26256 32835 41934
歐洲其他地區 18 1295 3546 35483
歐洲合計 119800 133677 161529 258087
澳大利亞 69824 85745 103806 139501
紐西蘭 6 0 3 2804
帛琉 27164 30471 14421 14203
大洋洲其他地區 126 126 160 1218
大洋洲合計 97120 116342 118390 157726
其他 442 3460 1472 5646

Pandas


Insert and Drop

Insert and Drop


  • .drop( ):刪除 row / column
  • .append( ):新增 row / column

Insert and Drop


.drop( ):刪除 row / column

刪除 Aboard_2 中 Year 這列 (row) 資料

In [112]:
Aboard_2 = Aboard_2.drop(['Year'])
In [113]:
Aboard_2
Out[113]:
2013 2014 2015 2016
香港 2038732 2018129 2008153 1902647
大陸 3072327 3267238 3403920 3685477
日本 2346007 2971846 3797879 4295240
韓國 518528 626694 500100 808420
新加坡 297588 283925 318516 319915
馬來西亞 226919 198902 201631 245298
泰國 507616 419133 599523 532787
菲律賓 129361 133583 180091 231801
印尼 166378 170301 176478 175738
汶淶 2411 298 285 540
越南 361957 339107 409013 465944
澳門 514701 493188 527144 598850
緬甸 23864 22817 19999 25196
柬埔寨 61338 69195 66593 67281
亞洲其他地區 121210 81308 143963 183933
亞洲合計 10388937 11095664 12353288 13539067
美國 381374 425138 477156 527099
加拿大 65086 70285 71079 93405
美洲其他地區 135 56 32 2687
美洲合計 446595 495479 548267 623191
法國 33000 39126 41185 46461
德國 41122 44251 53043 66454
義大利 70 0 14 13054
荷蘭 22102 22749 30906 32851
瑞士 0 0 0 5529
英國 1 0 0 16321
奧地利 23487 26256 32835 41934
歐洲其他地區 18 1295 3546 35483
歐洲合計 119800 133677 161529 258087
澳大利亞 69824 85745 103806 139501
紐西蘭 6 0 3 2804
帛琉 27164 30471 14421 14203
大洋洲其他地區 126 126 160 1218
大洋洲合計 97120 116342 118390 157726
其他 442 3460 1472 5646

Insert and Drop


.drop( ):刪除 row / column

刪除 Aboard_2 中 2013 這行 (column) 資料

參數 axis=0 : 列、縱向(上下) vertical
參數 axis=1 : 行、橫向(左右) horizontal

In [114]:
Aboard_2 = Aboard_2.drop([2013],axis=1)
In [115]:
Aboard_2
Out[115]:
2014 2015 2016
香港 2018129 2008153 1902647
大陸 3267238 3403920 3685477
日本 2971846 3797879 4295240
韓國 626694 500100 808420
新加坡 283925 318516 319915
馬來西亞 198902 201631 245298
泰國 419133 599523 532787
菲律賓 133583 180091 231801
印尼 170301 176478 175738
汶淶 298 285 540
越南 339107 409013 465944
澳門 493188 527144 598850
緬甸 22817 19999 25196
柬埔寨 69195 66593 67281
亞洲其他地區 81308 143963 183933
亞洲合計 11095664 12353288 13539067
美國 425138 477156 527099
加拿大 70285 71079 93405
美洲其他地區 56 32 2687
美洲合計 495479 548267 623191
法國 39126 41185 46461
德國 44251 53043 66454
義大利 0 14 13054
荷蘭 22749 30906 32851
瑞士 0 0 5529
英國 0 0 16321
奧地利 26256 32835 41934
歐洲其他地區 1295 3546 35483
歐洲合計 133677 161529 258087
澳大利亞 85745 103806 139501
紐西蘭 0 3 2804
帛琉 30471 14421 14203
大洋洲其他地區 126 160 1218
大洋洲合計 116342 118390 157726
其他 3460 1472 5646

Insert and Drop


.append( ):新增 row / column

在 Aboard_2 中 加入 總計 這行列 (row) 資料

需新增的總計資料如下

In [116]:
total = pd.Series([23685810,26364480,29172200],index=[2014,2015,2016])
In [117]:
total.name = '總計'
In [118]:
total
Out[118]:
2014    23685810
2015    26364480
2016    29172200
Name: 總計, dtype: int64

Insert and Drop


.append( ):新增 row / column

在 Aboard_2 中 加入 總計 這行列 (row) 資料

In [119]:
Aboard_2 = Aboard_2.append(total)
In [120]:
Aboard_2.tail(3)
Out[120]:
2014 2015 2016
大洋洲合計 116342 118390 157726
其他 3460 1472 5646
總計 23685810 26364480 29172200

Pandas


Missing Value

Missing Value


  • .isnull( ) : 檢查哪裡是 missing value
  • .notnull( ) : 檢查哪裡不是 missing value
  • .fillna( ) : 填補(取代) missing value
  • .dropna() : 刪除 missing value

Missing Value


.isnull( ) : 檢查哪裡是 missing value

檢查 Aboard 中 柬埔寨 的哪些年度是 missing value

In [121]:
Aboard.loc['柬埔寨','2002':'2013'].isnull()
Out[121]:
2002     True
2003     True
2004     True
2005     True
2006     True
2007     True
2008     True
2009     True
2010     True
2011     True
2012    False
2013    False
Name: 柬埔寨, dtype: bool

Missing Value


.notnull( ) : 檢查哪裡不是 missing value

檢查 Aboard 中 柬埔寨 的哪些年度不是 missing value

In [122]:
Aboard.loc['柬埔寨','2002':'2013'].notnull()
Out[122]:
2002    False
2003    False
2004    False
2005    False
2006    False
2007    False
2008    False
2009    False
2010    False
2011    False
2012     True
2013     True
Name: 柬埔寨, dtype: bool

Missing Value


.fillna( ) : 填補(取代) missing value

將 Aboard 中 大陸 的資料中是 missing value 的取代成 0

In [123]:
Aboard.loc['大陸',:]
Out[123]:
Continent                 ASIA
Country      大陸 Mainland China
2002                         1
2003                        44
2004                       NaN
2005                       NaN
2006                       NaN
2007                       NaN
2008                    188744
2009               1.51609e+06
2010               2.42424e+06
2011               2.84657e+06
2012               3.13906e+06
2013               3.07233e+06
Name: 大陸, dtype: object

Missing Value


.fillna( ) : 填補(取代) missing value

將 Aboard 中 大陸 的資料中是 missing value 的取代成 0

In [124]:
Aboard.loc['大陸',:] = Aboard.loc['大陸',:].fillna(value=0)
In [125]:
Aboard.loc['大陸',:]
Out[125]:
Continent                 ASIA
Country      大陸 Mainland China
2002                         1
2003                        44
2004                         0
2005                         0
2006                         0
2007                         0
2008                    188744
2009               1.51609e+06
2010               2.42424e+06
2011               2.84657e+06
2012               3.13906e+06
2013               3.07233e+06
Name: 大陸, dtype: object

Missing Value


.dropna() : 刪除 missing value

如果 Aboard 中一整列的資料只要有 missing value 就刪除

In [126]:
Aboard
Out[126]:
Continent Country 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013
香港 ASIA 香港 Hong Kong 2418872.0 1869069.0 2559705.0 2807027.0 2993317.0 3030971.0 2851170.0 2261001.0 2308633.0 2156760.0 2021212.0 2038732.0
大陸 ASIA 大陸 Mainland China 1.0 44.0 0.0 0.0 0.0 0.0 188744.0 1516087.0 2424242.0 2846572.0 3139055.0 3072327.0
日本 ASIA 日本 Japan 797460.0 731330.0 1051954.0 1180406.0 1214058.0 1280853.0 1309847.0 1113857.0 1377957.0 1136394.0 1560300.0 2346007.0
韓國 ASIA 韓國 Korea 120208.0 179893.0 298325.0 368206.0 396705.0 457095.0 363122.0 388806.0 406290.0 423266.0 532729.0 518528.0
新加坡 ASIA 新加坡 Singapore 190455.0 125491.0 160088.0 184926.0 204834.0 189835.0 167479.0 137348.0 166126.0 207808.0 241893.0 297588.0
馬來西亞 ASIA 馬來西亞 Malaysia 186791.0 121267.0 180883.0 161296.0 181911.0 187788.0 157650.0 153695.0 212509.0 209164.0 193170.0 226919.0
泰國 ASIA 泰國 Thailand 530945.0 392414.0 422189.0 268231.0 379275.0 353439.0 332997.0 258449.0 350074.0 382635.0 306746.0 507616.0
菲律賓 ASIA 菲律賓 Philippines 128158.0 91418.0 112552.0 119125.0 110041.0 107824.0 114155.0 97372.0 139762.0 178876.0 211385.0 129361.0
印尼 ASIA 印尼 Indonesia 259610.0 251284.0 283757.0 185348.0 186165.0 201358.0 186117.0 173429.0 179845.0 212826.0 198893.0 166378.0
汶淶 ASIA 汶淶 Brunei 5850.0 3770.0 5795.0 296.0 276.0 670.0 1233.0 216.0 714.0 1628.0 1100.0 2411.0
越南 ASIA 越南 Vietnam 225733.0 222487.0 266115.0 234009.0 242852.0 272020.0 285263.0 264819.0 313987.0 318587.0 341511.0 361957.0
澳門 ASIA 澳門 Macao 1269840.0 837936.0 1038006.0 1163822.0 1232232.0 1196110.0 926593.0 739263.0 667910.0 587633.0 527050.0 514701.0
緬甸 ASIA 緬甸 Myanmar 19814.0 17152.0 18064.0 15518.0 14606.0 13336.0 10608.0 11570.0 14097.0 16263.0 18380.0 23864.0
柬埔寨 ASIA 柬埔寨 Cambodia NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 65599.0 61338.0
亞洲其他地區 ASIA 亞洲其他地區 Others 15894.0 9190.0 31097.0 52211.0 92672.0 151278.0 78065.0 63519.0 80531.0 83802.0 8574.0 121210.0
美國 AMERICA 美國 U.S.A. 532180.0 479264.0 536217.0 578998.0 593794.0 587872.0 515590.0 415465.0 436233.0 404848.0 469568.0 381374.0
加拿大 AMERICA 加拿大 Canada 132605.0 95226.0 112413.0 104346.0 93244.0 87161.0 65393.0 61893.0 63002.0 67733.0 66614.0 65086.0
美洲其他地區 AMERICA 美洲其他地區 Others 9.0 11.0 0.0 0.0 0.0 0.0 0.0 110.0 283.0 678.0 832.0 135.0
法國 EUROPE 法國 France 28967.0 24245.0 26423.0 26696.0 29287.0 27973.0 442.0 23518.0 23960.0 31337.0 30132.0 33000.0
德國 EUROPE 德國 Germany 18911.0 20524.0 25160.0 33911.0 33651.0 37105.0 38205.0 32797.0 31975.0 35378.0 36271.0 41122.0
義大利 EUROPE 義大利 Italy 16346.0 16367.0 24484.0 25809.0 20552.0 17175.0 14656.0 9726.0 7719.0 9355.0 12718.0 70.0
荷蘭 EUROPE 荷蘭 Netherlands 129124.0 105885.0 128162.0 121728.0 93422.0 85352.0 98321.0 84535.0 43955.0 85238.0 83253.0 22102.0
瑞士 EUROPE 瑞士 Switzerland 4.0 2.0 0.0 0.0 0.0 0.0 169.0 565.0 919.0 1414.0 64.0 0.0
英國 EUROPE 英國 U.K. 25764.0 23432.0 34071.0 33831.0 39255.0 38310.0 39114.0 50621.0 36142.0 36376.0 38002.0 34567.0
奧地利 EUROPE 奧地利 Austria 24654.0 21754.0 22045.0 39047.0 42096.0 38107.0 34080.0 34829.0 26081.0 35901.0 39734.0 23487.0
歐洲其他地區 EUROPE 歐洲其他地區 Others 771.0 7.0 0.0 0.0 0.0 475.0 36.0 191.0 1654.0 4063.0 586.0 18.0
澳大利亞 OCEANIA 澳大利亞 Australia 70141.0 70679.0 75957.0 87912.0 76424.0 75408.0 66543.0 89793.0 74787.0 54889.0 49986.0 69824.0
紐西蘭 OCEANIA 紐西蘭 New Zealand 35758.0 24819.0 21047.0 20742.0 21495.0 17565.0 10732.0 1.0 997.0 15962.0 1621.0 6.0
帛琉 OCEANIA 帛琉 Palau 15812.0 28388.0 41909.0 31012.0 26685.0 28238.0 15918.0 13264.0 19951.0 30079.0 37512.0 27164.0
大洋洲其他地區 OCEANIA 大洋洲其他地區 Others 0.0 0.0 0.0 0.0 0.0 129.0 28.0 57.0 110.0 684.0 47.0 126.0
南非 AFRICA 南非 S.Africa 0.0 0.0 0.0 0.0 0.0 0.0 38.0 0.0 0.0 1.0 6.0 2.0
非洲其他地區 AFRICA 非洲其他地區 Others 0.0 0.0 0.0 0.0 0.0 1.0 2.0 2838.0 1110.0 237.0 1820.0 12.0
非洲合計 AFRICA 非洲合計 Total 0.0 0.0 0.0 0.0 0.0 1.0 40.0 2838.0 1110.0 238.0 1826.0 14.0
其他 Others 其他 Others 118789.0 159724.0 304234.0 363672.0 352526.0 480264.0 592862.0 143312.0 3519.0 7486.0 3397.0 442.0
總計 NaN NaN 7319466.0 5923072.0 7780652.0 8208125.0 8671375.0 8963713.0 8465212.0 8145784.0 9416184.0 9584111.0 10241586.0 11087488.0

Missing Value


.dropna() : 刪除 missing value

如果 Aboard 中一整列的資料只要有 missing value 就刪除

參數 axis=0 : 列、縱向(上下) vertical
參數 axis=1 : 行、橫向(左右) horizontal

In [127]:
Aboard = Aboard.dropna(axis=0,how='any')
In [128]:
Aboard
Out[128]:
Continent Country 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013
香港 ASIA 香港 Hong Kong 2418872.0 1869069.0 2559705.0 2807027.0 2993317.0 3030971.0 2851170.0 2261001.0 2308633.0 2156760.0 2021212.0 2038732.0
大陸 ASIA 大陸 Mainland China 1.0 44.0 0.0 0.0 0.0 0.0 188744.0 1516087.0 2424242.0 2846572.0 3139055.0 3072327.0
日本 ASIA 日本 Japan 797460.0 731330.0 1051954.0 1180406.0 1214058.0 1280853.0 1309847.0 1113857.0 1377957.0 1136394.0 1560300.0 2346007.0
韓國 ASIA 韓國 Korea 120208.0 179893.0 298325.0 368206.0 396705.0 457095.0 363122.0 388806.0 406290.0 423266.0 532729.0 518528.0
新加坡 ASIA 新加坡 Singapore 190455.0 125491.0 160088.0 184926.0 204834.0 189835.0 167479.0 137348.0 166126.0 207808.0 241893.0 297588.0
馬來西亞 ASIA 馬來西亞 Malaysia 186791.0 121267.0 180883.0 161296.0 181911.0 187788.0 157650.0 153695.0 212509.0 209164.0 193170.0 226919.0
泰國 ASIA 泰國 Thailand 530945.0 392414.0 422189.0 268231.0 379275.0 353439.0 332997.0 258449.0 350074.0 382635.0 306746.0 507616.0
菲律賓 ASIA 菲律賓 Philippines 128158.0 91418.0 112552.0 119125.0 110041.0 107824.0 114155.0 97372.0 139762.0 178876.0 211385.0 129361.0
印尼 ASIA 印尼 Indonesia 259610.0 251284.0 283757.0 185348.0 186165.0 201358.0 186117.0 173429.0 179845.0 212826.0 198893.0 166378.0
汶淶 ASIA 汶淶 Brunei 5850.0 3770.0 5795.0 296.0 276.0 670.0 1233.0 216.0 714.0 1628.0 1100.0 2411.0
越南 ASIA 越南 Vietnam 225733.0 222487.0 266115.0 234009.0 242852.0 272020.0 285263.0 264819.0 313987.0 318587.0 341511.0 361957.0
澳門 ASIA 澳門 Macao 1269840.0 837936.0 1038006.0 1163822.0 1232232.0 1196110.0 926593.0 739263.0 667910.0 587633.0 527050.0 514701.0
緬甸 ASIA 緬甸 Myanmar 19814.0 17152.0 18064.0 15518.0 14606.0 13336.0 10608.0 11570.0 14097.0 16263.0 18380.0 23864.0
亞洲其他地區 ASIA 亞洲其他地區 Others 15894.0 9190.0 31097.0 52211.0 92672.0 151278.0 78065.0 63519.0 80531.0 83802.0 8574.0 121210.0
美國 AMERICA 美國 U.S.A. 532180.0 479264.0 536217.0 578998.0 593794.0 587872.0 515590.0 415465.0 436233.0 404848.0 469568.0 381374.0
加拿大 AMERICA 加拿大 Canada 132605.0 95226.0 112413.0 104346.0 93244.0 87161.0 65393.0 61893.0 63002.0 67733.0 66614.0 65086.0
美洲其他地區 AMERICA 美洲其他地區 Others 9.0 11.0 0.0 0.0 0.0 0.0 0.0 110.0 283.0 678.0 832.0 135.0
法國 EUROPE 法國 France 28967.0 24245.0 26423.0 26696.0 29287.0 27973.0 442.0 23518.0 23960.0 31337.0 30132.0 33000.0
德國 EUROPE 德國 Germany 18911.0 20524.0 25160.0 33911.0 33651.0 37105.0 38205.0 32797.0 31975.0 35378.0 36271.0 41122.0
義大利 EUROPE 義大利 Italy 16346.0 16367.0 24484.0 25809.0 20552.0 17175.0 14656.0 9726.0 7719.0 9355.0 12718.0 70.0
荷蘭 EUROPE 荷蘭 Netherlands 129124.0 105885.0 128162.0 121728.0 93422.0 85352.0 98321.0 84535.0 43955.0 85238.0 83253.0 22102.0
瑞士 EUROPE 瑞士 Switzerland 4.0 2.0 0.0 0.0 0.0 0.0 169.0 565.0 919.0 1414.0 64.0 0.0
英國 EUROPE 英國 U.K. 25764.0 23432.0 34071.0 33831.0 39255.0 38310.0 39114.0 50621.0 36142.0 36376.0 38002.0 34567.0
奧地利 EUROPE 奧地利 Austria 24654.0 21754.0 22045.0 39047.0 42096.0 38107.0 34080.0 34829.0 26081.0 35901.0 39734.0 23487.0
歐洲其他地區 EUROPE 歐洲其他地區 Others 771.0 7.0 0.0 0.0 0.0 475.0 36.0 191.0 1654.0 4063.0 586.0 18.0
澳大利亞 OCEANIA 澳大利亞 Australia 70141.0 70679.0 75957.0 87912.0 76424.0 75408.0 66543.0 89793.0 74787.0 54889.0 49986.0 69824.0
紐西蘭 OCEANIA 紐西蘭 New Zealand 35758.0 24819.0 21047.0 20742.0 21495.0 17565.0 10732.0 1.0 997.0 15962.0 1621.0 6.0
帛琉 OCEANIA 帛琉 Palau 15812.0 28388.0 41909.0 31012.0 26685.0 28238.0 15918.0 13264.0 19951.0 30079.0 37512.0 27164.0
大洋洲其他地區 OCEANIA 大洋洲其他地區 Others 0.0 0.0 0.0 0.0 0.0 129.0 28.0 57.0 110.0 684.0 47.0 126.0
南非 AFRICA 南非 S.Africa 0.0 0.0 0.0 0.0 0.0 0.0 38.0 0.0 0.0 1.0 6.0 2.0
非洲其他地區 AFRICA 非洲其他地區 Others 0.0 0.0 0.0 0.0 0.0 1.0 2.0 2838.0 1110.0 237.0 1820.0 12.0
非洲合計 AFRICA 非洲合計 Total 0.0 0.0 0.0 0.0 0.0 1.0 40.0 2838.0 1110.0 238.0 1826.0 14.0
其他 Others 其他 Others 118789.0 159724.0 304234.0 363672.0 352526.0 480264.0 592862.0 143312.0 3519.0 7486.0 3397.0 442.0

Missing Value


.dropna() : 刪除 missing value

Note

Aboard = Aboard.dropna(axis=0,how='any')
  • how = 'any':只要其中一筆有就刪除
  • how = 'all':全部都有才刪除

Pandas


Combine

Combine


  • .concat( ):縱向、橫向合併,可以在 axis = 參數指定,預設是 axis = 0
  • .merge( ):欲使用不同的合併方式,可以在 how = 參數指定,預設是 inner join

Combine


Note

檢查資料

In [129]:
Aboard.shape
Out[129]:
(33, 14)

拆資料

In [130]:
Aboard_up = Aboard.iloc[:15, :]
Aboard_down = Aboard.iloc[15:, :]
In [131]:
Aboard_left = Aboard.iloc[:, :7]
Aboard_right = Aboard.iloc[:, 7:]

Combine


.concat( )

縱向合併:axis=0,Default

參數 axis=0 : 列、縱向(上下) vertical
參數 axis=1 : 行、橫向(左右) horizontal

In [132]:
Aboard_vertical = pd.concat([Aboard_up,Aboard_down])
In [133]:
Aboard_vertical.shape
Out[133]:
(33, 14)
In [134]:
Aboard_vertical.head(2)
Out[134]:
Continent Country 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013
香港 ASIA 香港 Hong Kong 2418872.0 1869069.0 2559705.0 2807027.0 2993317.0 3030971.0 2851170.0 2261001.0 2308633.0 2156760.0 2021212.0 2038732.0
大陸 ASIA 大陸 Mainland China 1.0 44.0 0.0 0.0 0.0 0.0 188744.0 1516087.0 2424242.0 2846572.0 3139055.0 3072327.0

Combine


.concat( )

橫向合併:axis=1

參數 axis=0 : 列、縱向(上下) vertical
參數 axis=1 : 行、橫向(左右) horizontal

In [135]:
Aboard_horizontal  = pd.concat([Aboard_left,Aboard_right],axis=1)
In [136]:
Aboard_horizontal.shape
Out[136]:
(33, 14)
In [137]:
Aboard_horizontal.head(2)
Out[137]:
Continent Country 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013
香港 ASIA 香港 Hong Kong 2418872.0 1869069.0 2559705.0 2807027.0 2993317.0 3030971.0 2851170.0 2261001.0 2308633.0 2156760.0 2021212.0 2038732.0
大陸 ASIA 大陸 Mainland China 1.0 44.0 0.0 0.0 0.0 0.0 188744.0 1516087.0 2424242.0 2846572.0 3139055.0 3072327.0

Combine


Note

SQL Join

SQL Join

Combine


Note

檢查資料 ( Aboard )

In [138]:
Aboard.shape
Out[138]:
(33, 14)
In [139]:
Aboard.index
Out[139]:
Index(['香港', '大陸', '日本', '韓國', '新加坡', '馬來西亞', '泰國', '菲律賓', '印尼', '汶淶', '越南',
       '澳門', '緬甸', '亞洲其他地區', '美國', '加拿大', '美洲其他地區', '法國', '德國', '義大利', '荷蘭',
       '瑞士', '英國', '奧地利', '歐洲其他地區', '澳大利亞', '紐西蘭', '帛琉', '大洋洲其他地區', '南非',
       '非洲其他地區', '非洲合計', '其他'],
      dtype='object')

Combine


Note

檢查資料 ( Aboard_2 )

In [140]:
Aboard_2.shape
Out[140]:
(36, 3)
In [141]:
Aboard_2.index
Out[141]:
Index(['香港', '大陸', '日本', '韓國', '新加坡', '馬來西亞', '泰國', '菲律賓', '印尼', '汶淶', '越南',
       '澳門', '緬甸', '柬埔寨', '亞洲其他地區', '亞洲合計', '美國', '加拿大', '美洲其他地區', '美洲合計',
       '法國', '德國', '義大利', '荷蘭', '瑞士', '英國', '奧地利', '歐洲其他地區', '歐洲合計', '澳大利亞',
       '紐西蘭', '帛琉', '大洋洲其他地區', '大洋洲合計', '其他', '總計'],
      dtype='object')

Combine


Note

建立一個名為 Key 的 column

In [142]:
Aboard = Aboard.iloc[:,0:14]
Aboard.loc[:,'Key'] = Aboard.index
In [143]:
Aboard_2.loc[:,'Key'] = Aboard_2.index

Combine


.merge( )

Inner Join

合併 Aboard , Aboard_2 ( 找出 Aboard , Aboard_2 共同有的)

In [144]:
Aboard_inner = pd.merge(Aboard , Aboard_2)
In [145]:
Aboard_inner.shape
Out[145]:
(30, 18)
In [146]:
Aboard_inner
Out[146]:
Continent Country 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 Key 2014 2015 2016
0 ASIA 香港 Hong Kong 2418872.0 1869069.0 2559705.0 2807027.0 2993317.0 3030971.0 2851170.0 2261001.0 2308633.0 2156760.0 2021212.0 2038732.0 香港 2018129 2008153 1902647
1 ASIA 大陸 Mainland China 1.0 44.0 0.0 0.0 0.0 0.0 188744.0 1516087.0 2424242.0 2846572.0 3139055.0 3072327.0 大陸 3267238 3403920 3685477
2 ASIA 日本 Japan 797460.0 731330.0 1051954.0 1180406.0 1214058.0 1280853.0 1309847.0 1113857.0 1377957.0 1136394.0 1560300.0 2346007.0 日本 2971846 3797879 4295240
3 ASIA 韓國 Korea 120208.0 179893.0 298325.0 368206.0 396705.0 457095.0 363122.0 388806.0 406290.0 423266.0 532729.0 518528.0 韓國 626694 500100 808420
4 ASIA 新加坡 Singapore 190455.0 125491.0 160088.0 184926.0 204834.0 189835.0 167479.0 137348.0 166126.0 207808.0 241893.0 297588.0 新加坡 283925 318516 319915
5 ASIA 馬來西亞 Malaysia 186791.0 121267.0 180883.0 161296.0 181911.0 187788.0 157650.0 153695.0 212509.0 209164.0 193170.0 226919.0 馬來西亞 198902 201631 245298
6 ASIA 泰國 Thailand 530945.0 392414.0 422189.0 268231.0 379275.0 353439.0 332997.0 258449.0 350074.0 382635.0 306746.0 507616.0 泰國 419133 599523 532787
7 ASIA 菲律賓 Philippines 128158.0 91418.0 112552.0 119125.0 110041.0 107824.0 114155.0 97372.0 139762.0 178876.0 211385.0 129361.0 菲律賓 133583 180091 231801
8 ASIA 印尼 Indonesia 259610.0 251284.0 283757.0 185348.0 186165.0 201358.0 186117.0 173429.0 179845.0 212826.0 198893.0 166378.0 印尼 170301 176478 175738
9 ASIA 汶淶 Brunei 5850.0 3770.0 5795.0 296.0 276.0 670.0 1233.0 216.0 714.0 1628.0 1100.0 2411.0 汶淶 298 285 540
10 ASIA 越南 Vietnam 225733.0 222487.0 266115.0 234009.0 242852.0 272020.0 285263.0 264819.0 313987.0 318587.0 341511.0 361957.0 越南 339107 409013 465944
11 ASIA 澳門 Macao 1269840.0 837936.0 1038006.0 1163822.0 1232232.0 1196110.0 926593.0 739263.0 667910.0 587633.0 527050.0 514701.0 澳門 493188 527144 598850
12 ASIA 緬甸 Myanmar 19814.0 17152.0 18064.0 15518.0 14606.0 13336.0 10608.0 11570.0 14097.0 16263.0 18380.0 23864.0 緬甸 22817 19999 25196
13 ASIA 亞洲其他地區 Others 15894.0 9190.0 31097.0 52211.0 92672.0 151278.0 78065.0 63519.0 80531.0 83802.0 8574.0 121210.0 亞洲其他地區 81308 143963 183933
14 AMERICA 美國 U.S.A. 532180.0 479264.0 536217.0 578998.0 593794.0 587872.0 515590.0 415465.0 436233.0 404848.0 469568.0 381374.0 美國 425138 477156 527099
15 AMERICA 加拿大 Canada 132605.0 95226.0 112413.0 104346.0 93244.0 87161.0 65393.0 61893.0 63002.0 67733.0 66614.0 65086.0 加拿大 70285 71079 93405
16 AMERICA 美洲其他地區 Others 9.0 11.0 0.0 0.0 0.0 0.0 0.0 110.0 283.0 678.0 832.0 135.0 美洲其他地區 56 32 2687
17 EUROPE 法國 France 28967.0 24245.0 26423.0 26696.0 29287.0 27973.0 442.0 23518.0 23960.0 31337.0 30132.0 33000.0 法國 39126 41185 46461
18 EUROPE 德國 Germany 18911.0 20524.0 25160.0 33911.0 33651.0 37105.0 38205.0 32797.0 31975.0 35378.0 36271.0 41122.0 德國 44251 53043 66454
19 EUROPE 義大利 Italy 16346.0 16367.0 24484.0 25809.0 20552.0 17175.0 14656.0 9726.0 7719.0 9355.0 12718.0 70.0 義大利 0 14 13054
20 EUROPE 荷蘭 Netherlands 129124.0 105885.0 128162.0 121728.0 93422.0 85352.0 98321.0 84535.0 43955.0 85238.0 83253.0 22102.0 荷蘭 22749 30906 32851
21 EUROPE 瑞士 Switzerland 4.0 2.0 0.0 0.0 0.0 0.0 169.0 565.0 919.0 1414.0 64.0 0.0 瑞士 0 0 5529
22 EUROPE 英國 U.K. 25764.0 23432.0 34071.0 33831.0 39255.0 38310.0 39114.0 50621.0 36142.0 36376.0 38002.0 34567.0 英國 0 0 16321
23 EUROPE 奧地利 Austria 24654.0 21754.0 22045.0 39047.0 42096.0 38107.0 34080.0 34829.0 26081.0 35901.0 39734.0 23487.0 奧地利 26256 32835 41934
24 EUROPE 歐洲其他地區 Others 771.0 7.0 0.0 0.0 0.0 475.0 36.0 191.0 1654.0 4063.0 586.0 18.0 歐洲其他地區 1295 3546 35483
25 OCEANIA 澳大利亞 Australia 70141.0 70679.0 75957.0 87912.0 76424.0 75408.0 66543.0 89793.0 74787.0 54889.0 49986.0 69824.0 澳大利亞 85745 103806 139501
26 OCEANIA 紐西蘭 New Zealand 35758.0 24819.0 21047.0 20742.0 21495.0 17565.0 10732.0 1.0 997.0 15962.0 1621.0 6.0 紐西蘭 0 3 2804
27 OCEANIA 帛琉 Palau 15812.0 28388.0 41909.0 31012.0 26685.0 28238.0 15918.0 13264.0 19951.0 30079.0 37512.0 27164.0 帛琉 30471 14421 14203
28 OCEANIA 大洋洲其他地區 Others 0.0 0.0 0.0 0.0 0.0 129.0 28.0 57.0 110.0 684.0 47.0 126.0 大洋洲其他地區 126 160 1218
29 Others 其他 Others 118789.0 159724.0 304234.0 363672.0 352526.0 480264.0 592862.0 143312.0 3519.0 7486.0 3397.0 442.0 其他 3460 1472 5646

Combine


.merge( )

Outer Join

合併 Aboard , Aboard_2 ( 找出 Aboard , Aboard_2 其中一個有的就可以)

In [147]:
Aboard_outer = pd.merge(Aboard , Aboard_2 ,how='outer')
In [148]:
Aboard_outer.shape
Out[148]:
(39, 18)
In [149]:
Aboard_outer
Out[149]:
Continent Country 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 Key 2014 2015 2016
0 ASIA 香港 Hong Kong 2418872.0 1869069.0 2559705.0 2807027.0 2993317.0 3030971.0 2851170.0 2261001.0 2308633.0 2156760.0 2021212.0 2038732.0 香港 2018129.0 2008153.0 1902647.0
1 ASIA 大陸 Mainland China 1.0 44.0 0.0 0.0 0.0 0.0 188744.0 1516087.0 2424242.0 2846572.0 3139055.0 3072327.0 大陸 3267238.0 3403920.0 3685477.0
2 ASIA 日本 Japan 797460.0 731330.0 1051954.0 1180406.0 1214058.0 1280853.0 1309847.0 1113857.0 1377957.0 1136394.0 1560300.0 2346007.0 日本 2971846.0 3797879.0 4295240.0
3 ASIA 韓國 Korea 120208.0 179893.0 298325.0 368206.0 396705.0 457095.0 363122.0 388806.0 406290.0 423266.0 532729.0 518528.0 韓國 626694.0 500100.0 808420.0
4 ASIA 新加坡 Singapore 190455.0 125491.0 160088.0 184926.0 204834.0 189835.0 167479.0 137348.0 166126.0 207808.0 241893.0 297588.0 新加坡 283925.0 318516.0 319915.0
5 ASIA 馬來西亞 Malaysia 186791.0 121267.0 180883.0 161296.0 181911.0 187788.0 157650.0 153695.0 212509.0 209164.0 193170.0 226919.0 馬來西亞 198902.0 201631.0 245298.0
6 ASIA 泰國 Thailand 530945.0 392414.0 422189.0 268231.0 379275.0 353439.0 332997.0 258449.0 350074.0 382635.0 306746.0 507616.0 泰國 419133.0 599523.0 532787.0
7 ASIA 菲律賓 Philippines 128158.0 91418.0 112552.0 119125.0 110041.0 107824.0 114155.0 97372.0 139762.0 178876.0 211385.0 129361.0 菲律賓 133583.0 180091.0 231801.0
8 ASIA 印尼 Indonesia 259610.0 251284.0 283757.0 185348.0 186165.0 201358.0 186117.0 173429.0 179845.0 212826.0 198893.0 166378.0 印尼 170301.0 176478.0 175738.0
9 ASIA 汶淶 Brunei 5850.0 3770.0 5795.0 296.0 276.0 670.0 1233.0 216.0 714.0 1628.0 1100.0 2411.0 汶淶 298.0 285.0 540.0
10 ASIA 越南 Vietnam 225733.0 222487.0 266115.0 234009.0 242852.0 272020.0 285263.0 264819.0 313987.0 318587.0 341511.0 361957.0 越南 339107.0 409013.0 465944.0
11 ASIA 澳門 Macao 1269840.0 837936.0 1038006.0 1163822.0 1232232.0 1196110.0 926593.0 739263.0 667910.0 587633.0 527050.0 514701.0 澳門 493188.0 527144.0 598850.0
12 ASIA 緬甸 Myanmar 19814.0 17152.0 18064.0 15518.0 14606.0 13336.0 10608.0 11570.0 14097.0 16263.0 18380.0 23864.0 緬甸 22817.0 19999.0 25196.0
13 ASIA 亞洲其他地區 Others 15894.0 9190.0 31097.0 52211.0 92672.0 151278.0 78065.0 63519.0 80531.0 83802.0 8574.0 121210.0 亞洲其他地區 81308.0 143963.0 183933.0
14 AMERICA 美國 U.S.A. 532180.0 479264.0 536217.0 578998.0 593794.0 587872.0 515590.0 415465.0 436233.0 404848.0 469568.0 381374.0 美國 425138.0 477156.0 527099.0
15 AMERICA 加拿大 Canada 132605.0 95226.0 112413.0 104346.0 93244.0 87161.0 65393.0 61893.0 63002.0 67733.0 66614.0 65086.0 加拿大 70285.0 71079.0 93405.0
16 AMERICA 美洲其他地區 Others 9.0 11.0 0.0 0.0 0.0 0.0 0.0 110.0 283.0 678.0 832.0 135.0 美洲其他地區 56.0 32.0 2687.0
17 EUROPE 法國 France 28967.0 24245.0 26423.0 26696.0 29287.0 27973.0 442.0 23518.0 23960.0 31337.0 30132.0 33000.0 法國 39126.0 41185.0 46461.0
18 EUROPE 德國 Germany 18911.0 20524.0 25160.0 33911.0 33651.0 37105.0 38205.0 32797.0 31975.0 35378.0 36271.0 41122.0 德國 44251.0 53043.0 66454.0
19 EUROPE 義大利 Italy 16346.0 16367.0 24484.0 25809.0 20552.0 17175.0 14656.0 9726.0 7719.0 9355.0 12718.0 70.0 義大利 0.0 14.0 13054.0
20 EUROPE 荷蘭 Netherlands 129124.0 105885.0 128162.0 121728.0 93422.0 85352.0 98321.0 84535.0 43955.0 85238.0 83253.0 22102.0 荷蘭 22749.0 30906.0 32851.0
21 EUROPE 瑞士 Switzerland 4.0 2.0 0.0 0.0 0.0 0.0 169.0 565.0 919.0 1414.0 64.0 0.0 瑞士 0.0 0.0 5529.0
22 EUROPE 英國 U.K. 25764.0 23432.0 34071.0 33831.0 39255.0 38310.0 39114.0 50621.0 36142.0 36376.0 38002.0 34567.0 英國 0.0 0.0 16321.0
23 EUROPE 奧地利 Austria 24654.0 21754.0 22045.0 39047.0 42096.0 38107.0 34080.0 34829.0 26081.0 35901.0 39734.0 23487.0 奧地利 26256.0 32835.0 41934.0
24 EUROPE 歐洲其他地區 Others 771.0 7.0 0.0 0.0 0.0 475.0 36.0 191.0 1654.0 4063.0 586.0 18.0 歐洲其他地區 1295.0 3546.0 35483.0
25 OCEANIA 澳大利亞 Australia 70141.0 70679.0 75957.0 87912.0 76424.0 75408.0 66543.0 89793.0 74787.0 54889.0 49986.0 69824.0 澳大利亞 85745.0 103806.0 139501.0
26 OCEANIA 紐西蘭 New Zealand 35758.0 24819.0 21047.0 20742.0 21495.0 17565.0 10732.0 1.0 997.0 15962.0 1621.0 6.0 紐西蘭 0.0 3.0 2804.0
27 OCEANIA 帛琉 Palau 15812.0 28388.0 41909.0 31012.0 26685.0 28238.0 15918.0 13264.0 19951.0 30079.0 37512.0 27164.0 帛琉 30471.0 14421.0 14203.0
28 OCEANIA 大洋洲其他地區 Others 0.0 0.0 0.0 0.0 0.0 129.0 28.0 57.0 110.0 684.0 47.0 126.0 大洋洲其他地區 126.0 160.0 1218.0
29 AFRICA 南非 S.Africa 0.0 0.0 0.0 0.0 0.0 0.0 38.0 0.0 0.0 1.0 6.0 2.0 南非 NaN NaN NaN
30 AFRICA 非洲其他地區 Others 0.0 0.0 0.0 0.0 0.0 1.0 2.0 2838.0 1110.0 237.0 1820.0 12.0 非洲其他地區 NaN NaN NaN
31 AFRICA 非洲合計 Total 0.0 0.0 0.0 0.0 0.0 1.0 40.0 2838.0 1110.0 238.0 1826.0 14.0 非洲合計 NaN NaN NaN
32 Others 其他 Others 118789.0 159724.0 304234.0 363672.0 352526.0 480264.0 592862.0 143312.0 3519.0 7486.0 3397.0 442.0 其他 3460.0 1472.0 5646.0
33 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 柬埔寨 69195.0 66593.0 67281.0
34 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 亞洲合計 11095664.0 12353288.0 13539067.0
35 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 美洲合計 495479.0 548267.0 623191.0
36 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 歐洲合計 133677.0 161529.0 258087.0
37 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 大洋洲合計 116342.0 118390.0 157726.0
38 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 總計 23685810.0 26364480.0 29172200.0

Combine


.merge( )

Left Join

合併 Aboard , Aboard_2 ( 找出只有 Aboard 有的部分<放在左邊的> )

In [150]:
Aboard_left = pd.merge(Aboard , Aboard_2 ,how='left')
In [151]:
Aboard_left.shape
Out[151]:
(33, 18)
In [152]:
Aboard_left
Out[152]:
Continent Country 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 Key 2014 2015 2016
0 ASIA 香港 Hong Kong 2418872.0 1869069.0 2559705.0 2807027.0 2993317.0 3030971.0 2851170.0 2261001.0 2308633.0 2156760.0 2021212.0 2038732.0 香港 2018129.0 2008153.0 1902647.0
1 ASIA 大陸 Mainland China 1.0 44.0 0.0 0.0 0.0 0.0 188744.0 1516087.0 2424242.0 2846572.0 3139055.0 3072327.0 大陸 3267238.0 3403920.0 3685477.0
2 ASIA 日本 Japan 797460.0 731330.0 1051954.0 1180406.0 1214058.0 1280853.0 1309847.0 1113857.0 1377957.0 1136394.0 1560300.0 2346007.0 日本 2971846.0 3797879.0 4295240.0
3 ASIA 韓國 Korea 120208.0 179893.0 298325.0 368206.0 396705.0 457095.0 363122.0 388806.0 406290.0 423266.0 532729.0 518528.0 韓國 626694.0 500100.0 808420.0
4 ASIA 新加坡 Singapore 190455.0 125491.0 160088.0 184926.0 204834.0 189835.0 167479.0 137348.0 166126.0 207808.0 241893.0 297588.0 新加坡 283925.0 318516.0 319915.0
5 ASIA 馬來西亞 Malaysia 186791.0 121267.0 180883.0 161296.0 181911.0 187788.0 157650.0 153695.0 212509.0 209164.0 193170.0 226919.0 馬來西亞 198902.0 201631.0 245298.0
6 ASIA 泰國 Thailand 530945.0 392414.0 422189.0 268231.0 379275.0 353439.0 332997.0 258449.0 350074.0 382635.0 306746.0 507616.0 泰國 419133.0 599523.0 532787.0
7 ASIA 菲律賓 Philippines 128158.0 91418.0 112552.0 119125.0 110041.0 107824.0 114155.0 97372.0 139762.0 178876.0 211385.0 129361.0 菲律賓 133583.0 180091.0 231801.0
8 ASIA 印尼 Indonesia 259610.0 251284.0 283757.0 185348.0 186165.0 201358.0 186117.0 173429.0 179845.0 212826.0 198893.0 166378.0 印尼 170301.0 176478.0 175738.0
9 ASIA 汶淶 Brunei 5850.0 3770.0 5795.0 296.0 276.0 670.0 1233.0 216.0 714.0 1628.0 1100.0 2411.0 汶淶 298.0 285.0 540.0
10 ASIA 越南 Vietnam 225733.0 222487.0 266115.0 234009.0 242852.0 272020.0 285263.0 264819.0 313987.0 318587.0 341511.0 361957.0 越南 339107.0 409013.0 465944.0
11 ASIA 澳門 Macao 1269840.0 837936.0 1038006.0 1163822.0 1232232.0 1196110.0 926593.0 739263.0 667910.0 587633.0 527050.0 514701.0 澳門 493188.0 527144.0 598850.0
12 ASIA 緬甸 Myanmar 19814.0 17152.0 18064.0 15518.0 14606.0 13336.0 10608.0 11570.0 14097.0 16263.0 18380.0 23864.0 緬甸 22817.0 19999.0 25196.0
13 ASIA 亞洲其他地區 Others 15894.0 9190.0 31097.0 52211.0 92672.0 151278.0 78065.0 63519.0 80531.0 83802.0 8574.0 121210.0 亞洲其他地區 81308.0 143963.0 183933.0
14 AMERICA 美國 U.S.A. 532180.0 479264.0 536217.0 578998.0 593794.0 587872.0 515590.0 415465.0 436233.0 404848.0 469568.0 381374.0 美國 425138.0 477156.0 527099.0
15 AMERICA 加拿大 Canada 132605.0 95226.0 112413.0 104346.0 93244.0 87161.0 65393.0 61893.0 63002.0 67733.0 66614.0 65086.0 加拿大 70285.0 71079.0 93405.0
16 AMERICA 美洲其他地區 Others 9.0 11.0 0.0 0.0 0.0 0.0 0.0 110.0 283.0 678.0 832.0 135.0 美洲其他地區 56.0 32.0 2687.0
17 EUROPE 法國 France 28967.0 24245.0 26423.0 26696.0 29287.0 27973.0 442.0 23518.0 23960.0 31337.0 30132.0 33000.0 法國 39126.0 41185.0 46461.0
18 EUROPE 德國 Germany 18911.0 20524.0 25160.0 33911.0 33651.0 37105.0 38205.0 32797.0 31975.0 35378.0 36271.0 41122.0 德國 44251.0 53043.0 66454.0
19 EUROPE 義大利 Italy 16346.0 16367.0 24484.0 25809.0 20552.0 17175.0 14656.0 9726.0 7719.0 9355.0 12718.0 70.0 義大利 0.0 14.0 13054.0
20 EUROPE 荷蘭 Netherlands 129124.0 105885.0 128162.0 121728.0 93422.0 85352.0 98321.0 84535.0 43955.0 85238.0 83253.0 22102.0 荷蘭 22749.0 30906.0 32851.0
21 EUROPE 瑞士 Switzerland 4.0 2.0 0.0 0.0 0.0 0.0 169.0 565.0 919.0 1414.0 64.0 0.0 瑞士 0.0 0.0 5529.0
22 EUROPE 英國 U.K. 25764.0 23432.0 34071.0 33831.0 39255.0 38310.0 39114.0 50621.0 36142.0 36376.0 38002.0 34567.0 英國 0.0 0.0 16321.0
23 EUROPE 奧地利 Austria 24654.0 21754.0 22045.0 39047.0 42096.0 38107.0 34080.0 34829.0 26081.0 35901.0 39734.0 23487.0 奧地利 26256.0 32835.0 41934.0
24 EUROPE 歐洲其他地區 Others 771.0 7.0 0.0 0.0 0.0 475.0 36.0 191.0 1654.0 4063.0 586.0 18.0 歐洲其他地區 1295.0 3546.0 35483.0
25 OCEANIA 澳大利亞 Australia 70141.0 70679.0 75957.0 87912.0 76424.0 75408.0 66543.0 89793.0 74787.0 54889.0 49986.0 69824.0 澳大利亞 85745.0 103806.0 139501.0
26 OCEANIA 紐西蘭 New Zealand 35758.0 24819.0 21047.0 20742.0 21495.0 17565.0 10732.0 1.0 997.0 15962.0 1621.0 6.0 紐西蘭 0.0 3.0 2804.0
27 OCEANIA 帛琉 Palau 15812.0 28388.0 41909.0 31012.0 26685.0 28238.0 15918.0 13264.0 19951.0 30079.0 37512.0 27164.0 帛琉 30471.0 14421.0 14203.0
28 OCEANIA 大洋洲其他地區 Others 0.0 0.0 0.0 0.0 0.0 129.0 28.0 57.0 110.0 684.0 47.0 126.0 大洋洲其他地區 126.0 160.0 1218.0
29 AFRICA 南非 S.Africa 0.0 0.0 0.0 0.0 0.0 0.0 38.0 0.0 0.0 1.0 6.0 2.0 南非 NaN NaN NaN
30 AFRICA 非洲其他地區 Others 0.0 0.0 0.0 0.0 0.0 1.0 2.0 2838.0 1110.0 237.0 1820.0 12.0 非洲其他地區 NaN NaN NaN
31 AFRICA 非洲合計 Total 0.0 0.0 0.0 0.0 0.0 1.0 40.0 2838.0 1110.0 238.0 1826.0 14.0 非洲合計 NaN NaN NaN
32 Others 其他 Others 118789.0 159724.0 304234.0 363672.0 352526.0 480264.0 592862.0 143312.0 3519.0 7486.0 3397.0 442.0 其他 3460.0 1472.0 5646.0

Combine


.merge( )

Right Join

合併 Aboard , Aboard_2 ( 找出只有 Aboard_2 有的部分<放在右邊的> )

In [153]:
Aboard_right = pd.merge(Aboard , Aboard_2 ,how='right')
In [154]:
Aboard_right.shape
Out[154]:
(36, 18)
In [155]:
Aboard_right
Out[155]:
Continent Country 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 Key 2014 2015 2016
0 ASIA 香港 Hong Kong 2418872.0 1869069.0 2559705.0 2807027.0 2993317.0 3030971.0 2851170.0 2261001.0 2308633.0 2156760.0 2021212.0 2038732.0 香港 2018129 2008153 1902647
1 ASIA 大陸 Mainland China 1.0 44.0 0.0 0.0 0.0 0.0 188744.0 1516087.0 2424242.0 2846572.0 3139055.0 3072327.0 大陸 3267238 3403920 3685477
2 ASIA 日本 Japan 797460.0 731330.0 1051954.0 1180406.0 1214058.0 1280853.0 1309847.0 1113857.0 1377957.0 1136394.0 1560300.0 2346007.0 日本 2971846 3797879 4295240
3 ASIA 韓國 Korea 120208.0 179893.0 298325.0 368206.0 396705.0 457095.0 363122.0 388806.0 406290.0 423266.0 532729.0 518528.0 韓國 626694 500100 808420
4 ASIA 新加坡 Singapore 190455.0 125491.0 160088.0 184926.0 204834.0 189835.0 167479.0 137348.0 166126.0 207808.0 241893.0 297588.0 新加坡 283925 318516 319915
5 ASIA 馬來西亞 Malaysia 186791.0 121267.0 180883.0 161296.0 181911.0 187788.0 157650.0 153695.0 212509.0 209164.0 193170.0 226919.0 馬來西亞 198902 201631 245298
6 ASIA 泰國 Thailand 530945.0 392414.0 422189.0 268231.0 379275.0 353439.0 332997.0 258449.0 350074.0 382635.0 306746.0 507616.0 泰國 419133 599523 532787
7 ASIA 菲律賓 Philippines 128158.0 91418.0 112552.0 119125.0 110041.0 107824.0 114155.0 97372.0 139762.0 178876.0 211385.0 129361.0 菲律賓 133583 180091 231801
8 ASIA 印尼 Indonesia 259610.0 251284.0 283757.0 185348.0 186165.0 201358.0 186117.0 173429.0 179845.0 212826.0 198893.0 166378.0 印尼 170301 176478 175738
9 ASIA 汶淶 Brunei 5850.0 3770.0 5795.0 296.0 276.0 670.0 1233.0 216.0 714.0 1628.0 1100.0 2411.0 汶淶 298 285 540
10 ASIA 越南 Vietnam 225733.0 222487.0 266115.0 234009.0 242852.0 272020.0 285263.0 264819.0 313987.0 318587.0 341511.0 361957.0 越南 339107 409013 465944
11 ASIA 澳門 Macao 1269840.0 837936.0 1038006.0 1163822.0 1232232.0 1196110.0 926593.0 739263.0 667910.0 587633.0 527050.0 514701.0 澳門 493188 527144 598850
12 ASIA 緬甸 Myanmar 19814.0 17152.0 18064.0 15518.0 14606.0 13336.0 10608.0 11570.0 14097.0 16263.0 18380.0 23864.0 緬甸 22817 19999 25196
13 ASIA 亞洲其他地區 Others 15894.0 9190.0 31097.0 52211.0 92672.0 151278.0 78065.0 63519.0 80531.0 83802.0 8574.0 121210.0 亞洲其他地區 81308 143963 183933
14 AMERICA 美國 U.S.A. 532180.0 479264.0 536217.0 578998.0 593794.0 587872.0 515590.0 415465.0 436233.0 404848.0 469568.0 381374.0 美國 425138 477156 527099
15 AMERICA 加拿大 Canada 132605.0 95226.0 112413.0 104346.0 93244.0 87161.0 65393.0 61893.0 63002.0 67733.0 66614.0 65086.0 加拿大 70285 71079 93405
16 AMERICA 美洲其他地區 Others 9.0 11.0 0.0 0.0 0.0 0.0 0.0 110.0 283.0 678.0 832.0 135.0 美洲其他地區 56 32 2687
17 EUROPE 法國 France 28967.0 24245.0 26423.0 26696.0 29287.0 27973.0 442.0 23518.0 23960.0 31337.0 30132.0 33000.0 法國 39126 41185 46461
18 EUROPE 德國 Germany 18911.0 20524.0 25160.0 33911.0 33651.0 37105.0 38205.0 32797.0 31975.0 35378.0 36271.0 41122.0 德國 44251 53043 66454
19 EUROPE 義大利 Italy 16346.0 16367.0 24484.0 25809.0 20552.0 17175.0 14656.0 9726.0 7719.0 9355.0 12718.0 70.0 義大利 0 14 13054
20 EUROPE 荷蘭 Netherlands 129124.0 105885.0 128162.0 121728.0 93422.0 85352.0 98321.0 84535.0 43955.0 85238.0 83253.0 22102.0 荷蘭 22749 30906 32851
21 EUROPE 瑞士 Switzerland 4.0 2.0 0.0 0.0 0.0 0.0 169.0 565.0 919.0 1414.0 64.0 0.0 瑞士 0 0 5529
22 EUROPE 英國 U.K. 25764.0 23432.0 34071.0 33831.0 39255.0 38310.0 39114.0 50621.0 36142.0 36376.0 38002.0 34567.0 英國 0 0 16321
23 EUROPE 奧地利 Austria 24654.0 21754.0 22045.0 39047.0 42096.0 38107.0 34080.0 34829.0 26081.0 35901.0 39734.0 23487.0 奧地利 26256 32835 41934
24 EUROPE 歐洲其他地區 Others 771.0 7.0 0.0 0.0 0.0 475.0 36.0 191.0 1654.0 4063.0 586.0 18.0 歐洲其他地區 1295 3546 35483
25 OCEANIA 澳大利亞 Australia 70141.0 70679.0 75957.0 87912.0 76424.0 75408.0 66543.0 89793.0 74787.0 54889.0 49986.0 69824.0 澳大利亞 85745 103806 139501
26 OCEANIA 紐西蘭 New Zealand 35758.0 24819.0 21047.0 20742.0 21495.0 17565.0 10732.0 1.0 997.0 15962.0 1621.0 6.0 紐西蘭 0 3 2804
27 OCEANIA 帛琉 Palau 15812.0 28388.0 41909.0 31012.0 26685.0 28238.0 15918.0 13264.0 19951.0 30079.0 37512.0 27164.0 帛琉 30471 14421 14203
28 OCEANIA 大洋洲其他地區 Others 0.0 0.0 0.0 0.0 0.0 129.0 28.0 57.0 110.0 684.0 47.0 126.0 大洋洲其他地區 126 160 1218
29 Others 其他 Others 118789.0 159724.0 304234.0 363672.0 352526.0 480264.0 592862.0 143312.0 3519.0 7486.0 3397.0 442.0 其他 3460 1472 5646
30 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 柬埔寨 69195 66593 67281
31 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 亞洲合計 11095664 12353288 13539067
32 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 美洲合計 495479 548267 623191
33 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 歐洲合計 133677 161529 258087
34 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 大洋洲合計 116342 118390 157726
35 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 總計 23685810 26364480 29172200

Pandas


Output File

Output File


  • .to_csv():資料輸出成 csv
  • .to_json():資料輸出成 json

Output File


.to_csv():資料輸出成 csv

將 Aboard_inner 輸出

In [156]:
Aboard_inner.to_csv("/Users/hsinyu/Desktop/Python資料分析/Data/Aboard_new.csv", index = False)

Note

Create Demo Data -- Temperature_Year

In [157]:
Year = ['2014','2014','2014','2015','2015','2015','2016','2016','2016']
City = ['Taipei','Taichung','Kaohsiung','Taipei','Taichung','Kaohsiung','Taipei','Taichung','Kaohsiung']
Average = [24.48,23.81,25.57,24.07,23.97,24.33,24.19,25.77,25.92]
Max = [30.5,30.1,30.3,30.0,29.7,30.6,30.3,29.4,30.2]
Min = [16.5,16.4,19.5,16.7,17.1,17.3,15.5,16.4,19.3]
Temperature_Year_table = {"Year" : Year,
                          "City" : City,
                          "Average" : Average,
                          "Max" : Max,
                          "Min" : Min}
Temperature_Year = pd.DataFrame(Temperature_Year_table)
print(Temperature_Year.shape)
Temperature_Year
(9, 5)
Out[157]:
Average City Max Min Year
0 24.48 Taipei 30.5 16.5 2014
1 23.81 Taichung 30.1 16.4 2014
2 25.57 Kaohsiung 30.3 19.5 2014
3 24.07 Taipei 30.0 16.7 2015
4 23.97 Taichung 29.7 17.1 2015
5 24.33 Kaohsiung 30.6 17.3 2015
6 24.19 Taipei 30.3 15.5 2016
7 25.77 Taichung 29.4 16.4 2016
8 25.92 Kaohsiung 30.2 19.3 2016

Note

Create Demo Data -- Temperature_Season

In [158]:
Year = ['2014','2014','2014','2014','2015','2015','2015','2015',
        '2014','2014','2014','2014','2015','2015','2015','2015',
        '2014','2014','2014','2014','2015','2015','2015','2015']
Season = ['Winter','Spring','Summer','Fall','Winter','Spring','Summer','Fall',
          'Winter','Spring','Summer','Fall','Winter','Spring','Summer','Fall',
          'Winter','Spring','Summer','Fall','Winter','Spring','Summer','Fall']
City = ['Taipei','Taipei','Taipei','Taipei','Taipei','Taipei','Taipei','Taipei',
        'Taichung','Taichung','Taichung','Taichung','Taichung','Taichung','Taichung','Taichung',
        'Kaohsiung','Kaohsiung','Kaohsiung','Kaohsiung','Kaohsiung','Kaohsiung','Kaohsiung','Kaohsiung']
Average=[16.6,22.2,29.57,25.57,18.8,22.57,29.53,25.37,
         16.83,23.23,29.2,25.97,18.27,24.0,28.97,26.1,
         20.0,25.43,29.53,27.3,19.87,26.03,29.63,27.57]
Temperature_Season_table = {"Year" : Year,
                            "City" : City,
                            "Season" : Season,
                            "Average" : Average }
Temperature_Season = pd.DataFrame(Temperature_Season_table)
print(Temperature_Season.shape)
Temperature_Season
(24, 4)
Out[158]:
Average City Season Year
0 16.60 Taipei Winter 2014
1 22.20 Taipei Spring 2014
2 29.57 Taipei Summer 2014
3 25.57 Taipei Fall 2014
4 18.80 Taipei Winter 2015
5 22.57 Taipei Spring 2015
6 29.53 Taipei Summer 2015
7 25.37 Taipei Fall 2015
8 16.83 Taichung Winter 2014
9 23.23 Taichung Spring 2014
10 29.20 Taichung Summer 2014
11 25.97 Taichung Fall 2014
12 18.27 Taichung Winter 2015
13 24.00 Taichung Spring 2015
14 28.97 Taichung Summer 2015
15 26.10 Taichung Fall 2015
16 20.00 Kaohsiung Winter 2014
17 25.43 Kaohsiung Spring 2014
18 29.53 Kaohsiung Summer 2014
19 27.30 Kaohsiung Fall 2014
20 19.87 Kaohsiung Winter 2015
21 26.03 Kaohsiung Spring 2015
22 29.63 Kaohsiung Summer 2015
23 27.57 Kaohsiung Fall 2015

Note

Create Demo Data -- Temperature

In [159]:
Year = ['2014','2014','2014','2014','2014','2014','2014','2014','2014','2014','2014','2014',
        '2015','2015','2015','2015','2015','2015','2015','2015','2015','2015','2015','2015',
        '2016','2016','2016','2016','2016','2016','2016','2016','2016','2016','2016','2016']
Month = ['JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC',
         'JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC',
         'JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC']
Season = ['Winter','Winter','Spring','Spring','Spring','Summer','Summer','Summer','Fall','Fall','Fall','Winter',
          'Winter','Winter','Spring','Spring','Spring','Summer','Summer','Summer','Fall','Fall','Fall','Winter',
          'Winter','Winter','Spring','Spring','Spring','Summer','Summer','Summer','Fall','Fall','Fall','Winter']
Taipei = [16.8,16.5,18.9,22.5,25.2,28.0,30.5,30.2,29.7,24.7,22.3,16.5,
          16.7,20.8,18.9,22.7,26.1,30.0,30.0,28.6,27.4,25.2,23.5,18.9,
          16.2,15.5,17.5,24.0,27.1,29.4,30.3,30.1,27.8,27.0,22.6,20.1]
Taichung = [16.4,17.0,19.8,24.1,25.8,28.6,30.1,28.9,29.2,25.6,23.1,17.1,
            17.1,18.1,20.7,24.4,26.9,29.7,29.2,28.0,27.8,26.2,24.3,19.6,
            16.8,16.4,18.3,24.9,27.6,28.8,29.4,28.9,27.9,27.5,23.4,20.4] 
Kaohsiung = [19.5,20.3,22.6,25.9,27.8,29.2,30.3,29.1,29.5,27.2,25.2,20.2,
             19.9,17.3,23.6,26.2,28.3,30.6,29.5,28.8,28.8,27.7,26.2,22.4,
             19.3,19.6,21.6,26.9,28.9,29.7,30.2,29.4,28.4,28.4,25.7,22.9]
Temperature_table = { "Year" : Year,
                      "Month" : Month,
                      "Season" : Season,
                      "Taipei" : Taipei,
                      "Taichung" : Taichung,
                      "Kaohsiung" : Kaohsiung }
Temperature = pd.DataFrame(Temperature_table)
print(Temperature.shape)
Temperature.head()
(36, 6)
Out[159]:
Kaohsiung Month Season Taichung Taipei Year
0 19.5 JAN Winter 16.4 16.8 2014
1 20.3 FEB Winter 17.0 16.5 2014
2 22.6 MAR Spring 19.8 18.9 2014
3 25.9 APR Spring 24.1 22.5 2014
4 27.8 MAY Spring 25.8 25.2 2014

Pandas


Reshaping II

Reshaping II


  • .pivot_table:依據資料找出欲關心的部分資料 (樞鈕分析表、透視表)

Reshaping II


Note

想知道 Temperature_Year 這組資料中,不同城市年均溫的變化狀況

In [160]:
Temperature_Year
Out[160]:
Average City Max Min Year
0 24.48 Taipei 30.5 16.5 2014
1 23.81 Taichung 30.1 16.4 2014
2 25.57 Kaohsiung 30.3 19.5 2014
3 24.07 Taipei 30.0 16.7 2015
4 23.97 Taichung 29.7 17.1 2015
5 24.33 Kaohsiung 30.6 17.3 2015
6 24.19 Taipei 30.3 15.5 2016
7 25.77 Taichung 29.4 16.4 2016
8 25.92 Kaohsiung 30.2 19.3 2016

Reshaping II


.pivot_table

利用 Pivot 呈現出 Temperature_Year 這組資料中,不同城市年均溫的變化

Temperature_Year.pivot_table(index='Year',columns='City',values='Average')

Temperature_Year pivot

Reshaping II


.pivot_table

利用 Pivot 呈現出 Temperature_Year 這組資料中,不同城市在 年均溫、高溫、低溫 的狀況

In [161]:
Temperature_Year.pivot_table(index='Year',columns='City')
Out[161]:
Average Max Min
City Kaohsiung Taichung Taipei Kaohsiung Taichung Taipei Kaohsiung Taichung Taipei
Year
2014 25.57 23.81 24.48 30.3 30.1 30.5 19.5 16.4 16.5
2015 24.33 23.97 24.07 30.6 29.7 30.0 17.3 17.1 16.7
2016 25.92 25.77 24.19 30.2 29.4 30.3 19.3 16.4 15.5

Exercise

Q. 利用 pivot_table 呈現出 Temperature_Year 這組資料中,各年度在不同城市最大溫度的變化

Answers

In [162]:
Temperature_Year.pivot_table(index='City',columns='Year',values='Max')
Out[162]:
Year 2014 2015 2016
City
Kaohsiung 30.3 30.6 30.2
Taichung 30.1 29.7 29.4
Taipei 30.5 30.0 30.3

Reshaping II


Note

想知道 Temperature_Season 這組資料中,不同城市均溫的變化狀況

In [163]:
Temperature_Season 
Out[163]:
Average City Season Year
0 16.60 Taipei Winter 2014
1 22.20 Taipei Spring 2014
2 29.57 Taipei Summer 2014
3 25.57 Taipei Fall 2014
4 18.80 Taipei Winter 2015
5 22.57 Taipei Spring 2015
6 29.53 Taipei Summer 2015
7 25.37 Taipei Fall 2015
8 16.83 Taichung Winter 2014
9 23.23 Taichung Spring 2014
10 29.20 Taichung Summer 2014
11 25.97 Taichung Fall 2014
12 18.27 Taichung Winter 2015
13 24.00 Taichung Spring 2015
14 28.97 Taichung Summer 2015
15 26.10 Taichung Fall 2015
16 20.00 Kaohsiung Winter 2014
17 25.43 Kaohsiung Spring 2014
18 29.53 Kaohsiung Summer 2014
19 27.30 Kaohsiung Fall 2014
20 19.87 Kaohsiung Winter 2015
21 26.03 Kaohsiung Spring 2015
22 29.63 Kaohsiung Summer 2015
23 27.57 Kaohsiung Fall 2015

Reshaping II


.pivot_table

利用 Pivot 呈現出 Temperature_Season 這組資料中,不同城市季均溫的變化

Temperature_Season.pivot_table(index='Season',columns='City',values='Average',aggfunc=np.mean)

Temperature_Season pivot

Reshaping II


Note

想知道 Temperature 這組資料中,不同城市在各年度下各個季節的季均溫狀況

In [164]:
Temperature
Out[164]:
Kaohsiung Month Season Taichung Taipei Year
0 19.5 JAN Winter 16.4 16.8 2014
1 20.3 FEB Winter 17.0 16.5 2014
2 22.6 MAR Spring 19.8 18.9 2014
3 25.9 APR Spring 24.1 22.5 2014
4 27.8 MAY Spring 25.8 25.2 2014
5 29.2 JUN Summer 28.6 28.0 2014
6 30.3 JUL Summer 30.1 30.5 2014
7 29.1 AUG Summer 28.9 30.2 2014
8 29.5 SEP Fall 29.2 29.7 2014
9 27.2 OCT Fall 25.6 24.7 2014
10 25.2 NOV Fall 23.1 22.3 2014
11 20.2 DEC Winter 17.1 16.5 2014
12 19.9 JAN Winter 17.1 16.7 2015
13 17.3 FEB Winter 18.1 20.8 2015
14 23.6 MAR Spring 20.7 18.9 2015
15 26.2 APR Spring 24.4 22.7 2015
16 28.3 MAY Spring 26.9 26.1 2015
17 30.6 JUN Summer 29.7 30.0 2015
18 29.5 JUL Summer 29.2 30.0 2015
19 28.8 AUG Summer 28.0 28.6 2015
20 28.8 SEP Fall 27.8 27.4 2015
21 27.7 OCT Fall 26.2 25.2 2015
22 26.2 NOV Fall 24.3 23.5 2015
23 22.4 DEC Winter 19.6 18.9 2015
24 19.3 JAN Winter 16.8 16.2 2016
25 19.6 FEB Winter 16.4 15.5 2016
26 21.6 MAR Spring 18.3 17.5 2016
27 26.9 APR Spring 24.9 24.0 2016
28 28.9 MAY Spring 27.6 27.1 2016
29 29.7 JUN Summer 28.8 29.4 2016
30 30.2 JUL Summer 29.4 30.3 2016
31 29.4 AUG Summer 28.9 30.1 2016
32 28.4 SEP Fall 27.9 27.8 2016
33 28.4 OCT Fall 27.5 27.0 2016
34 25.7 NOV Fall 23.4 22.6 2016
35 22.9 DEC Winter 20.4 20.1 2016

Exercise

Q. 利用 pivot_table 呈現出 Temperature 這組資料 , 台北市在各年度下各個季節的季均溫狀況

Answers

In [165]:
Temperature.pivot_table(index='Season',columns='Year',values='Taipei',aggfunc=np.mean)
Out[165]:
Year 2014 2015 2016
Season
Fall 25.566667 25.366667 25.800000
Spring 22.200000 22.566667 22.866667
Summer 29.566667 29.533333 29.933333
Winter 16.600000 18.800000 17.266667

Pandas


Grouping

Grouping


  • .groupby( ): 依照資料做分組,再針對分組的結果計算

Grouping


Note

想知道 Temperature 這組資料中,不同城市在各年度下各個季節的季均溫狀況

In [166]:
Temperature
Out[166]:
Kaohsiung Month Season Taichung Taipei Year
0 19.5 JAN Winter 16.4 16.8 2014
1 20.3 FEB Winter 17.0 16.5 2014
2 22.6 MAR Spring 19.8 18.9 2014
3 25.9 APR Spring 24.1 22.5 2014
4 27.8 MAY Spring 25.8 25.2 2014
5 29.2 JUN Summer 28.6 28.0 2014
6 30.3 JUL Summer 30.1 30.5 2014
7 29.1 AUG Summer 28.9 30.2 2014
8 29.5 SEP Fall 29.2 29.7 2014
9 27.2 OCT Fall 25.6 24.7 2014
10 25.2 NOV Fall 23.1 22.3 2014
11 20.2 DEC Winter 17.1 16.5 2014
12 19.9 JAN Winter 17.1 16.7 2015
13 17.3 FEB Winter 18.1 20.8 2015
14 23.6 MAR Spring 20.7 18.9 2015
15 26.2 APR Spring 24.4 22.7 2015
16 28.3 MAY Spring 26.9 26.1 2015
17 30.6 JUN Summer 29.7 30.0 2015
18 29.5 JUL Summer 29.2 30.0 2015
19 28.8 AUG Summer 28.0 28.6 2015
20 28.8 SEP Fall 27.8 27.4 2015
21 27.7 OCT Fall 26.2 25.2 2015
22 26.2 NOV Fall 24.3 23.5 2015
23 22.4 DEC Winter 19.6 18.9 2015
24 19.3 JAN Winter 16.8 16.2 2016
25 19.6 FEB Winter 16.4 15.5 2016
26 21.6 MAR Spring 18.3 17.5 2016
27 26.9 APR Spring 24.9 24.0 2016
28 28.9 MAY Spring 27.6 27.1 2016
29 29.7 JUN Summer 28.8 29.4 2016
30 30.2 JUL Summer 29.4 30.3 2016
31 29.4 AUG Summer 28.9 30.1 2016
32 28.4 SEP Fall 27.9 27.8 2016
33 28.4 OCT Fall 27.5 27.0 2016
34 25.7 NOV Fall 23.4 22.6 2016
35 22.9 DEC Winter 20.4 20.1 2016

Grouping


.groupby( )

將 Temperature 依照年份分組

In [167]:
Group_Year = Temperature.groupby(Temperature['Year'])
In [168]:
Group_Year
Out[168]:
<pandas.core.groupby.DataFrameGroupBy object at 0x108b1af98>

Grouping


.groupby( )

將 Temperature 依照年份分組後的結果 ( Group_Year ) 取各組平均

In [169]:
Group_Year_mean = Group_Year.mean()
In [170]:
Group_Year_mean
Out[170]:
Kaohsiung Taichung Taipei
Year
2014 25.566667 23.808333 23.483333
2015 25.775000 24.333333 24.066667
2016 25.916667 24.191667 23.966667

Grouping


Note

確認 Group_Year 的 Type

In [171]:
type(Group_Year_mean)
Out[171]:
pandas.core.frame.DataFrame

Grouping


.groupby( )

將 Temperature 中 Taipei 依照年份分組並計算平均溫度

In [172]:
Temperature['Taipei'].groupby(Temperature['Year']).mean()
Out[172]:
Year
2014    23.483333
2015    24.066667
2016    23.966667
Name: Taipei, dtype: float64

Grouping


.groupby( )

將 Temperature 依照年份及季節分組並計算平均溫度

In [173]:
Temperature.groupby(['Year','Season']).mean()
Out[173]:
Kaohsiung Taichung Taipei
Year Season
2014 Fall 27.300000 25.966667 25.566667
Spring 25.433333 23.233333 22.200000
Summer 29.533333 29.200000 29.566667
Winter 20.000000 16.833333 16.600000
2015 Fall 27.566667 26.100000 25.366667
Spring 26.033333 24.000000 22.566667
Summer 29.633333 28.966667 29.533333
Winter 19.866667 18.266667 18.800000
2016 Fall 27.500000 26.266667 25.800000
Spring 25.800000 23.600000 22.866667
Summer 29.766667 29.033333 29.933333
Winter 20.600000 17.866667 17.266667

Note

Create Demo Data -- Temperature_Taipei

In [174]:
Month = ['JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC','JAN']
Taipei = [16.8,16.5,18.9,22.5,25.2,28.0,30.5,30.2,29.7,24.7,22.3,16.5,16.8]
Temperature_Taipei_table = { "Month" : Month,
                             "Taipei" : Taipei  }
Temperature_Taipei = pd.DataFrame(Temperature_Taipei_table)
print(Temperature_Taipei.shape)
Temperature_Taipei
(13, 2)
Out[174]:
Month Taipei
0 JAN 16.8
1 FEB 16.5
2 MAR 18.9
3 APR 22.5
4 MAY 25.2
5 JUN 28.0
6 JUL 30.5
7 AUG 30.2
8 SEP 29.7
9 OCT 24.7
10 NOV 22.3
11 DEC 16.5
12 JAN 16.8

Pandas


Binning

Binning


  • .cut( ): 將資料中連續型變數依照給定的切點做分隔,並新增成一個新的類別變數

Binning


Note

想切分 Temperature_Taipei 這組資料

In [175]:
Temperature_Taipei 
Out[175]:
Month Taipei
0 JAN 16.8
1 FEB 16.5
2 MAR 18.9
3 APR 22.5
4 MAY 25.2
5 JUN 28.0
6 JUL 30.5
7 AUG 30.2
8 SEP 29.7
9 OCT 24.7
10 NOV 22.3
11 DEC 16.5
12 JAN 16.8

Binning


.cut( )

切分 Temperature_taipei 依照 28度以下:冷 ; 28度以上:熱

In [176]:
cut_points = [0, 28, float("inf")]
group = ["冷", "熱"]
Temperature_Taipei['Feel'] = pd.cut(Temperature_Taipei["Taipei"], cut_points , labels = group)
In [177]:
Temperature_Taipei
Out[177]:
Month Taipei Feel
0 JAN 16.8
1 FEB 16.5
2 MAR 18.9
3 APR 22.5
4 MAY 25.2
5 JUN 28.0
6 JUL 30.5
7 AUG 30.2
8 SEP 29.7
9 OCT 24.7
10 NOV 22.3
11 DEC 16.5
12 JAN 16.8

Pandas


Duplicate

Duplicate


  • .duplicated( ): 判斷資料是否重複
  • .drop_duplicated( ): 排除掉資料重複值

Duplicate


Note

想確認 Temperature_Taipei 這組資料的狀況

In [178]:
Temperature_Taipei 
Out[178]:
Month Taipei Feel
0 JAN 16.8
1 FEB 16.5
2 MAR 18.9
3 APR 22.5
4 MAY 25.2
5 JUN 28.0
6 JUL 30.5
7 AUG 30.2
8 SEP 29.7
9 OCT 24.7
10 NOV 22.3
11 DEC 16.5
12 JAN 16.8

Duplicate


利用 .duplicated( ) 確認 Temperature_Taipei 中是否有重複值

In [179]:
Temperature_Taipei.duplicated()
Out[179]:
0     False
1     False
2     False
3     False
4     False
5     False
6     False
7     False
8     False
9     False
10    False
11    False
12     True
dtype: bool

Duplicate


利用 .drop_duplicated( ) 將 Temperature_Taipei 中重複值去除

In [180]:
Temperature_Taipei = Temperature_Taipei.drop_duplicates()
In [181]:
Temperature_Taipei
Out[181]:
Month Taipei Feel
0 JAN 16.8
1 FEB 16.5
2 MAR 18.9
3 APR 22.5
4 MAY 25.2
5 JUN 28.0
6 JUL 30.5
7 AUG 30.2
8 SEP 29.7
9 OCT 24.7
10 NOV 22.3
11 DEC 16.5