gpt4 book ai didi

python - 作为测试的一部分,检查 Pandas 数据框中正确数据类型的最佳方法是什么?

转载 作者:行者123 更新时间:2023-11-28 20:36:55 26 4
gpt4 key购买 nike

在对某些数据进行预处理和训练模型之前,我想检查数据帧的每个特征(每一列)是否属于正确的数据类型。即如果数据框有列 col1 , col2 , col3 , 他们应该有类型 int , float , string分别按照我定义的方式( col1 不能是 string 类型,顺序很重要)。

如果这样做,最好的方法是什么

  1. 列有多种类型 - int、float、timestamp、string
  2. 列太多 (>500) 无法手动写出/标记每列数据类型

有点像

types = df.dtypes # returns a pandas series
if types != correct_types:
raise TypeError("Some of the columns do not have the correct type")

在哪里correct_types是每列的已知数据类型 - 这些需要与 types 的顺序相同以确保每个列类型都正确匹配。最好知道是哪一列引发了错误(所以也许对这些列进行 for 循环更合适?)

有什么办法可以做到这一点,如果可以,最好的方法是什么?也许我以错误的方式看待这个问题 - 更一般地说,我如何确保 df 的列是我定义的正确数据类型吗?

最佳答案

您可以使用 pd.DataFrame.dtypes将系列映射列名称返回到数据类型:

df = pd.DataFrame([[1, True, 'dsfasd', 51.314],
[51, False, '56345', 56.1234]],
columns=['col1', 'col2', 'col3', 'col4'])

res = df.dtypes

print(res)

col1 int64
col2 bool
col3 object
col4 float64
dtype: object

这一系列的值是dtype对象:

print(res.iloc[0])

dtype('int64')

作为一个系列,您可以按索引或按值进行过滤。例如,要过滤 int64 类型:

print(res[res == np.dtype('int64')])

col1 int64
dtype: object

您还可以通过 series1 == series2 将系列与另一个系列进行比较,以创建 bool 系列映射。一个用自身检查系列的简单示例:

# in reality, you will check res versus a custom series_valid
print(res == res)

col1 True
col2 True
col3 True
col4 True
dtype: bool

如果比较中的任何值是False,您可以引发错误:

if (res != series_valid).any():
indices = (res != series_valid).index.tolist()
raise TypeError("Some columns have incorrect type: {0}".format(indices))

关于python - 作为测试的一部分,检查 Pandas 数据框中正确数据类型的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50853561/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com