City + units → shillings, plot, report.txt.
Goal
Print params and the report.
from pathlib import Path
import pandas as pd
import statsmodels.formula.api as smf
Path('sales.csv').write_text('city,units,shillings\nNairobi,12,126.0\nMombasa,9,198.0\nKisumu,3,93.0\nNairobi,7,73.5\nMombasa,11,242.0\nKisumu,4,124.0\n', encoding='utf-8')
df = pd.read_csv('sales.csv')
fit = smf.ols('shillings ~ units + C(city)', data=df).fit()
print(fit.params.round(3).to_dict())
plt.scatter(df['units'], df['shillings'])
plt.xlabel('units')
plt.ylabel('shillings')
plt.title('kiosk sales')
plt.savefig('fit.png', dpi=120, bbox_inches='tight')
plt.show()
Path('report.txt').write_text('rsquared=' + str(round(fit.rsquared, 3)) + '\n', encoding='utf-8')
print(Path('report.txt').read_text(encoding='utf-8'))