Further Reading: Chapter 28 — Sales and Revenue Analytics

The resources below are real, verified references. Each annotation describes what it covers and why it is worth your time at this stage of learning.


Books

"Marketing Metrics: The Manager's Guide to Measuring Marketing Performance" Paul W. Farris, Neil T. Bendle, Phillip E. Pfeifer, David J. Reibstein Wharton School Publishing, 3rd edition (2015)

The definitive reference for business metrics including customer lifetime value, conversion rates, revenue metrics, and market share analysis. Dense but accessible. Chapter 5 covers sales force and channel effectiveness. Chapter 9 covers customer profitability. Worth reading cover-to-cover if you plan to work in sales analytics professionally.


"Predictably Irrational: The Hidden Forces That Shape Our Decisions" Dan Ariely Harper Perennial, Revised edition (2009)

Not a Python book — but essential context for why sales analytics decisions often do not follow rational economic logic. Understanding why customers behave the way they do (anchoring, decoy effects, loss aversion) is the conceptual background that makes your Pareto and RFM analyses more actionable. The chapter on the price of free is particularly relevant to promotion and discount analytics.


"Data Science for Business: What You Need to Know about Data Mining and Data-Analytic Thinking" Foster Provost, Tom Fawcett O'Reilly Media (2013)

Bridges the gap between business problems and data science methods. Chapter 2's discussion of business impact and value — specifically around segmentation, probability estimation, and ranking problems — maps directly to the RFM and Pareto work in this chapter. No Python code, but solid conceptual grounding.


Online Documentation and Tutorials

pandas Documentation — GroupBy: Split-Apply-Combine https://pandas.pydata.org/docs/user_guide/groupby.html

The official pandas guide to groupby operations. Everything revenue_by_dimension() does is explained in detail here, along with more advanced techniques like custom aggregation functions, transform(), and filter(). Read the sections on "Aggregation" and "Transformation" in particular.


pandas Documentation — Time Series / Date Functionality https://pandas.pydata.org/docs/user_guide/timeseries.html

Covers Period, DatetimePeriod, resample(), shift(), and pct_change() — all of which appear in the monthly trend and YoY analysis functions in this chapter. The "Resampling" section explains how to aggregate time series data to different frequencies without the manual groupby("year_month") approach.


matplotlib Documentation — Tutorials https://matplotlib.org/stable/tutorials/index.html

The official matplotlib tutorials. For the dashboard work in this chapter, the most relevant sections are "Pyplot tutorial," "Artist tutorial" (for understanding how figure, axes, and tick formatters relate), and "Constrained Layout Guide" (for properly spacing multi-panel figures). The FuncFormatter class used for dollar formatting is documented under the "Tick formatters" section of the axes reference.


Real Python — "pandas GroupBy: Your Guide to Grouping Data in Python" https://realpython.com/pandas-groupby/

A practical, code-first tutorial covering all the groupby patterns used in this chapter. More readable than the official docs. Covers named aggregation (the agg(revenue=("revenue","sum")) syntax), multiple aggregations, and the difference between transform() and agg().


Analytical Frameworks

Cohort Analysis — Amplitude Analytics Blog https://amplitude.com/blog/cohort-analysis

Amplitude is a product analytics company, and their blog has some of the clearest writing available on cohort analysis concepts. Their explanation of retention curves and how to interpret cohort tables translates well from product analytics to sales analytics.


Herfindahl-Hirschman Index (HHI) — U.S. Department of Justice https://www.justice.gov/atr/herfindahl-hirschman-index

The DOJ uses HHI to evaluate market concentration in antitrust cases. The same mathematical concept applies to revenue concentration within a customer base. Reading the DOJ's explanation gives you the authoritative definition and the context for what the 1,500 and 2,500 threshold values mean.


Python Libraries Used in This Chapter

pandas (version 2.x) pip install pandas https://pandas.pydata.org/ Core data manipulation library. All groupby, pivot, and time series operations.

matplotlib (version 3.x) pip install matplotlib https://matplotlib.org/ All static chart and dashboard generation.

seaborn (version 0.13+) pip install seaborn https://seaborn.pydata.org/ Used for the cohort heatmap. Seaborn's heatmap() function is the most efficient way to visualize a pandas DataFrame as a color-coded grid.

numpy (version 1.26+) pip install numpy https://numpy.org/ Used indirectly throughout for numerical operations. Not called explicitly in most functions but required by pandas.


Continuing in This Book

If the topics in this chapter sparked deeper curiosity, these chapters extend the analysis:

  • Chapter 27 — Full RFM analysis with two-dimensional segment maps, automated targeting lists, and customer lifetime value modeling
  • Chapter 29 — Financial analytics: connecting sales data to P&L, contribution margin, and break-even analysis
  • Chapter 31 — Building interactive dashboards with Plotly and Dash
  • Chapter 35 — Forecasting: using simple regression and seasonal decomposition to project future revenue

A Note on Data Sources

Real sales analytics uses real company data. The synthetic Acme Corp data in this chapter was designed to be statistically plausible — realistic seasonal patterns, realistic margin distributions, plausible customer concentration — but is not based on any actual company.

When you apply these techniques to your own organization's data, the most important first step is always the sanity check described in Section 28.1: validate that the data makes sense before trusting any downstream analysis. Revenue figures should match what accounting reports. Customer counts should be consistent across data sources. If your Python analysis says $2.8M in revenue but your accounting system says $2.4M, the discrepancy is the most important finding of the entire exercise — not any segmentation or growth rate you derived from flawed data.