pandas指南-5.數據類型和缺失值

目錄

數據類型

缺失數據


我們還是先來加載一下數據

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”等等。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章