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”等等。
上一篇: java实现bmp图片信息隐写