参考资料:pandas官方参考文档
本文详细介绍了pandas中关于DataFrame数据类型的常用函数及其使用方法,结合了pandas给出的官方文档,佐以简单示例,万字长文助您一文搞定DataFrame相关的api调用问题。在使用pandas包中的函数时默认已经执行语句import pandas as pd
和import numpy as np
以调用pandas包和numpy包。
DataFrame是在python中独有的一种数据类型,它是一种二维的、大小可变的、有潜在异构的表格型数据。
DataFrame([data, index, columns,dtype, copy])
这里只介绍常用的api,如需了解其它的,请参考文章顶部参考链接。
DataFrame.astype(dtype[, copy, errors])
作用:将一个df转换成指定的类型;
格式:df.astype('int32')
示例:
注意:不通过赋值不会存储转换结果,即执行完df.astype(‘int8’)之后如果直接执行df.dtypes返回的结果仍是int64;
DataFrame.convert_dtypes([infer_objects, …])
作用:将df中的列自动转换成最可能适配的类型,并且使用的dtype都是支持pd.NA的;即把用户自定义的类型转换成python语言中最适配的数据类型,并把np.nan转换为pd.NA;
即把用户自定义的类型转换成python语言中最适配的数据类型,并把np.nan转换为pd.NA;
DataFrame.infer_objects()
作用:尝试为列类型为object的列推断更好的数据类型;
与convert_dtypes()的区别:infer_objects()只针对类型为object的列,而convert_dtypes()针对所有的列;
df.head([n])
作用:返回前n行数据,默认为5
df.loc
作用:通过标签或布尔数组访问一行或多行或一行列对(不是只能行列对哦!)
格式:df.loc[row_label]
或df.loc[row_label, col_label]
或df.loc[[row1_label, row2_label,...]]
注意:不能取一列数据
示例:
df.iloc
作用:通过索引或布尔数组访问一行或多行或一行列对(不是只能行列对哦!)
格式:df.iloc[row_label]
或df.loc[row_label, col_label]
或df.loc[[row1_label, row2_label,...]]
注意:不能取一列数据
作用:将data转换成dataframe的数据类型;
格式:
pd.DataFrame(data = None, index = None, columns = None, dtype = None, copy = None)
参数:
data:需要转换位dataframe格式的原数据
index:行标签列表
columns:列标签列表
dtype:数据类型列表
作用:对于df执行某函数 或 对df的所有元素执行某函数
格式:
DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), **kwargs)
df.applymap(func[, na_action])
参数:
func:欲施加给某行或者某列的函数
axis:{0 or ‘index’, 1 or ‘columns’}, default 0即为对列实施函数
raw:一个布尔值, default False,决定了一行或列的数据类型是以series还是ndarray object的形式传入函数
示例:
作用: 对所有行或所有列做一项或多项聚合操作(两种形式的函数效果一模一样);
格式:
DataFrame.aggregate(func=None, axis=0, *args, **kwargs)
作用:对df每个元素调用函数;
与df.apply()的区别:在调用一个普通函数的时候没有区别,调用聚合函数时有区别,调用多个函数时也有区别。(个人理解transform只能对每个元素都进行操作,选择axis参数的意义不大)
格式:
DataFrame.transform(func, axis=0, *args, **kwargs)
示例:
作用:在对数据做聚合操作前给数据分组
格式:
DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, observed=False, dropna=True)
主要参数:
by:mapping, function, label, or list of labels
用于确定 groupby 的组:
axis:{0 or ‘index’, 1 or ‘columns’}, default 0
与其余函数的规则一致;
as_index:bool, default True
对于聚合输出,返回带有组标签的对象作为索引。 仅与 DataFrame 输入相关。 as_index=False 是有效的“SQL 风格”分组输出。
sort:bool, default True
对组键进行排序。 关闭此功能可获得更好的性能。 请注意,这不会影响每个组内的观察顺序。 Groupby 保留每个组中行的顺序。
group_keys:bool, default True
调用apply时,将组键添加到索引以识别片段。
dropna:bool, default True
如果为 True,并且组键包含 NA 值,则 NA 值和行/列将被删除。 如果为 False,NA 值也将被视为组中的键。
示例: