Цель этого блога — понять, как построить конвейер обработки данных с помощью Джулии Ланг. В Интернете много блогов, в которых рассказывается о теории DE, и здесь я собираюсь поговорить о CODE, меньше теории, больше кода.

Импортировать необходимые библиотеки и наборы данных

using CSV
using DataFrames
using Dates
#load the datasets into memory
emp_df = CSV.read("D:\\Julia\\emp.csv", DataFrame)
print(typeof(emp_df))
#first()to access top 5 records
first(emp_df,5)

dept_df = CSV.read("D:\\Julia\\dept.csv", DataFrame)
print(typeof(dept_df))
first(dept_df,5)

Операции с данными

  1. Фильтровать записи
#filter out records for deptno=30
dept30=filter(row ->row[“DEPTNO”] == 30,emp_df)
dept30
#row is a keyword in julia via we can access the column names

#filter multiple conditions
filter(row ->row.SAL> 500 && row.SAL <=1800,emp_df)

2. Сортировка записей

srt_df= sort(emp_df, order(:DEPTNO, rev=false))
first(srt_df,7)

3. Группы и агрегаты

#create a seperate small subset for groupby ops
group_df= select(emp_df,”DEPTNO”,”SAL”)
first(group_df,7)

#groupby creates a grouped dataframe other than normal dataframe, somewhat similar to pandas groupby
typeof(gd)
#access group information using array indexes
println(gd[1])
println(gd[2])
println(gd[3])

Агрегации

using Statistics
println(“sum of sal deptwise “,combine(gd, :SAL => sum))
println(“ — — — — — — — — — — — — — — — — — — — — — — — “)
println(“avg of sal deptwise “,combine(gd, :SAL => mean))

println(“max of sal deptwise “,combine(gd, :SAL => maximum))
println(“ — — — — — — — — — — — — — — — — — — — — — — — “)
println(“sum of sal deptwise “,combine(gd, :SAL => minimum))

4. Пользовательские функции Джулии

#WAF to calculate tax of employees and add Tax as derived column in existing dataframe.
#function is the keyword to write a udf
function taxes(sal)
 tax=0
 if sal>500 && sal<=1250
 tax=sal*.125
 elseif sal>1250 && sal<=1750
 tax=sal*.175
 elseif sal>1750 && sal<=2500
 tax=sal*.225
 elseif sal>2500
 tax=sal*.25
 else
 tax=0
 end
end
#create a derived column to add calculated taxes
emp_df[!, “Taxes”] = taxes.(emp_df.SAL)
first(emp_df,8)

5. Присоединяется

#merge the emp_df with grouped df 
agg_df= innerjoin(emp_df,grp_df, on= :DEPTNO)
first(agg_df,10)

Выполните SQL, например, выберите во фрейме данных, и запишите набор данных в файл CSV:

CSV.write("D:\\Julia\\empagg_out.csv", 
    select(agg_df, "EMPNO", "ENAME", "SAL", "COMM", "DEPTNO","Taxes","SAL_sum" => "SalSum"))

Присоединяйтесь к наборам данных emp и dept

inner_df= innerjoin(emp_df,dept_df, on= :DEPTNO)
first(inner_df,8)

out_df=select(inner_df,”EMPNO”,”ENAME”,”SAL”,”COMM”,”DEPTNO”,”DNAME”)
first(out_df,8)

CSV.write(“D:\\Julia\\empd_out.csv”, out_df)

Краткое содержание:

· Чтение наборов данных CSV

· Операции с данными: фильтрация, сортировка, группировка, агрегация, объединение.

· Пользовательские функции и производные столбцы.

· Запись фреймов данных Julia в файлы CSV

Спасибо всем за чтение моего блога. Если вам нравится мой контент и объяснение, пожалуйста, подпишитесь на меня в среде и поделитесь своими отзывами, это всегда поможет всем нам расширить наши знания.

Спасибо

Вивек Чаудхари