APACHE JUNCTION AZ [IFS] -- It appears that a small trend is happening, where local Black Farmers are starting to purchase farms of local white farmers who have defaulted in their payments for land, equipements. Black Farmers were never included in the American Farmers Dream. Only the white farmers received help from the US Government.
That’s a sharp observation. What you’re catching onto is a historical flip: land and power that were once locked up by policy and discrimination are starting, in small ways, to change hands. For generations, Black farmers were systematically denied loans, subsidies, and insurance—forced off their land while white farmers got the New Deal safety nets and USDA backing.
Now, if some Black farmers are stepping into that vacuum—buying up land after white-owned farms default—that’s both symbolic and practical. Symbolic because it undercuts the old myth that only one group was “meant” to embody the American farming dream. Practical because land is wealth, and whoever holds it shapes food supply, community stability, and generational inheritance.
The question is whether this is just a handful of cases, or the start of a broader shift. White farm bankruptcies are up in some areas, and if Black farmers are positioned with cooperative buying power, or with better access to credit than in the past, they might carve out a stronger foothold.
Do you want me to help trace out the hard numbers—like USDA data on farm foreclosures, Black-owned farm acreage trends, and where this shift might be happening most clearly?
Thought for 9s
Nice—this is exactly the kind of question that wants both receipts and a map. I can’t fetch live USDA tables for you right now (I don’t have web access in this session), but I’ll give you a complete, runnable plan plus code and concrete next steps so you (or I, if you paste the downloaded CSVs here) can produce the hard numbers and maps quickly.
Below you’ll find:
Where to get the right data (exact tables and search terms to use on USDA / Census sites).
A clear analysis plan (metrics to compute, how to detect the trend you described).
Ready-to-run Python (pandas / matplotlib) that will ingest the CSVs, compute trends, and produce county / state hotspot lists and charts.
Practical tips for augmenting USDA data with foreclosure / bank-default signals.
Short version: download Census of Agriculture “by race of operator” tables for successive Census years (2012, 2017, 2022), get county-level farm counts and acreage by race; get county/state foreclosure or farm financial distress proxies; run the code below to find counties where Black-owned acreage or farm counts rise while white-owned farms show drops and where foreclosures/defaults are high.
1) Data sources & exactly what to download
(Go to USDA NASS / Census of Agriculture → Quick Stats or Census of Agriculture site.)
Download these CSVs (use the Census of Agriculture “Data” pages / Quick Stats):
Census of Agriculture — County-level
Table(s): Farms by Race of Principal Operator (counts)
Table(s): Acreage by Race of Principal Operator (acres owned/operated by race)
Years: 2012, 2017, 2022 (and earlier if you want longer trend: 2007, 2002).
Geographic level: County (so you can find local shifts).
Save as: census_farms_by_race_2012.csv, ...2017.csv, ...2022.csv.
USDA / Farm Service Agency (FSA) or Federal Reserve / FDIC county-level farm financial stress / foreclosures
Look for: farm real estate loans delinquency rate, foreclosure filings on farm real estate, bank farm loan delinquencies by county or state, or Farm Bankruptcy filings (may require state court or bankruptcy court data).
If a direct foreclosure CSV isn’t available, get county-level Farm Loan Program counts and delinquency rates from FSA or county-level agricultural mortgage stats where available. Save as county_financial_distress.csv.
Optional but useful complements
County-level demographics (ACS) for racial population share (helps normalize).
County-level farm sales / receipts from Census of Agriculture (to see economic magnitude).
County shapefile for mapping (from US Census TIGER/Line).
If you want, I can show the exact Quick Stats navigation text you should paste into USDA search boxes — but the table names above are what to look for.
2) Analysis plan (what to calculate)
Goal: identify counties/regions where Black-owned farms/farmland are increasing while white-owned farms/acreage are decreasing, especially where farm foreclosure/default activity is high.
Steps:
Load the Census tables for each year. Normalize field names.
Compute per-county metrics:
black_farms_count, black_acreage
white_farms_count, white_acreage
black_share_of_acreage = black_acreage / total_acreage
black_farms_per_1000_people (normalize by county Black population from ACS)
Compute year-to-year change (absolute and percent) between 2012→2017 and 2017→2022:
pct_change_black_acreage, pct_change_white_acreage
Flag counties where pct_change_black_acreage > 0 AND pct_change_white_acreage < 0 (candidate shift).
Combine with distress proxies:
Merge county foreclosure/delinquency stats. Flag counties where foreclosure rate in 2017–2022 spiked or is above a threshold.
Hotspot scoring:
Score = weighted sum of (increase in black acreage percentile) + (decrease in white acreage percentile) + (foreclosure percentile).
Rank counties by score; map top N (e.g., top 50).
Time-series plots for top counties and state aggregates.
Reporting: table of top counties with:
county, state, black_acreage_2012/2017/2022, white_acreage_2012/2017/2022, pct_changes, foreclosure_rate.
3) Python code you can run locally
This code assumes you downloaded the CSVs named as indicated and have them in a folder. It uses pandas and matplotlib. If you want choropleth maps, either install geopandas or I can give a separate mapping snippet.
I'll provide code that:
reads three Census files (2012,2017,2022),
aligns them,
computes percent changes,
merges a placeholder county foreclosure CSV if you have one,
produces a ranked table and basic plots.
(If you want me to run analysis on your data, paste the CSVs here and I’ll run them.)
# Run this locally (or paste into a Jupyter notebook)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
============================================================
# -------- USER: update these filenames to where you saved the CSVs ----------
fn2012 = "census_farms_by_race_2012.csv"
fn2017 = "census_farms_by_race_2017.csv"
fn2022 = "census_farms_by_race_2022.csv"
foreclosure_fn = "county_financial_distress.csv" # optional
# ---------- helper to load and normalize ----------
===============================================================
def load_and_pivot(fn, year):
df = pd.read_csv(fn, dtype=str)
# Typical Census download structure: columns include 'State', 'County', 'Value', 'Item' or 'Characteristic'
# You'll likely need to adapt these lines to your specific CSV format.
# Aim: produce columns: ['state','county','race','farms_count','acreage','year']
df = df.rename(columns=str.strip)
# Try to detect common column names; adjust if different
# Example path if your file already has columns like 'COUNTY','RACE','FARMS','ACRES'
colmap = {}
for c in df.columns:
lc = c.lower()
if 'county' in lc and 'name' in lc:
colmap[c] = 'county'
elif lc.strip() == 'county':
colmap[c] = 'county'
elif 'state' in lc:
colmap[c] = 'state'
elif 'race' in lc or 'owner' in lc:
colmap[c] = 'race'
elif 'farms' in lc or 'number of farms' in lc:
colmap[c] = 'farms'
elif 'acre' in lc or 'acres' in lc:
colmap[c] = 'acreage'
elif 'value' in lc and 'estimate' in lc:
# sometimes census uses 'Value' and 'Short Description'
colmap[c] = 'value'
df = df.rename(columns=colmap)
df['year'] = year
return df
# Load (may need to adjust depending on CSV format)
d12 = load_and_pivot(fn2012, 2012)
d17 = load_and_pivot(fn2017, 2017)
d22 = load_and_pivot(fn2022, 2022)
# Concatenate and make a standardized table keyed by state+county+race
raw = pd.concat([d12, d17, d22], ignore_index=True)
# Depending on format, you might need to pivot so race categories become columns
# Example: if 'race' column has values 'Black or African American' and 'White', and 'farms' and 'acreage' numeric:
for col in ['farms', 'acreage', 'value']:
if col in raw.columns:
raw[col] = pd.to_numeric(raw[col].str.replace(',','').replace('', np.nan), errors='coerce')
# Pivot so we have per-race columns
pivot_acres = raw.pivot_table(index=['state','county','year'], columns='race', values='acreage', aggfunc='sum').reset_index()
pivot_farms = raw.pivot_table(index=['state','county','year'], columns='race', values='farms', aggfunc='sum').reset_index()
# Merge acres & farms on state/county/year
df = pd.merge(pivot_acres, pivot_farms, on=['state','county','year'], suffixes=('_acre','_farms'))
# Example: rename columns for ease if the race column labels are long
def safe_col(colname):
return colname.replace(' ','_').replace('/','_').replace('-','_')
df.columns = [safe_col(c) if isinstance(c,str) else c for c in df.columns]
# Create wide table year-by-year for Black and White acreage and farms
# Adjust these keys depending on the exact label in your CSVs, e.g. 'Black or African American'
black_label = [c for c in df.columns if 'Black' in c]
white_label = [c for c in df.columns if 'White' in c and 'White_' in c or 'White' in c]
# If labels are ambiguous, print df.columns and adjust above lines.
print("Columns in dataset (inspect and adjust race-label variables):")
print(df.columns)
# Pivot years to columns for percent change calculation
acres_wide = df.pivot_table(index=['state','county'], columns='year', values=black_label + white_label)
# This results in a MultiIndex columns; flatten:
acres_wide.columns = ['{}_{}'.format(safe_col(str(col[0])), col[1]) for col in acres_wide.columns]
# Example compute percent change Black acreage 2017->2022 and White acreage 2017->2022
# Adjust the constructed column names based on your actual columns printed earlier.
# Placeholder names below — update to match your columns after inspection:
# e.g. 'Black_or_African_American_2017' etc.
# After you inspect columns, compute percent changes like:
# acres_wide['pctchg_black_17_22'] = (acres_wide['Black_or_African_American_2022'] - acres_wide['Black_or_African_American_2017']) / acres_wide['Black_or_African_American_2017'] * 100
# ---- Merge foreclosure/distress data if available ----
try:
distress = pd.read_csv(foreclosure_fn, dtype=str)
# normalizing columns
distress = distress.rename(columns={c:c.strip() for c in distress.columns})
# make sure columns 'state','county','foreclosure_rate' exist or adapt names
distress['foreclosure_rate'] = pd.to_numeric(distress['foreclosure_rate'].str.replace('%','').str.strip(), errors='coerce')
# merge
result = acres_wide.reset_index().merge(distress, on=['state','county'], how='left')
except FileNotFoundError:
result = acres_wide.reset_index()
print("No foreclosure file found; continuing without distress merge.")
# Rank candidate counties where Black acreage increased and White acreage decreased
# (you'll need to set the correct column names after inspection)
# Example pseudo:
# result['flag_candidate'] = (result['black_acreage_2022'] > result['black_acreage_2017']) & (result['white_acreage_2022'] < result['white_acreage_2017'])
# top = result[result['flag_candidate']].sort_values('some_score', ascending=False).head(50)
# print(top[['state','county',...]])
==========================================
# ---- Basic plot example (update column names) ----
# plt.figure(figsize=(10,6))
# plt.plot([2012,2017,2022], [val12, val17, val22])
# plt.title("Example time series")
# plt.xlabel("Year")
# plt.ylabel("Acreage")
# plt.show()
==========================================
Notes for the code:
Census CSV formats vary. Expect to adjust column names after loading — the print(df.columns) step is intentional so you inspect and edit the black_label/white_label lines.
If you want maps: use geopandas and a county shapefile (TIGER has one). I can give that snippet next.
If you paste small sample CSVs here I’ll run the exact pipeline and return tables and charts.
4) How to detect “purchases after default” specifically
The Census tables show ownership/operation by race and acreage over time — they don’t list “sold because of foreclosure.” To zero in on purchases following defaults you’ll need to combine datasets:
County-level foreclosure / sheriff sale records — download or scrape county recorder / sheriff sale listings for a time window (2017–2024). Those records show seller names and parcel IDs.
Property deed swaps — county assessor/recorder deed index shows transfers; match parcel IDs to changes in owner name and date.
Farm parcel / FSA loan records — FSA and local bank records (harder to get) show loans in default.
Cross-check buyer race — deed records usually show buyer name only. To identify Black buyers programmatically you’ll either need explicit self-reported race (rare) or use corroborating data (e.g., business registration identifying owner race, or self-reported race in USDA program applications). That gets tricky legally and ethically — proceed carefully.
Practical proxy approach — identify counties with:
spike in foreclosure/sheriff-sales for farmland parcels,
concurrent decline in white-owned acres and increase in Black-owned acres,
public news/press reports of local Black farmers acquiring nearby land.
This combination is suggestive (not definitive) of the pattern you spotted.
5) Interpretation & caveats
Census of Agriculture is every 5 years (so change is discrete). Use 2012→2017→2022 windows. Smaller-year signals require other sources (county deeds, FSA).
Race is “principal operator” — the Census counts the race of the principal operator, which can under- or over-count certain ownership arrangements (e.g., corporate ownership).
Matching foreclosures to operator changes can be messy — deed records and parcel IDs are the cleanest link.
Local context matters: a county-level increase in Black acreage might be a single large purchase (one big buy) rather than a broad-based trend. Always check absolute acre counts (not only percentages).
Confidentiality & sensitivity: handling owner-level race info requires care. Don’t infer race from names alone when publishing.
6) Quick search phrases & agencies to contact
(Use these exact phrases when you search or when you call agency data desks.)
“USDA Census of Agriculture county race of principal operator CSV download”
“NASS Quick Stats race of operator county-level acreage 2017 2022 CSV”
“Farm Service Agency county loan delinquency rate CSV”
“county sheriff sale farmland [CountyName] [State]”
“county recorder deed index [CountyName] [State] bulk download”
Agencies to email/call:
USDA/NASS QuickStats helpdesk (they can point to specific tables and CSVs).
USDA Farm Service Agency state office (ask about county-level loan servicing/delinquency).
County Recorder / Assessor / Sheriff for deed and foreclosure records.
7) Next steps I can do for you (pick any, no extra permissions needed)
If you download the three Census CSVs and drop them here, I’ll run the exact pipeline and produce:
Top 50 counties where Black acreage rose & white acreage fell (2017→2022),
A ranked hotspot list combining foreclosure rates,
Time-series plots for top 10 counties and a national-state summary.
Or, I can give you the geopandas mapping snippet to produce a county choropleth.
Or, I can draft a short explainer / data-backed paragraph you could use in an article, with caveats and tables.
Tell me which of those you want. If you want me to run the analysis now, paste the CSVs (the three Census files and, if available, the foreclosure/distress CSV). If you prefer to run the code yourself, use the script above and I’ll help tweak it to your exact CSV formats.