I downloaded Wikipedia's lists of car manufacturers and brands by country and decided to limit the set to brands in Germany, Japan, the United Kingdom, and the United States. I had to download the lists because Wikipedia blocks web scraping. The number of usable brands came out to 153. I also searched for known nicknames of the brands (e.g. "Bimmer/Beemer/Beamer" for BMW and "Chevy" for Chevrolet, etc.).
With the Python BeautifulSoup library, I extracted the brand names from the Wikipedia pages. Then I used NLTK to remove the HTML tags and regular expressions to remove excess whitespace and text (such as notes about the brand, the brand's years of operation, etc.).
The Rap Lyrics Database contains lyrics for all of Billboard Music's rap songs from 1989 through 2009. It's the only (as far as I know) searchable database of hip-hop lyrics (exclusively).
I wrote a few Python scripts to search for all 153+ brands in the Rap Lyrics database, saved the resulting pages, and used BeautifulSoup again to count the number of results on each page. I saved the brands with their counts to a file, which I then sorted using LibreOffice Calc. I reformatted the results with Python to create the Google Chart below.
|Car Brand||Number of Songs|
|BMW (Bimmer, Beemer, Beamer)||12|
For this experiment, I equated "beloved" to "number of songs mentions." This is obviously not always the case, as rappers name-drop plenty of things they dislike. It's true that rappers generally mention cars in a positive manner, but a more accurate experiment would take into account not just how many times the brand was used, but in what way the brand was used.
The Rap Lyrics Database turns up blank if you search for, say "Aston Martin" (with the quotes and the space), even though Aston Martin is mentioned in a few songs. So multi-word brands with spaces in them turned up short. (Mercedes-Benz doesn't have this issue because it has a hyphen, not a space.)
Mercedes-Benz often referred to as just "Mercedes" or just "Benz." While I searched for the full name and both nicknames, I ended up using the results for the full name only to minimize the possibility of duplicates (as I found the number of results, but not the actual song titles).
In general, a better analysis would have compared song results against each other to ensure that there are no duplicates in the count.