Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Julia groupBy name and sum up count

Tags:

plot

julia

I'm new to Julia and have a simple question. I have a csv file with the following structures: [Category, Name, Count]. I have 2 things I want to create.

1, I want to create a function in julia which groupBy the Category and add up the Counts (Name is ignored). So that the output is [Name, Count]. I will then generate a bar-plot by setting x= Name and y= Count

2, I want to generate multiple plots for each Category where the Count of each Name is plotted on separate bar-plots. So iterative plotting process?

I think I've got the hang of plotting, but I am not sure about how to do the groupBy process. Any help/re-direction to tutorials would be greatly appreciated.

A sample of my data:

(net_worth,khan,14)
(net_worth,kevin,15)
(net_worth,bill,16)

the function I am currently working on:

function wordcount(text,opinion,number)
words= text
counts= Dict()
  for w = words
    counts[w]= number
  end
return counts
end

function wcreduce(wcs)
counts=Dict()
  for c in wcs, (k,v) in c
    counts[k] = get(counts,k,0)+v
  end
return counts
end

I am looking for a function like reduceByKey or GroupByKey I guess.

like image 595
GameOfThrows Avatar asked Apr 23 '15 11:04

GameOfThrows


1 Answers

So I solved this by using the Julia by function on DataFrames,

First load in the data csv using:

data = readtable("iris.csv")

Now its the function by:

function trendingkeys(data::DataFrame,trends::Symbol,funcadd::Function)
  by(data, :trends, funcadd -> sum(funcadd[:counts]))
end

I must say. DataFrame is so smart.

like image 159
GameOfThrows Avatar answered Sep 20 '22 20:09

GameOfThrows