Package: empiricalutilities
empiricalutilitiesis an empirical package for manipulating DataFrames,especially those with datetime indexes, and other common data science functions
with an emphasis on improving visualization of results.Table of contentsInstallationLatest PyPI stable releaseLatest development release on GitHubUsageData VisulizationSimple Export to LaTeXTable with Standard ErrorsAdvanced Export to LaTeXContributionsLICENSEAuthorsInstallationLatest PyPI stable releasepipinstallempiricalutilitiesLatest development release on GitHubPull and install in the current directory:pipinstall-egit+https://github.com/jason-r-becker/empiricalutilities.git@master#egg=empiricalutilitiesimportempiricalutilitiesaseueu.latex_print(np.arange(1,10))...Usageempiricalutilitiesis very versatile and can be used in a number of ways.
Some examples of visualizing data in DataFrames and exporting to LaTeX are
provided below.importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltimportempiricalutilitiesaseuData VisulizationAfter generating a random DataFrame,color_table()can be used
to observe relative values compared across rows or columns. Take a dataset
that may be football players’ scores on different, unnamed drills:np.random.seed(8675309)cols=['QB #1001','RB #9458','WR #7694','QB #5463','WR #7584','QB #7428']table=pd.DataFrame(np.random.randn(5,6),columns=cols)color_table(table,axis=0)plt.show()Simple Export to LaTeXThe table of values can be easily exported to LaTeX usinglatex_print()eu.latex_print(table)Which can be copied and pasted into LaTeX:Table with Standard ErrorsNow, lets assume the players have run the drills multiple times so we have
average scores and standard errors. We can combine the average values with
their respective errors with just one line usingcombine_errors_table().
Further, we can print the results to the screen such that they are easy
to interpret usingprettyPrint():errors=pd.DataFrame(np.random.randn(5,6),columns=cols)/10error_table=combine_errors_table(table,errors,prec=3)eu.prettyPrint(error_table)Advanced Export to LaTeXTo export this table, we must first create the table with an additional
argumentlatex_format=Truewhich letscombine_errors_table()know it
needs to print with LaTeX formatting.error_table=combine_errors_table(table,errors,prec=3,latex_format=True)We can also explore some of the advanced options available inlatex_print().
First, the table header can be split into two rows, which is accomplished with
themulti_row_header=Trueargument. When True,latex_print()expects
a DataFrame with column headers containing a'*'to mark the start of each
new row. We will use list comprehension to create a new column header list where
spaces are replaced with' * ', resulting in the top header row being
player position and bottom being player number.multi_cols=[col.replace(' ',' * ')forcolincols]error_table.columns=multi_colsNext, we can sort the header. Let’s assume we want to group by position, and
are most interested in quarterbacks (QB), especially those with high numbers.custom_sort()can be used to create our own sorting rules. By setting the
sorting alphabet to'QWR9876543210', we empasize position first, QB->WR->RB,
and number second in decreasing order from 9.sort_alphabet='QWR9876543210'sorted_cols=eu.custom_sort(multi_cols,sort_alphabet)Additionally, we can add some expressive ability to the table by bolding the score
of the top performer for each drill.find_max_locs()identifies the
location of each row-wise maximum in the DataFrame. We must be careful to sort
the original table identically to the table with standard errors when the order
of header columns is altered.table.columns=multi_colsmax_locs=eu.find_max_locs(table[sorted_cols])Finally, adding a caption can be accomplished with thecaptionargument, and
the uninformative index can be removed withhide_index=True. For wide tables,
addingadjust=Trueautomatically sizes the table to the proper width of
your LaTeX environment, adjusting the text size as needed.eu.latex_print(error_table[sorted_cols],caption='Advanced example of printing to LaTeX.',adjust=True,multi_row_header=True,hide_index=True,bold_locs=max_locs,)ContributionsAll source code is hosted onGitHub.
Contributions are welcome.LICENSEOpen Source (OSI approved):AuthorsThe main developer(s):Jason R Becker (jrbecker)