Prostitution in the US: Services
There is great variation in the services that US sex workers perform
Note: This is the third of several installments. Part 1 explored the dataset, Part 2 looked at the ethnicity of sex workers, part 3 (this part) looks at the services performed and how this correlates to ethnicity, part 4 will look at the economic side of things and how fees correlate to ethnicity, services, looks and performance of sex workers.
Let’s start to correlate
We have a trove of data. We can now start to correlate. To warm things up, I’ll look into each ethnic group’s smoking habits. We need a tiny bit of data cleaning (I’ll turn N/A
into “I don’t know
”s). Again, this is unlikely to be super-interesting information for most people, but it’s useful to “warm the engine”.
frame.Smokes.fillna("I don't know", inplace=True)plt.figure(figsize=(10,9))
sns.countplot(y='EthnicityNormalized', data=frame.sort_values(by=['EthnicityNormalized','Smokes']),
hue='Smokes');
The diagram above tells us something, but the disproportion among the representation of the different ethnic groups makes it hard to compare apples to apples. Let’s see if we can come up with a stacked diagram.
Note: the stacked bar chart wasn’t a native component in Matplotlib nor Seaport, but I really felt I needed it, and I managed to pull it off with the help of this. Integrating it wasn’t immediate though (and I won’t bore you with the details of how I did it), but it did the job in the end.
It’s getting hot in here
So far so good, but now the time has come to look at the more spicy (or distasteful, depending on viewpoints) details. If you are not comfortable with sexual content, here’s your warning that you shouldn’t be reading further.
Is there a correlation between ethnicity and certain sexual acts? Let’s explore fellatio (AKA oral sex, AKA Blowjob, BJ):
plt.figure(figsize=(10,9))
chart = sns.countplot(y='EthnicityNormalized', data=frame.sort_values(by=['EthnicityNormalized','Blow Job']),
hue='Blow Job');
chart.set_xticklabels(chart.get_xticklabels(), rotation=90);
Going Further for Your Customers
Time to take a look at how many providers are generally willing to go the extra mile to have happy customers. Many sex workers will let clients come in their mouths. Some will swallow:
frame['Cum In Mouth'].value_counts(normalize=True).plot(kind="barh", grid=True);
Let’s look at how these sexual mores break down by ethnicity:
plt.figure(figsize=(10,9))
chart = sns.countplot(y='EthnicityNormalized', data=frame.sort_values(by=['EthnicityNormalized','Cum In Mouth']),
hue='Cum In Mouth')
This is useful, but comparing differences in behavior based on ethnicity is not immediate. The stacked diagram does the trick. Interestingly, African-American providers are significantly less likely to allow their clients to come in the mouths.
For the hell of it, let’s also look at how things work in some major cities:
keycities = ["New York City - Manhattan, NY", "Los Angeles, CA", "Chicago, IL", "Washington, D.C., DC",
"Mexico City, Mexico", "New Orleans, LA", "Toronto, Canada", "Tijuana, Mexico"]
plt.figure(figsize=(10,9))
sns.countplot(y='City', data=frame[frame.City.isin(keycities)].sort_values(by=['City','Cum In Mouth']),
hue='Cum In Mouth');
The flip side
Let’s talk anal sex and attitudes towards it by providers with different backgrounds and ethnicity. Latinas enjoy “greek” (a common slang term for anal sex, apparently) more than other ethnicities in the US, but European providers are really open to the idea apparently.
For the overwhelming majority of Asian dolls (K-girls, Chinese, Japanese) out there, in contrast, the rear is no-fly zone pretty much.
Note: YMMV stands for Your Mileage May Very, meaning that some providers may have agreed to providing the greek experience, but their actual performance was lackadaisical.
Let’s break it down by city for curiosity.
keycities = ["New York City - Manhattan, NY", "Los Angeles, CA", "Chicago, IL", "Washington, D.C., DC", "Mexico City, Mexico"]
plt.figure(figsize=(10,9))
sns.countplot(y='City', data=frame[frame.City.isin(keycities)].sort_values(by=['City','Anal']),
hue='Anal');
Not simple to compare. Let’s stack it:
Part 3 is over. As you can imagine, the cost of service is a pretty salient aspect in this industry. Correlating ethnicity, geography and the looks with the prices charged for service will be interesting.
That’s what I’ll look at in the next installment.