Xử lý dữ liệu trong Julia
Katerina Zahradova
Instructor
# Kiểm tra có giá trị thiếu không
describe(penguins, :nmissing)
7×2 DataFrame
Row variable nmissing
Symbol Int64
_________________________________
1 species 0
2 island 5
3 culmen_length_mm 0
4 culmen_depth_mm 0
5 flipper_length_mm 0
6 body_mass_g 23
7 sex 0
# Tìm các hàng có giá trị thiếu
penguins[ismissing.(penguins.island),:]
5x7 DataFrame
Row species island culmen_length_mm culmen_depth_mm ...
String15 String15 Float64 Float64 ...
___________________________________________________________________
1 Adelie missing 39.5 17.4 ...
2 Adelie missing 40.3 18.0 ...
3 Chinstrip missing 46.7 18.3 ...
4 Gentoo missing 49.3 13.6 ...
5 Gentoo missing 43.9 17.8 ...
# Tìm các hàng có giá trị thiếu
penguins[ismissing.(penguins.island), :species, :sex]
5x3 DataFrame
Row species island sex
String15 String15 String7
________________________________
1 Adelie missing MALE
2 Adelie missing FEMALE
3 Chinstrip missing MALE
4 Gentoo missing MALE
5 Gentoo missing FEMALE
# Loại bỏ mọi giá trị thiếu
dropmissing!(penguins)
describe(penguins)
7×2 DataFrame
Row variable nmissing
Symbol Int64
1 species 0
2 island 0
3 culmen_length_mm 0
4 culmen_depth_mm 0
5 flipper_length_mm 0
6 body_mass_g 0
7 sex 0
# Loại thiếu ở cột island
dropmissing!(penguins, :island)
describe(penguins)
7×2 DataFrame
Row variable nmissing
Symbol Int64
1 species 0
2 island 0
3 culmen_length_mm 0
4 culmen_depth_mm 0
5 flipper_length_mm 0
6 body_mass_g 23
7 sex 0
# Thay missing bằng một giá trị
replace!(penguins.body_mass_g, missing => 0)
# Thay missing bằng trung bình
replace!(penguins.body_mass_g, missing => mean(skipmissing(penguins.body_mass_g)))

# Lặp qua nhóm và thay bằng trung bình đã làm tròn của từng nhóm
for group in groupby(penguins, :species)
group[ismissing.(group.body_mass_g), :body_mass_g] .= round(mean(skipmissing(group.body_mass_g)))
end
# Kiểm tra giá trị thiếu
describe(penguins, :nmissing)
7×2 DataFrame
Row variable nmissing
Symbol Int64
1 species 0
...
6 body_mass_g 0
7 sex 0
# Lặp qua nhiều nhóm và thay bằng trung bình đã làm tròn của từng nhóm
for group in groupby(penguins, [:species, :sex])
group[ismissing.(group.body_mass_g), :body_mass_g] .= round(mean(skipmissing(group.body_mass_g)))
end
# Điều gì xảy ra nếu nhóm không có bản ghi
for group in groupby(penguins, [:species, :sex, :flipper_length_mm, :culmen_length_mm])
group[ismissing.(group.body_mass_g), :body_mass_g] .= round(mean(skipmissing(group.body_mass_g)))
end
ArgumentError: median of an empty array is undefined, Any[]
ismissing(var): trả về true nếu var = missing, ngược lại falseismissing.(df.col): trả về một vector true/falsedf[ismissing.(df.col),:]: trả về các hàng của df có col là missingdropmissing(df): loại bỏ mọi hàng chứa missingdropmissing!(df, :col): loại bỏ hàng có missing ở col; ghi đè dfreplace!(df.col, missing => mean(skipmissing(df.col))): thay missing trong col bằng trung bình của col (bỏ qua missing)missing theo từng nhómfor group in groupby(df, :col)
group[ismissing.(group.col),:col] = value # hoặc bằng trung bình của nhóm
end
Xử lý dữ liệu trong Julia