import pandas as pd
reviews = pd.read_csv("./winemag-data-130k-v2.csv", index_col=0)
pd.set_option('max_rows', 5)
DataFrame或是Series的資料型態都是dtype
reviews.price.dtype
dtype('float64')
reviews.dtypes
country object
description object
...
variety object
winery object
Length: 13, dtype: object
可以利用astype
這個函數將資料型態進行轉換
reviews.points.astype("float64")
0 87.0
1 87.0
...
129969 90.0
129970 90.0
Name: points, Length: 129971, dtype: float64
dataframe的index也有一樣的dtype
reviews.index.dtype
dtype('int64')
通常沒有資料的資料型態會寫做NaN
,意思是Not a Number
pandas有提供一些方法可以處理這些空缺值,用pd.isnull(column)
可以選取這些空值
reviews[pd.isnull(reviews.country)]
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
填補這些空缺值是很常見的操作
pandas有提供一個簡單的操作來解決這個問題fillna()
像是我們可以將NaN
替換成Unknown
reviews.region_2.fillna("Unknown")
0 Unknown
1 Unknown
...
129969 Unknown
129970 Unknown
Name: region_2, Length: 129971, dtype: object
若要將資料替換掉也有很方便的方式,可以使用replace()
reviews.taster_twitter_handle.replace("@kerinokeefe", "@kerino")
0 @kerino
1 @vossroger
...
129969 @vossroger
129970 @vossroger
Name: taster_twitter_handle, Length: 129971, dtype: object