I suggested pulling chunks out of csc/csr and into a `lil_matrix` because they're good for incremental construction, we can preallocate the final size, and this approach stays more within numpy/scipy with less back-and-forth into Python (and less passes over the data). It was also shorter, simpler code than what @josenavas previously had, and conversion between LIL and CSR is fast ([reference](http://docs.scipy.org/doc/scipy/reference/sparse.html)).

I'm not sure which approach is faster in practice, so it may be worth comparing both approaches with a really large table and choosing the better one. :)