接上一篇。
这次画的图可以说才算比较专业的数据分析了,就是直方图和密度图了。
3.7.4 散点图和直方图
当表里的数据特别大,比如上万条,这时要在excel里画个图,那就会又慢又卡,甚至有些操作没法用,而这种情况在pandas里完全没有问题。
比如这样的一个数据表(图片只截取了一部分):
意思是每个id的地区,房子的情况,比如房价、卧室数量、各房间面积等等。
(例子就是个意思,主要理解对应的逻辑)
看着这么多数据一下不知道弄啥,那就得进行数据分析了,数据分析就是把看似杂乱无章的数据,找到一些组合来发现其中的逻辑,然后做成图。比如上面例子里,猜想一下可能房价和房子起居室的面积是个什么逻辑关系,可以先做个散点图:
#依旧先导入库
import pandas as pd
import matplotlib.pyplot as plt
#然后把数据文件读进来
homes = pd.read_excel("C:/tmp/1.xlsx")
#生成散点图
homes.plot.scatter(x='price', y='sqft_living')
plt.show()
画出来类似这样:
如果想知道不同价位的房子数量分布,那就画直方图。
price和sqft_living都是列名,可以homes[‘price’]这么调用,也可以直接 homes.price这么调用
homes.price.plot.hist()
默认出来的图可能不好看,所以加bins参数控制方块数量,会更细腻
homes.price.plot.hist(bins=100)
#还能优化, 控制X轴步长,还有标签旋转显示
plt.xticks(range(0,max(homes.price), 500), fontsize=8, rotation=90)
#最后显示
plt.show()
出来效果类似这样:
这样就能很清晰的看到哪些房价的房子多了。
3.7.5 密度图
还是用上面的数据表举例,看看起居室面积在整体中的分布比例,如图所示:
用pandas来画也简单:
#kde全称:kernel density estimation
homes.sqft_living.plot.kde()
plt.xtick(range(0, max(home.sqft_living), 500), fontsize=8, rotation=90)
Y轴此时就是概率,图就显示了X轴每个数值的概率是多少。
3.7.6 计算相关性
如果一开始也不知道哪些列有关系,怎么分析呢,不用慌,可以直接把每两列的相关性都算出来,再看其中的关系。
pandas里一下就算出来了,还是用上面的例子,计算列两两之间的相关系数:
print(homes.corr())
打印这个函数调用结果,就是一个表:
值越靠近1,表示这两列越相关(列自己和自己肯定是最相关的,值为1)
画图的主要部分就学完了,其他各种图表的画法可以举一反三,查接口就行。
后面接着学习pandas对表格的各种常用的操作