标识数据帧中的ID列

2024-06-16 14:15:55 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有任何方法可以自动识别数据框中通常不包含在模型构建中的列,如账号、员工账号、交易账号等类型的列? 请注意,同一员工在不同日期可能有多个记录。简而言之,当无用的列不是唯一的时,如何识别它们?在


Tags: 数据方法模型类型记录员工交易自动识别
1条回答
网友
1楼 · 发布于 2024-06-16 14:15:55

有几种方法可以识别数据集中租赁重要的列/类/特性。相关性就是其中之一。按照下面的示例,首先从Kaggle下载thismovies数据集。在

df = pd.read_csv("tmdb_5000_movies.csv")
df = df[["id", "budget", "popularity", "vote_average"]]
df.head()

以下是数据帧的外观:

^{pr2}$

我们正在寻找一种自动检测“id”是无用列的方法。在

让我们找出每列与另一列之间的相关性:

corr_df = pd.DataFrame(columns=list(df.columns))
for col_from in df.columns:
    for col_to in df.columns:
        corr_df.loc[col_from, col_to] = df[col_from].corr(df[col_to])
print(corr_df.head())

相关性只是-1和1之间的一个度量,接近零的数字表示这两个类是不相关的,离零越远(即使在负方向上)表明这两个参数在某种意义上是耦合的。 观察idbudgetpopularity之间的相关性如何非常小

                     id     budget popularity vote_average
id                    1 -0.0893767   0.031202    -0.270595
budget       -0.0893767          1   0.505414    0.0931457
popularity     0.031202   0.505414          1     0.273952
vote_average  -0.270595  0.0931457   0.273952            1

让我们更进一步,求出绝对值并求出所有相关性的总和,相关性得分最小的类被认为是最没有用处的:

corr_df = corr_df.abs()
corr_df["sum"] = corr_df.sum(axis=0) - 1
print(corr_df.head())

结果:

                     id     budget popularity vote_average       sum
id                    1  0.0893767   0.031202     0.270595  0.391173
budget        0.0893767          1   0.505414    0.0931457  0.687936
popularity     0.031202   0.505414          1     0.273952  0.810568
vote_average   0.270595  0.0931457   0.273952            1  0.637692

并不是说这种方法有很多问题,例如:如果id从0增加到N,并且行之间有一个值也以恒定速率增加,那么它们的相关性将很高;此外,某些列X可能会产生比Y之间的相关性更小的与列Y之间的相关性尽管如此,绝对和结果在大多数情况下已经足够好了。在

相关问题 更多 >