<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Seaborn crash course
<img src='https
Step1:  Load sample dataset
Seaborn comes with a number of example dataset. Let us load the restaurant tipping dataset
Step2:  Distribution plots
One of the first things we do is to find the data dist.
Step3:  It is often useful to overlay the mean and SD with the histograms, below is one way to do it.
Step4:  You can change things like bin, kde flags to customize the plot
Step5:  Plotting dist of 2 variables
Seaborn can very easily attach a histogram to a scatter plot to show the data distribution
Step6:  You can use the kind argument to change the scatter to hex, reg etc
Annotating correlation coefficient and p value if unavailable
<blockquote>
    <b>Note
Step7:  Plotting dist of all variables
You can get a quick overview of the pariwise relationships between your columns using pairplot. Specifying a categorical variable to hue argument will shade it accordingly
Step8:  Plotting data frequency
Histograms provide data frequency. The distplot gives histograms. Another way to viz this is using rugplot. Rug plots are similar to the trading frequency bars we see in stock ticker time series datasets.
<ASSISTANT_TASK:>
Python Code:
import seaborn as sns
%matplotlib inline
Explanation: Seaborn crash course
<img src='https://seaborn.pydata.org/_images/hexbin_marginals.png' height="150" width="150">
Seaborn is an amazing data and statistical visualization library that is built using matplotlib. It has good defaults and very easy to use.
ToC
 - load sample dataset
 - Distribution plots
   - Plotting dist of 2 variables
     - annotating with correlation coefficient if unavailable
   - Plotting dist of all variables
 - Plotting data frequency
End of explanation
tips = sns.load_dataset('tips')
tips.head(5)
Explanation: Load sample dataset
Seaborn comes with a number of example dataset. Let us load the restaurant tipping dataset
End of explanation
#find dist of total bills
sns.distplot(tips['total_bill'])
Explanation: Distribution plots
One of the first things we do is to find the data dist.
End of explanation
tips.total_bill.mean()
tips_mean = tips.total_bill.mean()
tips_sd = tips.total_bill.std()
ax = sns.distplot(tips['total_bill'])
# plot mean in black
ax.axvline(x=tips_mean, color='black', linestyle='dashed')
# plot mean +- 1SD in red, dotted
ax.axvline(x=tips_mean + tips_sd, color='red', linestyle='dotted')
ax.axvline(x=tips_mean - tips_sd, color='red', linestyle='dotted')
# title
ax.set_title('$\mu = {}$ | $\sigma = {}$'.format(round(tips_mean, 2), round(tips_sd, 2)))
Explanation: It is often useful to overlay the mean and SD with the histograms, below is one way to do it.
End of explanation
sns.distplot(tips['total_bill'], kde=False, bins=35)
Explanation: You can change things like bin, kde flags to customize the plot
End of explanation
sns.jointplot(x=tips['total_bill'], y=tips['tip'])
Explanation: Plotting dist of 2 variables
Seaborn can very easily attach a histogram to a scatter plot to show the data distribution
End of explanation
jgrid = sns.jointplot(x='min_season', y='max_wind_merged', data=hurricanes_ipl,
             kind='reg', joint_kws={'line_kws':{'color':'green'}}, height=7, space=0.5)
j = jgrid.annotate(stats.pearsonr)
j = jgrid.ax_joint.set_title('Does hurricane wind speed increase over time?')
sns.jointplot(x=tips['total_bill'], y=tips['tip'], kind='hex')
sns.jointplot(x=tips['total_bill'], y=tips['tip'], kind='reg') #regression
Explanation: You can use the kind argument to change the scatter to hex, reg etc
Annotating correlation coefficient and p value if unavailable
<blockquote>
    <b>Note:</b> In recent versions, seaborn does not print the correlation coefficient and its p-value. To get this, use annotation as shown below:
</blockquote>
End of explanation
sns.pairplot(tips, hue='sex')
Explanation: Plotting dist of all variables
You can get a quick overview of the pariwise relationships between your columns using pairplot. Specifying a categorical variable to hue argument will shade it accordingly
End of explanation
sns.rugplot(tips['total_bill'])
Explanation: Plotting data frequency
Histograms provide data frequency. The distplot gives histograms. Another way to viz this is using rugplot. Rug plots are similar to the trading frequency bars we see in stock ticker time series datasets.
End of explanation
<END_TASK>