我有一个数据框 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) 在我的数据集中,很少有数据(即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
我正在尝试从数据框中过滤小于某个值的数据。如果没有 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) 我试图在两个不同的数据框中仅提取数字和字符串。我正在使用正则表达式来提取数字和字符串。
\nimport 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)\nRun Code Online (Sandbox Code Playgroud)\n我也尝试过使用\'([\\d+][\\d+\\.\\d+])\' and \'([\\d+\\.\\d+])\'
在这里我得到了输出,但不是我所期望的。虽然我期待浮点数,但我没有得到 1.5 或 2.5。
\n我得到如下图所示的内容:
\n\ndf_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) pandas ×4
data-science ×2
python-3.x ×2
apache-spark ×1
dataframe ×1
filter ×1
nan ×1
pyspark ×1
python ×1
scikit-learn ×1
types ×1