English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
1、データセットnoise-data-1.txtには多くの欠損値(スペース、不完全な値など)が含まれています。欠損値を「全体的な定数」、「平均値または中央値」で埋める方法を用います。
noise-data-1.txt:
5.1 3.5 1.4 0.2 4.9 3 1.4 0.2 4.7 3.2 1.3 0.2 4.6 3.1 1.5 0.2 5 3.6 1.4 0.2 5.4 3.9 1.7 0.4 4.6 3.4 1.4 0.3 5 3.4 1.5 0.2 4.4 2.9 1.4 0.2 4.9 -3.1 1.5 0.1 5.4 3.7 1.5 0.2 4.8 3.4 1.6 0.2 4.8 3 -1.4 0.1 4.3 3 1.1 0.1 5.8 4 1.2 0.2 5.7 4.4 1.5 0.4 5.4 3.9 1.3 0.4 5.1 3.5 1.4 0.3 5.7 3.8 1.7 0.3 5.1 3.8 -1.5 0.3 5.4 3.4 1.7 0.2 5.1 3.7 1.5 0.4 4.6 3.6 1 0.2 5.1 3.3 1.7 0.5 4.8 3.4 1.9 0.2
解法:まずデータを読み込み、処理を行い、空行を取り除き、欠損値を「平均値」で埋める。この問題はPython言語で実装されます。以下はコードです:
import numpy as np data = [] my_list = [] con=0 noise_data = open('noise-data-1.txt') clean_data = open("clean_data3.txt", 'w') for line in noise_data.readlines(): if len(line) == 0: break if line.count('\n') == len(line): continue dataline =line.strip().split('\t') my_list.append(dataline) con+=1 for i in range(0,con): for j in range(0,len(my_list[i])): if my_list[i][j].count('.')==0: miss_row=[] for a in range(0,len(my_list[i])): if float(my_list[i][a])<0: miss_row.append(-float(my_list[i][a]) miss_row.append(float(my_list[i][a])) my_average=round(np.average(miss_row),1) my_list[i][j]=my_average else: if float(my_list[i][j])<0: my_list[i][j]=-float(my_list[i][j]) my_list[i][j]=float(my_list[i][j]) print my_list def file_write(filename,data_list): file1=open(filename,'w') for i in data_list: for j in i: if type(j)!=str: j=str(j) file1.write(j) file1.write(' ') file1.write('\n') file1.close() return file1 filename='clean_data.txt' file_write(filename,my_list)
実行結果は以下の通りです:
このPythonでのデータ前処理の欠損値補完の例が、編集者が皆さんに提供した全ての内容です。皆さんに参考になれば幸いですし、ガイドのサポートを多くお願いします。
声明:この記事の内容はインターネットから収集され、著作権者に帰属します。インターネットユーザーが自発的に貢献し、アップロードしたものであり、このサイトは所有権を持ちません。また、人工編集は行われておらず、関連する法的責任を負いません。著作権侵害を疑われる内容がある場合は、以下のメールアドレスまでご連絡ください:notice#oldtoolbag.com(メールを送信する際、#を@に置き換えてください。報告を行い、関連する証拠を提供してください。一旦確認が取れましたら、このサイトは即座に侵害を疑われる内容を削除します。)