📜  Pandas DataFrame中的转换函数

📅  最后修改于: 2020-04-20 03:14:52             🧑  作者: Mango

Python是进行数据分析的一种出色语言,主要是因为以数据为中心的Python软件包具有奇妙的生态系统。Pandas是其中的一种,使导入和分析数据更加容易。在本文中,我们使用“ nba.csv“文件下载CSV,请单击此处

将Pandas对象转换为指定的dtype

DataFrame.astype()函数用于将Pandas对象强制转换为指定的dtype。astype()函数还提供了将任何合适的现有列转换为分类类型的函数。
代码1:转换“体重”列的数据类型。

# 导入pandas
import pandas as pd
# 从csv文件制作数据帧
df = pd.read_csv("nba.csv")
# 打印数据帧的前10行以进行可视化
df[:10]


由于数据具有一些“ nan”值,因此,为了避免出现任何错误,我们将删除所有包含任何nan 值的行。

#删除所有中包含“nan"值的行。
df.dropna(inplace = True)

# 让我们找出“weight"列的数据类型
before = type(df.Weight[0])
# 现在我们将其转换为“ int64"类型.
df.Weight = df.Weight.astype('int64')
# 让我们找出转换后的数据类型
after = type(df.Weight[0])
# 打印之前的值
before
# 打印之后的值
after

输出:

# 打印数据框并查看更改后的数据
df

推断输入对象列的更好的数据类型

DataFrame.infer_objects()函数尝试推断输入对象列的更好的数据类型。此函数尝试对对象类型化的列进行软转换,而使非对象和不可转换的列保持不变。推理规则与常规Series / DataFrame构造过程中的规则相同。
代码1:使用infer_objects()函数推断更好的数据类型。

# 导入pandas
import pandas as pd
# 创建数据框
df = pd.DataFrame({"A":["sofia", 5, 8, 11, 100],
                   "B":[2, 8, 77, 4, 11],
                   "C":["amy", 11, 4, 6, 9]})
# 打印数据框
print(df)

输出:



让我们看看数据框中每一列的dtype(数据类型)。

# 打印基本信息
df.info()


正如我们在输出中看到的,第一和第三列是object类型。而第二列是int64类型。现在切片该数据框并从中创建一个新的数据框。

# 从第一行到结束的切片
df_new = df[1:]
# 让我们打印新的数据框
df_new
# 现在让我们打印列的数据类型
df_new.info()

输出:




正如我们在输出中看到的,即使列“ A”和“ C”包含整数值,也属于对象类型。因此,让我们尝试一下该infer_objects()功能。

# 应用infer_objects()函数.
df_new = df_new.infer_objects()
# 应用该功能后打印dtype
df_new.info()

输出:



现在,如果我们查看每列的dtype,我们可以看到列“ A”和“ C”现在是int64类型。

检测缺失值

DataFrame.isna()函数用于检测缺失值。它返回一个布尔值相同大小的对象,指示值是否为NA。NA值(例如None或numpy.NaN)被映射为True值。其他所有内容都映射为False值。空字符串”或numpy.inf之类的字符不视为NA值(除非您设置pandas.options.mode.use_inf_as_na = True)。
代码1:使用isna()函数检测数据帧中的缺失值。

# 导入pandas
import pandas as pd
# 创建数据框
df = pd.read_csv("nba.csv")
# 打印数据框
df


让我们使用该isna()函数检测缺失值。

# 打印数据框
df.isna()

输出:



在输出中,与缺失值相对应的单元格包含true值,否则为false。

检测现有/非缺失值

DataFrame.notna()函数检测数据帧中的现有/非缺失值。该函数返回一个布尔对象,该布尔对象的大小与其所应用的对象的大小相同,指示每个单独的值是否为na值。所有非缺失值都映射为true,而缺失值则映射为false。
代码1:使用notna()函数查找数据框中的所有非缺失值。

# 导入pandas
import pandas as pd
# 创建第一个数据框
df = pd.DataFrame({"A":[14, 4, 5, 4, 1],
                   "B":[5, 2, 54, 3, 2],
                   "C":[20, 20, 7, 3, 8],
                   "D":[14, 3, 6, 2, 6]})
# 打印数据框
print(df)


让我们使用该dataframe.notna()函数查找数据框中的所有非缺失值。

# find non-na values
df.notna()

输出:



正如我们在输出中看到的那样,数据框中的所有非缺失值都已映射为true。没有错误值,因为数据帧中没有缺失值。

DataFrame中的转换方法

函数 描述
DataFrame.convert_objects() 尝试为对象列推断更好的dtype。
DataFrame.copy() 返回此对象的索引和数据的副本。
DataFrame.bool() 返回单个元素PandasObject的布尔值。