?Python作为常用的数据分析工具,在可视化工具上,有很多优秀的第三方库如matplotlib、seaborn、plotly、cufflinks、boken、pyecharts等。由于matplotlib绘制的图表大多数时候确实不太美观,且使用较古怪,seaborn对matplotlib进行了进一步的封装,它是matplotlib的一个高级API,使用方便。(相当于cufflinks封装了plotly一样)在数据科学竞赛及数据分析领域,matplotlib+seaborn依然是主流的配置,尽管plotly等对其有所冲击(看个人喜好吧)。
运行pip install seaborn
进行安装,Seaborn交互性极强,建议使用jupyter notebook作为IDE。(pip install jupyter
安装,命令行jupyter notebook
启动)
import matplotlib.pyplot as plt import seaborn as sns df = sns.load_dataset('tips') df.head()
Seaborn的最大优点在于其提供了较为美观的各类图表,这也是为什么平时更多使用seaborn而不是matplotlib直接绘制的原因。
plt.figure(figsize=(12, 6)) sns.scatterplot(x='total_bill', y='tip', data=df, hue='day') # 散点图 # sns.stripplot(x='total_bill', y='tip', data=df, hue='day') # 分类散点图 # sns.swarmplot(x='total_bill', y='tip', data=df, hue='day') # 分簇散点图
plt.figure(figsize=(12, 6)) sns.lineplot(x='total_bill', y='tip', data=df, size=6)
plt.figure(figsize=(12, 6)) sns.barplot(x='size', y='tip', data=df)
plt.figure(figsize=(12, 6)) sns.countplot(df['day'])
plt.figure(figsize=(12, 6)) sns.distplot(df['tip'])
plt.figure(figsize=(8, 4)) sns.boxplot(data=df) plt.figure(figsize=(8, 4)) sns.boxenplot(data=df)
plt.figure(figsize=(12, 6)) sns.heatmap(df.corr())
针对数据可视化的不同目的,seaborn提供了relplot(),catplot(),displot(),lmplot()四大主要高级函数。
plt.figure(figsize=(12, 8)) sns.relplot(x='total_bill', y='tip', data=df, hue='day')
plt.figure(figsize=(12, 8)) sns.catplot(x='total_bill', y='day', data=df)
plt.figure(figsize=(12, 8)) sns.lmplot(x='total_bill', y='tip', data=df, height=6, fit_reg=True, hue='day')
Seaborn是基于matplotlib的封装,很多底层的定制仍然需要使用matplotlib定制,如label、lim等。
plt.figure(figsize=(12, 6)) sns.lineplot(x='total_bill', y='tip', data=df, size=6) plt.xlim(10, None)
plt.figure(figsize=(16, 6)) plt.subplot(1, 2, 1) sns.set_style('darkgrid') sns.heatmap(df.corr()) plt.subplot(1, 2, 2) sns.set_style('whitegrid') sns.heatmap(df.corr(), cmap='YlGnBu')
……