【问题标题】:Stack with an error when trying to replace missing data尝试替换缺失数据时出现错误堆栈
【发布时间】:2022-02-05 18:30:19
【问题描述】:

我的迷你项目需要您的帮助,我需要使用来自 Kaggle 的数据集创建预测模型,当我尝试替换“值”列中缺失的数据时遇到错误。 似乎该值被视为字符串,因为它们在数字之间具有点。 无法手动编辑该列,它有超过 49000 行。 如何解决这个问题?
这是代码和错误:

x['value'].replace(' ',np.NaN).astype(np.float)

ValueError:无法将字符串转换为浮点数:'154.619.063'

数据集:按行业划分的跨国公司 the dataset from Kaggle 非常感谢您的帮助

【问题讨论】:

  • 154.619.063 无效 - 它应该是什么? 154.619063154619.063619.063154.619154619063
  • 感谢您的回复。确实,应该是这样,但我不能手动编辑 49000 行。有什么想法吗?
  • 好的,没关系。自动修改它们很容易,但我列出的哪个选项应该出现154.619.063
  • 对不起,我一开始没有看到这些选项。它应该是一个没有点的数字,例如:154619063

标签: pandas csv dataset prediction missing-data


【解决方案1】:

试试这个:

x['value'].str.replace('.', '').replace(' ', np.NaN).astype(np.float)

【讨论】:

  • 我收到了这个错误:TypeError: Only integers, slices (:), ellipsis (...), tf.newaxis (None) and scalar tf.int32/tf.int64 tensors是有效的索引,得到“价值”
  • 嗯,您能在问题中添加更多代码吗?好像有什么不明白的地方。
  • 非常感谢@richardec 的宝贵时间和帮助,它奏效了,我只需要从头开始重新启动代码并按照您的建议进行操作。我会将完整的代码放在帖子的答案中。
【解决方案2】:
import numpy as np 
import pandas as pd
from pandas import read_csv
from pandas.plotting import scatter_matrix
from matplotlib import pyplot
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.metrics import r2_score
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
%pylab inline
import seaborn as sns
import pandas_profiling as pp
import plotly.graph_objs as go
from plotly.offline import iplot
import plotly.express as px
import tensorflow as tf
df = pd.read_csv("C:\\Users\\Souf win\\Downloads\\multinationals.csv", delimiter = ';')
def preprocessing(df):
df = df.copy()
df = df.drop(['partner country','ind', 'var','declaring country','unit code','part', 'cou', 'year','year.1', 'unit', 'power_code code', 'power_code' , 'reference period code', 'reference period' ], axis=1) 
missing_target_rows=df[df['value'].isna()].index
df= df.drop(missing_target_rows, axis=0).reset_index(drop=True)
df['value']=df['value'].str.replace('.', '').replace(' ',np.NaN).astype(np.float)

for column in ['economic variable' ,'industry' ]:
    dummies=pd.get_dummies(df[column], prefix=column)
    df = pd.concat([df, dummies], axis=1)
    df = df.drop(column, axis=1)
#split df to x and y
y = df['value']
x = df.drop('value', axis=1) 
#Train_test split
x_train, x_test, y_train, y_test = train_test_split(x, y, train_size=0.7,         shuffle=True, random_state=1 )
#scale x
scaler = StandardScaler()
scaler.fit(x_train)
#x_train = scaler.transform(x_train)
x_train = pd.DataFrame(scaler.transform(x_train), index=x_train.index, columns=x_train.columns)
x_test = pd.DataFrame(scaler.transform(x_test), index=x_test.index, columns=x_test.columns)
   
return x_train, x_test, y_train, y_test

x_train, x_test, y_train, y_test = preprocessing(df)
x_train
y_train
x_train.shape
inputs = tf.keras.Input(shape=(86,))
x = tf.keras.layers.Dense(128, activation='relu')(inputs)
x = tf.keras.layers.Dense(128, activation='relu')(x)
outputs=tf.keras.layers.Dense(1, activation='linear')(x)

model = tf.keras.Model(inputs=inputs, outputs=outputs)

model.compile(
optimizer='adam',
loss = 'mse'
)

history=model.fit(
    x_train,
    y_train,
    validation_split=0.2,
    batch_size=32,
    epochs=100,
    callbacks= [
        tf.keras.callbacks.EarlyStopping(
        monitor='val_loss',
        patience=3,
        restore_best_weights=True
        )
    ]
)

【讨论】:

    猜你喜欢
    • 2018-04-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-03
    • 1970-01-01
    • 1970-01-01
    • 2016-10-04
    • 2014-05-04
    • 2020-07-01
    相关资源
    最近更新 更多