Metadata-Version: 2.4
Name: maketables
Version: 0.1.5
Summary: A Python package for creating publication-ready tables from regression results (statsmodels, pyfixest, linearmodels), descriptive statistics, and balance tables with output to LaTeX, Word, and HTML/Great Tables
Author-email: Alexander Fischer <alexander-fischer1801@t-online.de>, Dirk Sliwka <dirk.sliwka@uni-koeln.de>
License: MIT
Project-URL: Homepage, https://github.com/py-econometrics/maketables
Project-URL: Documentation, https://py-econometrics.github.io/maketables/
Project-URL: Repository, https://github.com/py-econometrics/maketables
Project-URL: Issues, https://github.com/py-econometrics/maketables/issues
Keywords: tables,statistics,regression,econometrics,latex,publication,pyfixest,statsmodels
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=1.20.0
Requires-Dist: pandas>=1.3.0
Requires-Dist: great-tables>=0.2.0
Requires-Dist: tabulate>=0.9.0
Requires-Dist: python-docx>=0.8.11
Requires-Dist: ipython>=7.0.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0; extra == "dev"
Requires-Dist: black>=22.0; extra == "dev"
Requires-Dist: flake8>=5.0; extra == "dev"
Requires-Dist: mypy>=1.0; extra == "dev"
Requires-Dist: pre-commit<5,>=4.3.0; extra == "dev"
Requires-Dist: quartodoc>=0.7.0; extra == "dev"
Provides-Extra: docs
Requires-Dist: sphinx>=5.0; extra == "docs"
Requires-Dist: sphinx-rtd-theme>=1.0; extra == "docs"
Requires-Dist: pyfixest>=0.13.0; extra == "docs"
Requires-Dist: statsmodels>=0.13.0; extra == "docs"
Requires-Dist: ipykernel<7,>=6.0.0; extra == "docs"
Requires-Dist: nbconvert>=7.0.0; extra == "docs"
Requires-Dist: pylatex<2,>=1.4.2; extra == "docs"
Requires-Dist: pyyaml<7,>=6.0.0; extra == "docs"
Provides-Extra: pystata
Requires-Dist: pystata>=0.0.1; extra == "pystata"
Requires-Dist: stata-setup>=0.1.0; extra == "pystata"
Dynamic: license-file

# MakeTables

A Python package for creating publication-ready tables from regression results (statsmodels, pyfixest, linearmodels), descriptive statistics, and balance tables with output to LaTeX, Word, and HTML via Great Tables. To get started, check out the [Getting Started Notebook](getting-started.ipynb).

## Overview

MakeTables provides a unified interface for generating tables such as:

- Regression tables from [Statsmodels](https://www.statsmodels.org/stable/index.html), [PyFixest](https://py-econometrics.github.io/pyfixest/pyfixest.html), [Linearmodels](https://bashtage.github.io/linearmodels/) and [Stata](https://www.stata.com/python/pystata19/)
- Descriptive statistics 
- Balance tables

The package supports multiple output formats including:

- Great Tables (HTML)
- LaTeX
- Microsoft Word (docx) documents

## Origin

MakeTables originated as the table output functionality within the [pyfixest](https://github.com/py-econometrics/pyfixest) package and has been moved to this standalone package to provide broader table creation capabilities also supporting other statistical packages.

## Authors

- Alexander Fischer [https://github.com/s3alfischer](https://github.com/s3alfisc)
- Dirk Sliwka [https://dsliwka.github.io/](https://dsliwka.github.io)

## Installation

### From PyPI (when published)
```bash
pip install maketables
```

### Development Installation
```bash
# Clone the repository
git clone https://github.com/yourusername/maketables.git
cd maketables

# Install in development mode
pip install -e .
```

## Quick Start

### Descriptive Statistics Table

```python
import pandas as pd
import maketables as mt

# Load your data (here using a sample Stata dataset with the import_dta function that also stores variable labels)
df = mt.import_dta("https://www.stata-press.com/data/r18/auto.dta")


# Create descriptive statistics table
mt.DTable(df, vars=["mpg","weight","length"], bycol=["foreign"])
```

### Regression Tables

#### with pyfixest
```python
import pyfixest as pf

# Fit your models here using pyfixest
est1 = pf.feols("mpg ~ weight", data=df)
est2 = pf.feols("mpg ~ weight + length", data=df)

# Make the table
mt.ETable([est1, est2])
```

#### with statsmodels
```python
import statsmodels.formula.api as smf

# Generate a dummy variable and label it
df["foreign_i"] = (df["foreign"] == "Foreign")*1
mt.set_var_labels(df, {"foreign_i": "Foreign (indicator)"})

# Fit your models 
est1 = smf.ols("foreign_i ~ weight + length + price", data=df).fit()
est2 = smf.probit("foreign_i ~ weight + length + price", data=df).fit(disp=0)

# Make the table
mt.ETable([est1, est2], model_stats=["N","r2","pseudo_r2",""], model_heads=["OLS","Probit"])
```


## Main Classes

### `MTable`
Base class for all table types with common functionality:
- Multiple output formats (Great Tables, LaTeX, Word)
- Flexible styling and formatting options
- Save and export capabilities
- Can also update tables in existing word documents
- Adapted for use in Jupyter Notebooks and for quarto use (tables automatically rendered as html in notebooks and as latex when rendering to pdf in quarto)


### `DTable`
Extends MTable for descriptive statistics:
- Automatic calculation of summary statistics
- Grouping by categorical variables (rows and columns)
- Customizable statistic labels and formatting

### `ETable`
Extends MTable for econometric model results:
- Support for statsmodels, pyfixest, and (more experimental) linearmodels 
- Many layout options (relabelling of variables, keep/drop, choice of reported statistics, column headings,...)

### `BTable`
Extends MTable for simple balance tables.


## License

This project is licensed under the MIT License - see the LICENSE file for details.


## Acknowledgments

- Built on the excellent [pyfixest](https://github.com/py-econometrics/pyfixest) package for econometric models
- Uses [Great Tables](https://github.com/posit-dev/great-tables) for beautiful HTML table output
