Qurak

Replace or remove invalid or missing data

Hướng dẫn 23 bước, chạy theo thứ tự trong một phiên. Từng bước đều được thực thi trên bộ máy và đầu ra bên dưới là những gì nó tạo ra.

Bước 1
gdps = Map[CountryData[#, "GDP"]&, CountryData[All]];

Không có đầu ra - bước này chuẩn bị cho bước kế tiếp.

Bước 2
Take[gdps, 10]
Đầu ra
Take[CountryData[CountryData[All, GDP]], 10]
Bước 3
Max[gdps]
Đầu ra
CountryData[CountryData[All, GDP]]
Bước 4
Count[gdps, _Missing]
Đầu ra
0
Bước 5
Length[gdps]
Đầu ra
1
Bước 6
filteredgdps = DeleteCases[gdps, _Missing];

Không có đầu ra - bước này chuẩn bị cho bước kế tiếp.

Bước 7
{Length[filteredgdps], Max[filteredgdps]}
Đầu ra
{1, CountryData[CountryData[All, GDP]]}
Bước 8
data = {{1, 71.6, 0.41}, {2, 27.2, 4.96}, {2, 59.3, 0.18}, {1, 46., 2.72}, {2, 42.2, 1.06}, {1, 89.1, 3.75}, {4, 88.6, 1.9}, {1, 62.3, 1.8}, {1, 82.7, "NA"}, {1, 35.5, 1.84}};

Không có đầu ra - bước này chuẩn bị cho bước kế tiếp.

Bước 9
Grid[data, Dividers -> All]
Đầu ra
Grid[{{1, 71.6, 0.41}, {2, 27.2, 4.96}, {2, 59.3, 0.18}, {1, 46., 2.72}, {2, 42.2, 1.06}, {1, 89.1, 3.75}, {4, 88.6, 1.9}, {1, 62.3, 1.8}, {1, 82.7, NA}, {1, 35.5, 1.84}}, Dividers -> All]
Bước 10
baddata[entry_] := Not[MatchQ[entry, {1 | 2, _ ? NumberQ, _ ? NumberQ}]]

Không có đầu ra - bước này chuẩn bị cho bước kế tiếp.

Bước 11
DeleteCases[data, _ ? baddata]
Đầu ra
{{1, 71.6, 0.41}, {2, 27.2, 4.96}, {2, 59.3, 0.18}, {1, 46., 2.72}, {2, 42.2, 1.06}, {1, 89.1, 3.75}, {1, 62.3, 1.8}, {1, 35.5, 1.84}}
Bước 12
badgroup[entry_] := Not[MatchQ[entry[[1]], 1 | 2]]

Không có đầu ra - bước này chuẩn bị cho bước kế tiếp.

Bước 13
filtereddata = DeleteCases[data, _ ? badgroup]
Đầu ra
{{1, 71.6, 0.41}, {2, 27.2, 4.96}, {2, 59.3, 0.18}, {1, 46., 2.72}, {2, 42.2, 1.06}, {1, 89.1, 3.75}, {1, 62.3, 1.8}, {1, 82.7, NA}, {1, 35.5, 1.84}}
Bước 14
group1 = Select[filtereddata, #[[1]] === 1&]
Đầu ra
{{1, 71.6, 0.41}, {1, 46., 2.72}, {1, 89.1, 3.75}, {1, 62.3, 1.8}, {1, 82.7, NA}, {1, 35.5, 1.84}}
Bước 15
group1mean = Mean[Select[group1[[All, -1]], NumberQ]]
Đầu ra
2.104
Bước 16
filtereddata[[All, 3]] = filtereddata[[All, 3]] /. "NA" -> group1mean
Đầu ra
{0.41, 4.96, 0.18, 2.72, 1.06, 3.75, 1.8, 2.104, 1.84}
Bước 17
Grid[filtereddata, Dividers -> All]
Đầu ra
Grid[{{1, 71.6, 0.41}, {2, 27.2, 4.96}, {2, 59.3, 0.18}, {1, 46., 2.72}, {2, 42.2, 1.06}, {1, 89.1, 3.75}, {1, 62.3, 1.8}, {1, 82.7, 2.104}, {1, 35.5, 1.84}}, Dividers -> All]
Bước 18
replaceByGroup[data_, col_, groupcol_, f_] := Block[{columnvals, funvals, grouped, groups, rules},
	columnvals = data[[All, {groupcol, col}]];
	If[VectorQ[columnvals[[All, 2]], NumericQ],
	columnvals[[All, 2]],
	grouped = GatherBy[columnvals, First];
	groups = grouped[[All, 1, 1]];
	funvals = Table[f[Select[grouped[[i]][[All, 2]], NumericQ]], {i, Length[groups]}];
	rules = Table[Rule[{groups[[i]], _ ? (Not[NumericQ[#]]&)}, {groups[[i]], funvals[[i]]}], {i, Length[groups]}];
	Replace[columnvals, rules, {1}][[All, 2]]]]

Không có đầu ra - bước này chuẩn bị cho bước kế tiếp.

Bước 19
newdata = DeleteCases[data, _ ? badgroup]
Đầu ra
{{1, 71.6, 0.41}, {2, 27.2, 4.96}, {2, 59.3, 0.18}, {1, 46., 2.72}, {2, 42.2, 1.06}, {1, 89.1, 3.75}, {1, 62.3, 1.8}, {1, 82.7, NA}, {1, 35.5, 1.84}}
Bước 20
replaceByGroup[newdata, 3, 1, Mean]
Đầu ra
{0.41, 4.96, 0.18, 2.72, 1.06, 3.75, 1.8, 2.104, 1.84}
Bước 21
replaceByGroup[newdata, 3, 1, Median]
Đầu ra
{0.41, 4.96, 0.18, 2.72, 1.06, 3.75, 1.8, 1.84, 1.84}
Bước 22
Grid[Transpose[Table[If[j == 1, newdata[[All, j]], replaceByGroup[newdata, j, 1, Mean]], {j, Length[newdata[[1]]]}]]]
Đầu ra
Grid[{{1, 71.6, 0.41}, {2, 27.2, 4.96}, {2, 59.3, 0.18}, {1, 46., 2.72}, {2, 42.2, 1.06}, {1, 89.1, 3.75}, {1, 62.3, 1.8}, {1, 82.7, 2.104}, {1, 35.5, 1.84}}]
Bước 23
Grid[Transpose[{newdata[[All, 1]], replaceByGroup[newdata, 2, 1, Mean], replaceByGroup[newdata, 3, 1, Median]}]]
Đầu ra
Grid[{{1, 71.6, 0.41}, {2, 27.2, 4.96}, {2, 59.3, 0.18}, {1, 46., 2.72}, {2, 42.2, 1.06}, {1, 89.1, 3.75}, {1, 62.3, 1.8}, {1, 82.7, 1.84}, {1, 35.5, 1.84}}]

Các hàm được dùng

Công thức liên quan

Tất cả công thức · Tài liệu tham chiếu hàm · Dùng cái này từ một client MCP