暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Python数据分析笔记#9.2.3 pandas绘制直方图和密度图

Yuan的学习笔记 2022-03-29
1804



「目录」

绘图和可视化

Plotting and Visualization

  • 9.1 => matplotlib

  • 9.2 => pandas和seaborn绘图

    -------> 线型图

    -------> 柱状图

    -------> 直方图和密度图

    -------> 散布图或点图

    -------> 分面网格(facet grid)和类型数据

直方图

直方图是一种可以对值频率进行离散化显示的柱状图。

数据被拆分到离散的、间隔均匀的桶(bin)中。

还是以原书里的tips.csv为例吧:

tips = pd.read_csv(r'C:\Users\geqiy\Desktop\tips.csv')
tips.head()

复制

假设我们想看一下消费额total_bill的分布,通过.plot.hist()方法可以生成一张消费总额的直方图,bins=50意味着消费额会被均等划分为50个区间:

plt.figure()
tips['total_bill'].plot.hist(bins=50)

复制


密度图

密度图是通过计算可能会产生观测数据的连续概率分布的估计而产生的。

使用.plot.density()可以生成一张密度图:

plt.figure()
tips['total_bill'].plot.density()

复制


seaborn绘制直方图和密度图

seaborn的distplot方法绘制直方图和密度图更加简单,还可以同时画出直方图和连续密度估计图:

sns.distplot(tips['total_bill', bins = 100, color = 'b')
复制

再来看一个双峰分布,这是由均值为0,标准差为1的200个样本点和均值为10,标准差为2的200个样本点组成的:

plt.figure()
comp1 = np.random.normal(0, 1, size=200)
comp2 = np.random.normal(10, 2, size=200)
values = pd.Series(np.concatenate([comp1, comp2]))

sns.distplot(values, bins=100, color='r')

复制

带标签的Beta分布

plt.figure()
dist1 = np.random.beta(0.2, 0.2, size=1000)
dist2 = np.random.beta(1.0, 1.0, size=1000)
sns.distplot(dist1, bins=20, color='b', label="alpha=0.2")
sns.distplot(dist2, bins=20, color='y', label="alpha=1.0")
plt.legend()

复制

若传入参数vertical=True,则被观测值就出现在了Y轴:

plt.figure()
dist1 = np.random.beta(0.4, 0.4, size=1000)
sns.distplot(dist1, bins=20, color='g', vertical=True, label="alpha=0.4")
plt.legend()

复制

这个函数还有好多可选参数,感兴趣的查一下官方文档吧

就这样吧,BYE-BYE!!


-END-


往期回顾


Pandas绘制柱状图




Stay hungry, stay foolish



文章转载自Yuan的学习笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论