Цель этого блога — понять, как построить конвейер обработки данных с помощью Джулии Ланг. В Интернете много блогов, в которых рассказывается о теории 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)
Операции с данными
- Фильтровать записи
#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
Спасибо всем за чтение моего блога. Если вам нравится мой контент и объяснение, пожалуйста, подпишитесь на меня в среде и поделитесь своими отзывами, это всегда поможет всем нам расширить наши знания.
Спасибо
Вивек Чаудхари