简介
当完成数据处理和数据分析之后,得到了数据分析的结果,但是这样的一堆表并不能让人轻松的观察和理解数据分析的结果,所以最后我们就需要数据可视化将分析结果清晰的呈现出来。
数据可视化:也称为数据展示,它用于研究如何利用图形,展现数据中隐含的信息,发掘数据中所包含的规律。通俗的说就是把枯燥的数据变为生动清晰的图象。
它的主要作用是:表达形象化,重点突出性,体现专业性。
今天主要来讲讲基本的散点图,矩阵图,折线图,饼图,柱形图,条形图。
1.散点图
散点图是以一个变量为横坐标,另一个变量为纵坐标。利用散点在坐标系中的分布反应变量之间关系的一种图形。
它的特点就是能清晰直观的看到每个数据在坐标系中的位置,从而对建立它的模型起到帮助。
首先看看数据内容
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
data=pd.read_csv('D:/散点图.csv',encoding='utf8')
#最基本的绘制散点图
#plt.scatter(data['广告费用'],data['购买用户数'])
font=matplotlib.font_manager.FontProperties(size=10)
#对散点图调整美化
#设置颜色
maincolor=(91/225,155/255,213/255,1)
#设置坐标轴和颜色
plt.xlabel('广告费用',color=maincolor)
plt.ylabel('购买用户数',color=maincolor)
plt.xticks(color=maincolor)
plt.yticks(color=maincolor)
plt.scatter(data['广告费用'],data['购买用户数'])
#对商品是否促销进行分类,绘制散点图
plt.figure()
#粉色作为促销点的颜色,蓝色作为不促销点的颜色
#将渠道数多的数据点变大,渠道数少的数据点变小
pink=(255/255,0/255,102/255,1)
blue=(91/255,155/255,213/255,1)
#绘制新的散点图
plt.scatter(data[data['促销']=='是']['广告费用'],
data[data['促销']=='是']['购买用户数'],
c=pink,marker='o',s=data[data['促销']=='是']['渠道数']*40)
plt.scatter(data[data['促销']=='否']['广告费用'],
data[data['促销']=='否']['购买用户数'],
c=blue,marker='x',s=data[data['促销']=='否']['渠道数']*40)
#设置坐标轴标签样式和颜色
plt.xlabel('广告费用',color=maincolor,fontproperties=font)
plt.ylabel('购买用户数',color=maincolor,fontproperties=font)
plt.xticks(color=maincolor,fontproperties=font)
plt.yticks(color=maincolor,fontproperties=font)
#增加图例
legend=plt.legend(labels=['促销','不促销'],prop=font)
当散点图用作查看数据之间的关系时可以粗略画,只要能展示出相关关系就好。但是作为展示就要尽可能的将所有的数据信息在图上想办法展示出来,可以用不同颜色,不同大小,不同形状等等来区分。
2.矩阵图
因为昨天我们做矩阵分析的时候就已经画出了矩阵图,所以这里就不太多讲了,主要就是画出矩阵边框,以平均值画出分界线,最后添加上象限标记以及数据对应的标签。
3.折线图
它是以直线将各个数据点连接起来而形成的图形,用折线的方式显示数据变化趋势。
先来看看需要处理的数据
import pandas as pd
import matplotlib
from matplotlib import pyplot as plt
data=pd.read_csv('D:/折线图.csv',encoding='utf8')
#日期格式转换
data['reg_date']=pd.to_datetime(data['reg_date'])
#按照注册日期列进行分组,按照id列进行计数统计
ga=data.groupby(by=['reg_date'],as_index=False)['id'].agg('count')
#对数据框列重命名
ga.columns=['注册日期','注册用户数']
#开始绘制折线图
maincolor=(91/255,155/255,213/255,1)
font=matplotlib.font_manager.FontProperties(size=10)
labelfont=matplotlib.font_manager.FontProperties(size=15)
plt.ylim(0,500)
plt.title('注册日期与注册用户数折线图',color=maincolor,fontproperties=labelfont)
plt.xlabel('注册日期',color=maincolor,fontproperties=labelfont)
plt.ylabel('注册用户数',color=maincolor,fontproperties=labelfont)
plt.xticks(color=maincolor,fontproperties=font)
plt.yticks(color=maincolor,fontproperties=font)
#绘制折线图
plt.plot(ga['注册日期'],ga['注册用户数'],'-',color=maincolor)
4.饼图
它主要是用于展现不同类别在整体中所占的比例,能够直观的反映个体与整体的比例关系
import pandas as pd
import matplotlib
from matplotlib import pyplot as plt
data=pd.read_csv('D:/饼图.csv',encoding='utf8')
ga=data.groupby(by=['gender'])['id'].agg('count')
femalecolor=(91/255,155/255,213/255,0.5)
malecolor=(91/255,155/255,213/255,1)
font=matplotlib.font_manager.FontProperties(size=25)
#设置为圆形饼图
plt.axis('equal')
#绘制饼图
plt.pie(ga,labels=['女','男'],colors=[femalecolor,malecolor],autopct='%.1f%%',textprops={'fontproperties':font})
5.柱形图
也叫柱状图,以长方形的单位长度根据数据的大小绘制的统计图形。
import pandas as pd
import matplotlib
from matplotlib import pyplot as plt
data=pd.read_csv('D:/柱形图.csv',encoding='utf8')
result=data.groupby(by=['手机品牌'],as_index=False)['月消费(元)'].sum()
plt.figure()
maincolor=(91/255,155/255,213/255,1)
font=matplotlib.font_manager.FontProperties(size=10)
index=[1,2,3,4,5,6,7,8]
#对数据排序
sort=result.sort_values(by='月消费(元)',ascending=False)
#绘制柱形图
plt.bar(index,sort['月消费(元)'],color=maincolor)
plt.xticks(index,sort.手机品牌,fontproperties=font)
plt.ylabel('月消费(元)',color=maincolor,fontproperties=font)
6.条形图
条形图其实就是横向的柱形图,将bar函数换成barh函数,xticks换成yticks即可
总结
数据分析大概就这么多内容,从数据采集,数据处理,数据分析到今天的数据可视化,基本上所有重要的内容我全部都写了而且也有相应的代码让大家更好的理解。掌握好数据分析能让我们在得到现有的数据之后更好的发掘数据的价值,从繁多的数据中找到事物的发展规律,以便于我们更好的规划未来。关于数据采集这一部分呢,我打算之后有时间讲讲爬虫和比较高级的scrapy框架的使用,接下来我就去忙flask去啦。