{"id":1157,"date":"2026-01-25T04:34:09","date_gmt":"2026-01-25T08:34:09","guid":{"rendered":"https:\/\/www.sofastatistics.com\/blog\/?p=1157"},"modified":"2026-01-25T14:28:32","modified_gmt":"2026-01-25T18:28:32","slug":"friendly-python-statistics-library-launched","status":"publish","type":"post","link":"http:\/\/www.sofastatistics.com\/blog\/friendly-python-statistics-library-launched\/","title":{"rendered":"Friendly Python Statistics Library Launched"},"content":{"rendered":"\n<p>Trusted statistical reporting is now available in the convenient form of a Python library. Welcome to SOFA Stats &#8211; No Sweat Stats!<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/sofa_logo_text_horiz.png\"><img loading=\"lazy\" decoding=\"async\" width=\"514\" height=\"211\" src=\"https:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/sofa_logo_text_horiz.png\" alt=\"\" class=\"wp-image-1158\" style=\"width:348px;height:auto\" srcset=\"http:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/sofa_logo_text_horiz.png 514w, http:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/sofa_logo_text_horiz-300x123.png 300w\" sizes=\"auto, (max-width: 514px) 100vw, 514px\" \/><\/a><\/figure>\n\n\n\n<p>Perhaps you need to run an ANOVA, or a correlation analysis. Or you want to display your data as Box Plots, or nested Cross Tab tables.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/carousel.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"449\" src=\"https:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/carousel-1024x449.png\" alt=\"\" class=\"wp-image-1180\" srcset=\"http:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/carousel-1024x449.png 1024w, http:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/carousel-300x132.png 300w, http:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/carousel-768x337.png 768w, http:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/carousel.png 1335w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p><code>sofastats_lib<\/code> can help. Look at the <a href=\"https:\/\/sofastats.github.io\/sofastats_lib\/output_gallery.html\">Output Gallery<\/a> to see what is available. Here is the output of a simple Cross Tab table (based on synthetic demonstration data):<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/sofastats.github.io\/sofastats_lib\/output_gallery.html\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"632\" src=\"https:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/simple_cross_tab_example-1024x632.png\" alt=\"\" class=\"wp-image-1166\" srcset=\"http:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/simple_cross_tab_example-1024x632.png 1024w, http:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/simple_cross_tab_example-300x185.png 300w, http:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/simple_cross_tab_example-768x474.png 768w, http:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/simple_cross_tab_example.png 1118w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>And here&#8217;s a preview of some of the charting options (also using synthetic data):<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/demo_multi_chart_multi_line_chart.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"508\" src=\"https:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/demo_multi_chart_multi_line_chart-1024x508.png\" alt=\"\" class=\"wp-image-1169\" srcset=\"http:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/demo_multi_chart_multi_line_chart-1024x508.png 1024w, http:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/demo_multi_chart_multi_line_chart-300x149.png 300w, http:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/demo_multi_chart_multi_line_chart-768x381.png 768w, http:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/demo_multi_chart_multi_line_chart-1536x763.png 1536w, http:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/demo_multi_chart_multi_line_chart.png 1736w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/demo_multi_chart_scatter_plot_by_series.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"385\" src=\"https:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/demo_multi_chart_scatter_plot_by_series-1024x385.png\" alt=\"\" class=\"wp-image-1170\" srcset=\"http:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/demo_multi_chart_scatter_plot_by_series-1024x385.png 1024w, http:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/demo_multi_chart_scatter_plot_by_series-300x113.png 300w, http:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/demo_multi_chart_scatter_plot_by_series-768x289.png 768w, http:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/demo_multi_chart_scatter_plot_by_series.png 1521w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/demo_multi_chart_pie_charts.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"450\" src=\"https:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/demo_multi_chart_pie_charts-1024x450.png\" alt=\"\" class=\"wp-image-1171\" srcset=\"http:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/demo_multi_chart_pie_charts-1024x450.png 1024w, http:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/demo_multi_chart_pie_charts-300x132.png 300w, http:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/demo_multi_chart_pie_charts-768x337.png 768w, http:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/demo_multi_chart_pie_charts.png 1230w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>And the existing ANOVA documentation (once again, using synthetic data):<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/demo_anova_output.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"612\" src=\"https:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/demo_anova_output-1024x612.png\" alt=\"\" class=\"wp-image-1173\" srcset=\"http:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/demo_anova_output-1024x612.png 1024w, http:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/demo_anova_output-300x179.png 300w, http:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/demo_anova_output-768x459.png 768w, http:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/demo_anova_output-1536x918.png 1536w, http:\/\/www.sofastatistics.com\/blog\/wp-content\/uploads\/2026\/01\/demo_anova_output.png 1713w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>The full API is documented here: <a href=\"https:\/\/sofastats.github.io\/sofastats_lib\/API\/\" data-type=\"link\" data-id=\"https:\/\/sofastats.github.io\/sofastats_lib\/API\/\">https:\/\/sofastats.github.io\/sofastats_lib\/API\/<\/a> and there is a simple guide to <a href=\"https:\/\/sofastats.github.io\/sofastats_lib\/styles\/\">making and reusing your own styles<\/a>.<\/p>\n\n\n\n<p>The easiest option is to start with a CSV. Just make sure it is long format not wide format (see <a href=\"https:\/\/sofastats.github.io\/sofastats_lib\/data_prep\/\">Data Preparation<\/a>).<\/p>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-ad2f72ca wp-block-group-is-layout-flex\">\n<p><code>sofastats_lib<\/code> is based on the tried-and-true <a href=\"https:\/\/sofastatistics.com\/home_classic.php\">SOFA Statistics desktop application<\/a> but can be used like any other Python library.<\/p>\n<\/div>\n\n\n\n<p>You can add it to your project in the usual way e.g. <code>uv add sofastats_lib<\/code>. Friendly installation and usage instructions are available at <a href=\"https:\/\/sofastats.github.io\/sofastats_lib\/\">https:\/\/sofastats.github.io\/sofastats_lib\/<\/a><\/p>\n\n\n\n<p>Let us know what you think of <code>sofastats_lib<\/code>. We can be contacted at grant@sofastatistics.com or you can add issues to the <a href=\"https:\/\/github.com\/sofastats\/sofastats_lib\">GitHub project<\/a>. And please spread the word.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Trusted statistical reporting is now available in the convenient form of a Python library. Welcome to SOFA Stats &#8211; No Sweat Stats! Perhaps you need to run an ANOVA, or a correlation analysis. Or you want to display your data as Box Plots, or nested Cross Tab tables. sofastats_lib can help. Look at the Output [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,7,10,5,9],"tags":[],"class_list":["post-1157","post","type-post","status-publish","format-standard","hentry","category-developers","category-education","category-open-source","category-python","category-statistics"],"_links":{"self":[{"href":"http:\/\/www.sofastatistics.com\/blog\/wp-json\/wp\/v2\/posts\/1157","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.sofastatistics.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.sofastatistics.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.sofastatistics.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.sofastatistics.com\/blog\/wp-json\/wp\/v2\/comments?post=1157"}],"version-history":[{"count":12,"href":"http:\/\/www.sofastatistics.com\/blog\/wp-json\/wp\/v2\/posts\/1157\/revisions"}],"predecessor-version":[{"id":1202,"href":"http:\/\/www.sofastatistics.com\/blog\/wp-json\/wp\/v2\/posts\/1157\/revisions\/1202"}],"wp:attachment":[{"href":"http:\/\/www.sofastatistics.com\/blog\/wp-json\/wp\/v2\/media?parent=1157"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.sofastatistics.com\/blog\/wp-json\/wp\/v2\/categories?post=1157"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.sofastatistics.com\/blog\/wp-json\/wp\/v2\/tags?post=1157"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}