小编BC *_*ith的帖子

在pyspark中转换类别类型的数据框列

我有一个数据框 df ,我想将一些列转换为类别类型。使用 pandas 我可以这样做:

    for col in categorical_collist:
        df[col] = df[col].astype('category')
Run Code Online (Sandbox Code Playgroud)

我想在 pyspark 中进行列转换。我该怎么做?

我尝试在 pyspark 中使用以下代码。但它在操作过程中没有给出我的预期输出。

from pyspark.sql.types import StringType
for col in categorical_collist:
    df = df.withColumn(col, df[col].cast(StringType()))
Run Code Online (Sandbox Code Playgroud)

types pandas apache-spark apache-spark-sql pyspark

7
推荐指数
1
解决办法
1016
查看次数

如何将数据类型更改为 float64,以便 sklearn 可以处理数据大于 np.float32 的数据帧

在我的数据集中,很少有数据(即1.4619664882428694e+258)大于float32最大值(3.4028235e+38)。现在在拟合模型期间,我收到以下错误:

Input contains NaN, infinity or a value too large for dtype('float32').
Run Code Online (Sandbox Code Playgroud)

我试过下面的代码:

df_features = pd.read_csv('data\df_features.csv')
df_target = pd.read_csv('data\df_target.csv')

X_train, X_test, y_train, y_test = train_test_split(df_features, df_target, test_size=.25, random_state=0)

model = AdaBoostRegressor()

try:
    model.fit(X_train, y_train)
    y_pred = model.predict(X_test)
    acc = r2_score(y_test, y_pred)
    print(acc)

except Exception as error:
    print(error)
Run Code Online (Sandbox Code Playgroud)

如果我想使用真实数据而不进行规范化,我该如何解决这个问题?是否有任何选项,以便我可以将 sklearn 的默认数据类型设置为 float64。如果是,那么如何?

floating-point machine-learning python-3.x pandas scikit-learn

6
推荐指数
1
解决办法
624
查看次数

Pandas 数据框中的值过滤器保持 NaN

我正在尝试从数据框中过滤小于某个值的数据。如果没有 NaN 则它工作正常。但是当有 nan 时,它会忽略 NaN 值。我想一直包含它并不重要,它小于或大于比较值。

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {
        'index': [1, 2, 3,  4,  5,  6,   7,  8, 9],
        'value': [5, 6, 7, np.nan, 9, 3, 11, 34, 78]
    }
)

df_chunked = df[(df['index'] >= 1) & (df['index'] <= 5)]

print('df_chunked')
print(df_chunked)

df_result = df_chunked[(df_chunked['value'] < 10)]
# df_result = df_chunked[(df_chunked['value'] < 10) | (df_chunked['value'] == np.isnan(df_chunked['value']))]

print('df_result')
print(df_result)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

在上面的结果中显示 5,6,7,9。但我也想要那里的 nan。我试过

df_result = df_chunked[(df_chunked['value'] < 10) | (df_chunked['value'] == …
Run Code Online (Sandbox Code Playgroud)

python nan filter pandas data-science

5
推荐指数
1
解决办法
792
查看次数

从 pandas 数据框中仅提取数字和字符串

我试图在两个不同的数据框中仅提取数字和字符串。我正在使用正则表达式来提取数字和字符串。

\n
import pandas as pd\n\ndf_num = pd.DataFrame({\n        \'Colors\': [\'lila1.5\', \'rosa2.5\', \'gelb3.5\', \'gr\xc3\xbcn4\', \'rot5\', \'schwarz6\', \'grau7\', \'wei\xc3\x9f8\', \'braun9\', \'hellblau10\'],\n        \'Animals\': [\'hu11nd\', \'12welpe\', \'13katze\', \'s14chlange\', \'vo15gel\', \'16papagei\', \'ku17h\', \'18ziege\', \'19pferd\',\n                    \'esel20\']\n    })\n\nfor column in df_num.columns:\n    df_num[column] = df_num[column].str.extract(\'(\\d+)\').astype(float)\n\nprint(df_num)\n
Run Code Online (Sandbox Code Playgroud)\n

我也尝试过使用\'([\\d+][\\d+\\.\\d+])\' and \'([\\d+\\.\\d+])\'

\n

在这里我得到了输出,但不是我所期望的。虽然我期待浮点数,但我没有得到 1.5 或 2.5。

\n

我得到如下图所示的内容:

\n

在此输入图像描述

\n
df_str = pd.DataFrame({\n        \'Colors\': [\'lila1.5\', \'rosa2.5\', \'gelb3\', \'gr\xc3\xbcn4\', \'rot5\', \'schwarz6\', \'grau7\', \'wei\xc3\x9f8\', \'braun9\', \'hellblau10\'],\n        \'Animals\': [\'hu11nd\', \'12welpe\', \'13katze\', \'s14chlange\', \'vo15gel\', \'16papagei\', \'ku17h\', \'18ziege\', \'19pferd\',\n                    \'esel20\']\n    })\n\nfor column in df_str.columns:\n …
Run Code Online (Sandbox Code Playgroud)

text-extraction dataframe python-3.x pandas data-science

5
推荐指数
1
解决办法
1万
查看次数