Pandas基本功能


到目前為止,我們了解了三種Pandas資料結構以及如何建立它們。接下來將主要關注資料影格(DataFrame)物件,因為它在實時資料處理中非常重要,並且還討論其他資料結構。

系列基本功能

編號 屬性或方法 描述
1 axes 返回行軸標籤列表。
2 dtype 返回物件的資料型別(dtype)。
3 empty 如果系列為空,則返回True
4 ndim 返回底層資料的維數,預設定義:1
5 size 返回基礎資料中的元素數。
6 values 將系列作為ndarray返回。
7 head() 返回前n行。
8 tail() 返回最後n行。

現在建立一個系列並演示如何使用上面所有列出的屬性操作。

範例

import pandas as pd
import numpy as np

#Create a series with 100 random numbers
s = pd.Series(np.random.randn(4))
print s

執行上面範例程式碼,得到以下輸出結果 -

0   0.967853
1  -0.148368
2  -1.395906
3  -1.758394
dtype: float64

axes範例

返回系列的標籤列表。參考以下範例程式碼 -

import pandas as pd
import numpy as np

#Create a series with 100 random numbers
s = pd.Series(np.random.randn(4))
print ("The axes are:")
print s.axes

執行上面範例程式碼,得到以下輸出結果 -

The axes are:
[RangeIndex(start=0, stop=4, step=1)]

上述結果是從05的值列表的緊湊格式,即:[0,1,2,3,4]

empty範例

返回布林值,表示物件是否為空。返回True則表示物件為空。

import pandas as pd
import numpy as np

#Create a series with 100 random numbers
s = pd.Series(np.random.randn(4))
print ("Is the Object empty?")
print s.empty

執行上面範例程式碼,得到以下輸出結果 -

Is the Object empty?
False

ndim範例

返回物件的維數。根據定義,一個系列是一個1D資料結構,參考以下範例程式碼 -

import pandas as pd
import numpy as np

#Create a series with 4 random numbers
s = pd.Series(np.random.randn(4))
print s

print ("The dimensions of the object:")
print s.ndim

執行上面範例程式碼,得到以下結果 -

0   0.175898
1   0.166197
2  -0.609712
3  -1.377000
dtype: float64

The dimensions of the object:
1

size範例

返回系列的大小(長度)。參考以下範例程式碼 -

import pandas as pd
import numpy as np

#Create a series with 4 random numbers
s = pd.Series(np.random.randn(2))
print s
print ("The size of the object:")
print s.size

執行上面範例程式碼,得到以下結果 -

0   3.078058
1  -1.207803
dtype: float64

The size of the object:
2

values範例

以陣列形式返回系列中的實際資料值。

import pandas as pd
import numpy as np

#Create a series with 4 random numbers
s = pd.Series(np.random.randn(4))
print s

print ("The actual data series is:")
print s.values

執行上面範例程式碼,得到以下結果 -

0   1.787373
1  -0.605159
2   0.180477
3  -0.140922
dtype: float64

The actual data series is:
[ 1.78737302 -0.60515881 0.18047664 -0.1409218 ]

head()和tail()方法範例

要檢視Series或DataFrame物件的小樣本,請使用head()tail()方法。

head()返回前n行(觀察索引值)。要顯示的元素的預設數量為5,但可以傳遞自定義這個數位值。

import pandas as pd
import numpy as np

#Create a series with 4 random numbers
s = pd.Series(np.random.randn(4))
print ("The original series is:")
print s

print ("The first two rows of the data series:")
print s.head(2)

執行上面範例程式碼,得到以下結果 -

The original series is:
0   0.720876
1  -0.765898
2   0.479221
3  -0.139547
dtype: float64

The first two rows of the data series:
0   0.720876
1  -0.765898
dtype: float64

tail()返回最後n行(觀察索引值)。 要顯示的元素的預設數量為5,但可以傳遞自定義數位值。參考以下範例程式碼 -

import pandas as pd
import numpy as np

#Create a series with 4 random numbers
s = pd.Series(np.random.randn(4))
print ("The original series is:")
print s

print ("The last two rows of the data series:")
print s.tail(2)

執行上面範例程式碼,得到以下結果 -

The original series is:
0 -0.655091
1 -0.881407
2 -0.608592
3 -2.341413
dtype: float64

The last two rows of the data series:
2 -0.608592
3 -2.341413
dtype: float64

DataFrame基本功能

下面來看看資料影格(DataFrame)的基本功能有哪些?下表列出了DataFrame基本功能的重要屬性或方法。

編號 屬性或方法 描述
1 T 轉置行和列。
2 axes 返回一個列,行軸標籤和列軸標籤作為唯一的成員。
3 dtypes 返回此物件中的資料型別(dtypes)。
4 empty 如果NDFrame完全為空[無專案],則返回為True; 如果任何軸的長度為0
5 ndim 軸/陣列維度大小。
6 shape 返回表示DataFrame的維度的元組。
7 size NDFrame中的元素數。
8 values NDFrame的Numpy表示。
9 head() 返回開頭前n行。
10 tail() 返回最後n行。

下面來看看如何建立一個DataFrame並使用上述屬性和方法。

範例

import pandas as pd
import numpy as np

#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Minsu','Jack']),
   'Age':pd.Series([25,26,25,23,30,29,23]),
   'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])}

#Create a DataFrame
df = pd.DataFrame(d)
print ("Our data series is:")
print df

執行上面範例程式碼,得到以下結果 -

Our data series is:
    Age   Name    Rating
0   25    Tom     4.23
1   26    James   3.24
2   25    Ricky   3.98
3   23    Vin     2.56
4   30    Steve   3.20
5   29    Minsu   4.60
6   23    Jack    3.80

T(轉置)範例

返回DataFrame的轉置。行和列將交換。參考以下範例程式碼 -

import pandas as pd
import numpy as np

# Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Minsu','Jack']),
   'Age':pd.Series([25,26,25,23,30,29,23]),
   'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])}

# Create a DataFrame
df = pd.DataFrame(d)
print ("The transpose of the data series is:")
print df.T

執行上面範例程式碼,得到以下結果 -

The transpose of the data series is:
         0     1       2      3      4      5       6
Age      25    26      25     23     30     29      23
Name     Tom   James   Ricky  Vin    Steve  Minsu   Jack
Rating   4.23  3.24    3.98   2.56   3.2    4.6     3.8

axes範例

返回行軸標籤和列軸標籤列表。參考以下範例程式碼 -

import pandas as pd
import numpy as np

#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Minsu','Jack']),
   'Age':pd.Series([25,26,25,23,30,29,23]),
   'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])}

#Create a DataFrame
df = pd.DataFrame(d)
print ("Row axis labels and column axis labels are:")
print df.axes

執行上面範例程式碼,得到以下結果 -

Row axis labels and column axis labels are:

[RangeIndex(start=0, stop=7, step=1), Index([u'Age', u'Name', u'Rating'],
dtype='object')]

dtypes範例

返回每列的資料型別。參考以下範例程式碼 -

import pandas as pd
import numpy as np

#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Minsu','Jack']),
   'Age':pd.Series([25,26,25,23,30,29,23]),
   'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])}

#Create a DataFrame
df = pd.DataFrame(d)
print ("The data types of each column are:")
print df.dtypes

執行上面範例程式碼,得到以下結果 -

The data types of each column are:
Age     int64
Name    object
Rating  float64
dtype: object

empty範例

返回布林值,表示物件是否為空; 返回True表示物件為空。

import pandas as pd
import numpy as np

#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Minsu','Jack']),
   'Age':pd.Series([25,26,25,23,30,29,23]),
   'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])}

#Create a DataFrame
df = pd.DataFrame(d)
print ("Is the object empty?")
print df.empty

執行上面範例程式碼,得到以下結果 -

Is the object empty?
False

ndim範例

返回物件的維數。根據定義,DataFrame是一個2D物件。參考以下範例程式碼 -

import pandas as pd
import numpy as np

#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Minsu','Jack']),
   'Age':pd.Series([25,26,25,23,30,29,23]),
   'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])}

#Create a DataFrame
df = pd.DataFrame(d)
print ("Our object is:")
print df
print ("The dimension of the object is:")
print df.ndim

執行上面範例程式碼,得到以下結果 -

Our object is:
      Age    Name     Rating
0     25     Tom      4.23
1     26     James    3.24
2     25     Ricky    3.98
3     23     Vin      2.56
4     30     Steve    3.20
5     29     Minsu    4.60
6     23     Jack     3.80

The dimension of the object is:
2

shape範例

返回表示DataFrame的維度的元組。 元組(a,b),其中a表示行數,b表示列數。

import pandas as pd
import numpy as np

#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Minsu','Jack']),
   'Age':pd.Series([25,26,25,23,30,29,23]),
   'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])}

#Create a DataFrame
df = pd.DataFrame(d)
print ("Our object is:")
print df
print ("The shape of the object is:")
print df.shape

執行上面範例程式碼,得到以下結果 -

Our object is:
   Age   Name    Rating
0  25    Tom     4.23
1  26    James   3.24
2  25    Ricky   3.98
3  23    Vin     2.56
4  30    Steve   3.20
5  29    Minsu   4.60
6  23    Jack    3.80

The shape of the object is:
(7, 3)

size範例

返回DataFrame中的元素數。參考以下範例程式碼 -

import pandas as pd
import numpy as np

#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Minsu','Jack']),
   'Age':pd.Series([25,26,25,23,30,29,23]),
   'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])}

#Create a DataFrame
df = pd.DataFrame(d)
print ("Our object is:")
print df
print ("The total number of elements in our object is:")
print df.size

執行上面範例程式碼,得到以下結果 -

Our object is:
    Age   Name    Rating
0   25    Tom     4.23
1   26    James   3.24
2   25    Ricky   3.98
3   23    Vin     2.56
4   30    Steve   3.20
5   29    Minsu   4.60
6   23    Jack    3.80

The total number of elements in our object is:
21

values範例

DataFrame中的實際資料作為NDarray返回。參考以下範例程式碼 -

import pandas as pd
import numpy as np

#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Minsu','Jack']),
   'Age':pd.Series([25,26,25,23,30,29,23]),
   'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])}

#Create a DataFrame
df = pd.DataFrame(d)
print ("Our object is:")
print df
print ("The actual data in our data frame is:")
print df.values

執行上面範例程式碼,得到以下結果 -

Our object is:
    Age   Name    Rating
0   25    Tom     4.23
1   26    James   3.24
2   25    Ricky   3.98
3   23    Vin     2.56
4   30    Steve   3.20
5   29    Minsu   4.60
6   23    Jack    3.80
The actual data in our data frame is:
[[25 'Tom' 4.23]
[26 'James' 3.24]
[25 'Ricky' 3.98]
[23 'Vin' 2.56]
[30 'Steve' 3.2]
[29 'Minsu' 4.6]
[23 'Jack' 3.8]]

head()和tail()範例

要檢視DataFrame物件的小樣本,可使用head()tail()方法。head()返回前n行(觀察索引值)。顯示元素的預設數量為5,但可以傳遞自定義數位值。參考以下範例程式碼 -

import pandas as pd
import numpy as np

#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Minsu','Jack']),
   'Age':pd.Series([25,26,25,23,30,29,23]),
   'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])}

#Create a DataFrame
df = pd.DataFrame(d)
print ("Our data frame is:")
print df
print ("The first two rows of the data frame is:")
print df.head(2)

執行上面範例程式碼,得到以下結果 -

Our data frame is:
    Age   Name    Rating
0   25    Tom     4.23
1   26    James   3.24
2   25    Ricky   3.98
3   23    Vin     2.56
4   30    Steve   3.20
5   29    Minsu   4.60
6   23    Jack    3.80

The first two rows of the data frame is:
   Age   Name   Rating
0  25    Tom    4.23
1  26    James  3.24

tail()返回最後n行(觀察索引值)。顯示元素的預設數量為5,但可以傳遞自定義數位值。

import pandas as pd
import numpy as np

#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Minsu','Jack']),
   'Age':pd.Series([25,26,25,23,30,29,23]), 
   'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])}

#Create a DataFrame
df = pd.DataFrame(d)
print ("Our data frame is:")
print df
print ("The last two rows of the data frame is:")
print df.tail(2)

執行上面範例程式碼,得到以下結果 -

Our data frame is:
    Age   Name    Rating
0   25    Tom     4.23
1   26    James   3.24
2   25    Ricky   3.98
3   23    Vin     2.56
4   30    Steve   3.20
5   29    Minsu   4.60
6   23    Jack    3.80

The last two rows of the data frame is:
    Age   Name    Rating
5   29    Minsu    4.6
6   23    Jack     3.8