上QQ阅读APP看书,第一时间看更新
4.2 数据的信息
本节主要介绍DataFrame的基础信息和统计性信息。在我们拿到一个数据集,用Pandas载入后,需要做一些初步的验证,比如行名、列名是否一致,数据量是否有缺失,各列的数据类型等,让我们对数据的全貌有所了解。
本节介绍的大多数功能对Series也是适用的。
4.2.1 查看样本
加载完的数据可能由于量太大,我们需要查看部分样本数据,Pandas提供了三个常用的样式查看方法。
- df.head():前部数据,默认5条,可指定条数。
- df.tail():尾部数据,默认5条,可指定条数。
- df.sample():一条随机数据,可指定条数。
df = pd.read_excel('https://www.gairuo.com/file/data/dataset/team.xlsx') s = df.Q1 # 取其中一列,形成Series df.head() # 查看前5条数据 ''' name team Q1 Q2 Q3 Q4 0 Liver E 89 21 24 64 1 Arry C 36 37 37 57 2 Ack A 57 60 18 84 3 Eorge C 93 96 71 78 4 Oah D 65 49 61 86 '''
其他方法的使用如下:
df.head(10) # 查看前10条数据 s.tail() # 查看后5条数据 df.tail(10) # 查看后10条数据 df.sample() # 随机查看一条数据 s.sample(3) # 随机查看3条数据
4.2.2 数据形状
执行df.shape会返回一个元组,该元组的第一个元素代表行数,第二个元素代表列数,这就是这个数据的基本形状,也是数据的大小。
df.shape # (100, 6) # 共100行6列(索引不算) # Series 只有一个值 s.shape # (100,)
4.2.3 基础信息
执行df.info会显示所有数据的类型、索引情况、行列数、各字段数据类型、内存占用等。Series不支持。
df.info ''' <class 'pandas.core.frame.DataFrame'> RangeIndex: 100 entries, 0 to 99 Data columns (total 6 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 name 100 non-null object 1 team 100 non-null object 2 Q1 100 non-null int64 3 Q2 100 non-null int64 4 Q3 100 non-null int64 5 Q4 100 non-null int64 dtypes: int64(4), object(2) memory usage: 4.8+ KB '''
4.2.4 数据类型
df.dtypes会返回每个字段的数据类型及DataFrame整体的类型。
df.dtypes ''' name object team object Q1 int64 Q2 int64 Q3 int64 Q4 int64 dtype: object '''
如果是Series,需要用s.dtype:
s.dtype # dtype('int64')
4.2.5 行列索引内容
df.axes会返回一个列内容和行内容组成的列表[列索引, 行索引]。
df.axes ''' [RangeIndex(start=0, stop=100, step=1), Index(['name', 'team', 'Q1', 'Q2', 'Q3', 'Q4'], dtype='object')] '''
Series显示列索引,就是它的索引:
s.axes # [RangeIndex(start=0, stop=100, step=1)]
4.2.6 其他信息
除以上重要的几项信息外,以下信息也比较重要:
# 索引对象 df.index # RangeIndex(start=0, stop=100, step=1) # 列索引,Series不支持 df.columns # Index(['name', 'team', 'Q1', 'Q2', 'Q3', 'Q4'], dtype='object') df.values # array(<所有值的列表矩阵>) df.ndim # 2 维度数 df.size # 600行×列的总数,就是总共有多少数据 # 是否为空,注意,有空值不认为是空 df.empty # False # Series的索引,DataFrame的列名 df.keys()
此外,Series独有以下方法:
s.name # 'Q1' s.array # 值组成的数组 <PandasArray> s.dtype # 类型,dtype('int64') s.hasnans # False
s.name可获取索引的名称,需要区分的是上例数据中df.name也能正常执行,它其实是df调用数据字段的方法,因为正好有名为name的列,如果没有就会报错,DataFrame是没有此属性的。
4.2.7 小结
本节数据信息的操作让我们对数据有了一个全面的认识,这对数据的下一步分析至关重要,加载完数据后,推荐先进行以上操作,以便及早找到数据的质量问题。