Кодируйте языки и специальные символы в csv-файле в pyspark, а также нуждайтесь в помощи для обработки нулевых данных

#pyspark

Вопрос:

Я попытался с помощью файла данных csv закодировать различные языки для обработки нулевых значений и заполнить его средним значением.

Пожалуйста, найдите точки здесь:

  1. В csv-файле всего три столбца, но количество строк равно 250000
  2. Только целевой столбец содержит нулевые данные
  3. Я попытался с помощью функции вменения pyspark заполнить нулевые данные своим средним значением и выполнить его, но обнаружена проблема в том, что для нескольких строк данные разделяются на следующие ячейки одной и той же строки, поэтому не удается выполнить задачу

Проблемы

  1. Я не могу закодировать все языки из файла набора данных csv
  2. Данные столбца «вопрос» разделились на части и заполнили следующие ячейки той же строки, и это произошло только для нескольких строк

Мне нужна помощь:

  • Не следует разделять данные и следует обрабатывать все языки, кодируя их
  • Следует заполнить пустые данные средним или медианой целевого столбца, поскольку только целевой столбец содержит пустые данные

Я был бы признателен, если бы кто-нибудь помог мне решить эту проблему, пожалуйста

Мой код

 from pyspark.sql import SparkSession
spark = SparkSession.builder.master("local[1]")
    .appName("CSV_NULL")
    .getOrCreate()

df1_encoded = spark.read.options(header="True",         
inferSchema="True")
    .option("encoding", "utf-16")
    .csv("csv23numNull.csv")

df1_encoded.printSchema()

df1_encoded.show()

======== imputing
from pyspark.ml.feature import Imputer
from pyspark.ml.feature import StringIndexer, VectorIndexer,             
                                OneHotEncoder,
                                VectorAssembler

df1_impute = Imputer(inputCols = ['target'],
                outputCols = ["{}_imputed".format(z) for z in     
                            ['target']]).setStrategy("mean")

df2 = df1_impute.fit(df1_encoded).transform(df1_encoded)

# export into new csv file
df2.coalesce(1).write.option("header","true")
    .option("sep",",")
    .mode("default")
    .csv("csv23EncodedStr2intandMean")

link attached for csv file

https://drive.google.com/file/d/1gBst292_H88HTt7CRovIpM1PIpnl6E7m/view?usp=sharing
 

Это мой результат

 df2.printSchema()
root
 |-- 煩搬煵敳瑩潮ⱴ慲来�: string (nullable = true)

df2.show()
 ------------------------------------ 
|                  煩搬煵敳瑩潮ⱴ慲来�|
 ------------------------------------ 
|  〰〰㈱㘵㌶㑤戹㈳挷收ⱈ潷⁤楤⁑略扥...|
|  〰〰㌲㤳㤰ㄷㄲづ㙥㐴Ⱒ䑯⁹潵⁨慶攠...|
| 〰〰㐱㉣愶攴㘲㡣攲捦ⱗ桹⁤潥猠癥汯...|
|  〰〰㐲扦㠵慡㐹㡣搷㡥ⱈ潷⁤楤⁏瑴漠...|
|  〰〰㐵㕤晡㍥〱敡攳慦ⱃ慮⁉⁣潮癥牴...|
| 〰〰㑦㥡㐶㉡㌵㝣㌳扥Ⱒ䥳⁇慺愠獬潷...|
| 〰〰㔰㔹愰㙥攱㥥ㄱ慤Ⱒ坨礠摯敳⁑畯...|
|  〰〰㔵㥦㠷㔸㌲㜴㕥㉥ⱉ猠楴⁣牡穹⁩...|
|  〰〰㕢搳㐲㙢㉤っ㠳〵Ⱒ䥳⁴桥牥⁳畣...|
|  〰〰㙥㘹㈸挵摦㘰敡换Ⱒ䥳⁩琠橵獴...|
|〰〰㜵昶㝤搵㤵挳摥戵ⱗ桡琠捡渠祯甠...|
| 〰〰㜶昳戴㈷㜶挶㤲摥ⱈ潷⁷敲攠瑨攠...|
| 〰〰㠹㜹㉢㍦挸〲㘷㐱Ⱒ坨慴⁩猠瑨攠...|
| 〰〰㤲愹ぢ捦扦攸捤㠸ⱃ慮⁷攠畳攠潵...|
|  〰〰㤵㘸づ㐱愹愶昶攳Ⱒ䤠慭″〬楶...|
|  〰〰愸㤹㐲攳ㄴ㍥㌳㍡ⱗ桡琠摯⁹潵...|
| 〰〰戸攱㈷㥥慡ち㜰㘲ⱈ潷⁤楦晩捵汴...|
|〰〰扣て㘲㔰て㔵㤵㥦ⱈ慶攠祯甠汩捫...|
|〰〰捥㙣㌱昱㑤㍥〹散ⱄ漠祯甠瑨楮欠...|
| 〰〰搳㈹㌳㈸㐵戸愷晡ⱈ潷慮礠扡牯...|
 ------------------------------------ 
only showing top 20 rows