目錄
我們還是先來加載一下數據
import pandas as pd
pd.set_option('max_rows', 5)
import numpy as np
melbourne_data = pd.read_csv('melb_data.csv')
melbourne_data.head()
數據類型
DataFrame或Series中列的數據類型稱爲dtype。
你可以使用dtype屬性來獲取特定列的類型:
melbourne_data.Price.dtype
dtype('float64')
或者,dtypes屬性返回數據集中每列的dtype:
melbourne_data.dtypes
Suburb object Address object Rooms int64 Type object Price float64 Method object SellerG object Date object Distance float64 Postcode float64 Bedroom2 float64 Bathroom float64 Car float64 Landsize float64 BuildingArea float64 YearBuilt float64 CouncilArea object Lattitude float64 Longtitude float64 Regionname object Propertycount float64 dtype: object
數據類型告訴我們關於pandas如何在內部存儲數據。 float64表示它使用的是64位浮點數; int64表示類似大小的整數,依此類推。
要記住(並且在這裏非常清楚地顯示)的一個特點是完全由字符串組成的列不能獲得自己的類型; 而是給出了對象類型。
通過使用astype函數,只要這種轉換有意義,就可以將一種類型的列轉換爲另一種類型。 例如,我們可以將Price列從其現有的float64數據類型轉換爲int64數據類型:
0 1480000 1 1035000 2 1465000 3 850000 4 1600000 ... 13575 1245000 13576 1031000 13577 1170000 13578 2500000 13579 1285000 Name: Price, Length: 13580, dtype: int64
DataFrame或Series索引也有自己的dtype:
melbourne_data.index.dtype
dtype('int64')
pandas還支持更多奇特的數據類型:分類數據和時間序列數據。 因爲這些數據類型很少使用,所以我們將在本教程後面的部分中再來看它們。
缺失數據
條目缺失值的值爲NaN,“非數字”的縮寫。 由於技術原因,這些NaN值始終爲float64 dtype。
pandas提供了一些特定於缺失數據的方法。 要選擇NaN entreis,您可以使用pd.isnull(或其伴隨pd.notnull)。 這意味着:
替換缺失值是一種常見操作。 pandas爲這個問題提供了一個非常方便的方法:fillna。 fillna提供了一些減輕此類數據的不同策略。 例如,我們可以簡單地用“Unknown”替換每個NaN:
0 Unknown 1 79 2 150 3 Unknown 4 142 ... 13575 Unknown 13576 133 13577 Unknown 13578 157 13579 112 Name: BuildingArea, Length: 13580, dtype: object
或者,我們可以使用在數據庫中給定記錄之後出現的第一個非空值來填充每個缺失值。 這被稱爲回填策略:
fillna支持一些用於輸入缺失值的策略。 有關更多內容,請閱讀官方功能文檔。
或者,我們可能有一個我們想要替換的非null值。 在數據集中反映這一點的一種方法是使用replace方法:
melbourne_data.SellerG.replace('Biggin','Biggin New')
0 Biggin New 1 Biggin New 2 Biggin New 3 Biggin New 4 Nelson ... 13575 Barry 13576 Williams 13577 Raine 13578 Sweeney 13579 Village Name: SellerG, Length: 13580, dtype: object
替換方法在這裏值得一提,因爲它可以方便地替換在數據集中給出某種標記值的丟失數據:“Unknown”,“Undisclosed”,“Invalid”等等。