导入环境
import numpy as np
import pandas as pd
from numpy.random import randn
import matplotlib.pyplot as plt
若是在jupyter notebook编译,需要额外执行下列语句
%matplotlib notebook
该语句在Jupyter Notebook或JupyterLab中使用的IPython魔法命令(magic command),它用于配置matplotlib库以在notebook环境中交互式地显示图形。这个命令启用了matplotlib的Jupyter Widgets后端,允许你直接在notebook中交互式地缩放、平移和保存图表。
绘制折线图
s=pd.Series(randn(10).cumsum(),index=np.arange(0,100,10))
s.plot()
多组数据
df = pd.DataFrame(randn(10,4).cumsum(0),columns=['A','B','C','D'],index=np.arange(0,100,10))
df.plot()
绘制柱状图
fig,axes = plt.subplots(2,1)
data = pd.Series(abs(randn(16)),index=list('abcdefghijklmnop'))
data.plot.bar(ax=axes[0],color='k',alpha=0.7)
data.plot.barh(ax=axes[1],color='k',alpha=0.7)
axes[0] 与axes[1]是subplot两个对象,alpha为透明度 ,'k'为black
df=pd.DataFrame(abs(randn(6,4)),index=['one','two','three','four','five','six'],columns=pd.Index(['A','B','C','D'],name='Example'))
df数据见下图
绘制带有子系的柱状图
df.plot.bar()
绘制堆积柱状图
df.plot.barh(stacked=True,alpha=0.5)
实例:派对规模与日期的数据统计
导入数据,数据放在博客上了,直接下载,注意路径
#导入数据
tips=pd.read_csv('examples/tips.csv')
大致浏览一下数据
提取day与size列
party_counts = pd.crosstab(tips['day'],tips['size'])
party_count数据如下图所示
对应数值除以标准值
party_pcts=party_counts.div(party_counts.sum(1),axis=0)
结果如下图所示
生成柱状图
party_pcts.plot.bar()
由图表可以明显可以得出,在每天2人派对数量最多
导入seaborn模块
import seaborn as sns
计算频率
tips['tip_pct'] = tips['tip']/(tips['total_bill']-tips['tip'])
tips.head()
tips结果见下图
使用seaborn绘制柱形图
sns.barplot(x='tip_pct',y='day',data=tips,orient='h')
seaborn.barplot有一格hue选项,该选项通过一个额外的分类数值将数据分离出来,如下图所示
sns.barplot(x='tip_pct',y='day',hue='time',data=tips,orient='h')
绘制直方图
tips['tip_pct'].plot.hist(bins=50)
小费百分比密度图(KDE)
tips['tip_pct'].plot.density()
同时绘制直方图与连续密度估计
散点图
散点图用于检验两个一维数据之间的关系,数据集已经传入该博客
macro = pd.read_csv("examples/macrodata.csv")
data=macro[['cpi','m1','tbilrate','unemp']]
trans_data = np.log(data).diff().dropna()
trans_data = np.log(data).diff().dropna()解释
对原始数据data取自然对数,计算其自然对数的一阶差分,然后删除由于差分操作而产生的NaN值
使用seaborn的regplot方法绘制散点图
sns.regplot('m1','unemp',data=trans_data)
plt.title('Changes in log %s verus log %s' % ('m1','unemp'))
使用该方法绘制散点图,并你和出一条线型回归线
散点矩阵图
绘制散点矩阵图,正对角线取得是自己与自己的,在这里取该变量的直方图或者密度图
sns.pairplot(trans_data,diag_kind='kde',plot_kws={'alpha':0.2})
分面网格与分类数据
对是否吸烟进行面板分类
sns.factorplot(x='day',y='tip_pct',hue='time',col='smoker',kind='bar',data=tips[tips.tip_pct<1])
按标签划分数据,如按时间,是否吸烟来划分小费百分比
两个分类面板
sns.factorplot(x='day',y='tip_pct',row='time',col='smoker',kind='bar',data=tips[tips.tip_pct<1])
绘制箱形图
sns.factorplot(x='day',y='tip_pct',kind='box',data=tips[tips.tip_pct<0.5])