数据分析入门之数据可视化(散点图、折线图、饼图、柱状图、直方图)
程序员文章站
2022-07-14 11:02:23
...
文章目录
1、散点图
■散点图( scatter diagram) : 是以一个变量为横坐标,另一变量为纵坐标,利用散点(坐标点)的分布形态反映变量关系的一种图形。
- 散点图绘图函数:
plot(x,y,'.',color=(r,g,b))
plt.xlabel('x轴标签')
plt.ylabel('y轴标签')
plt.grid(True)
- plot参数说明:
●x、y,X轴和Y轴的序列
●’.’、 ‘o’ ,小点还是大点
●color ,散点图的颜色,可以用rgb定义,也可以用英文字母定义,(red,green,blue)~0到1,和其他语言0到255区分一下
1.1、导入数据
import matplotlib
from pandas import read_csv
import matplotlib.pyplot as plt
data = read_csv("F:\\数据分析\\数据分析3\\章节5数据可视化\\5\\5.1\\data.csv")
1.2、数据可视化
plt.plot(data['广告费用'],data['购买用户数'],'.')#把数据赋给(x,y)
1.3、设置参数
plt.plot(data['广告费用'],data['购买用户数'],'.')#把数据赋给(x,y)
plt.xlabel('广告费用')#设置x轴的名称
plt.ylabel('购买用户数')
plt.grid(True)#呈现网格线
plt.show()#可视化展示
1.4、自定义样式
# plt.plot(data['广告费用'],data['购买用户数'],'o',color='yellow')#把数据赋给(x,y),'o'表示圆圈,color显示颜色
# plt.plot(data['广告费用'],data['购买用户数'],'*',color=(1,0.6,0.2))#把数据赋给(x,y),'*'呈现*,rgb表示颜色
plt.plot(data['广告费用'],data['购买用户数'],'d',color='#aabbcc')#把数据赋给(x,y),'d'呈现菱形,rgb表示颜色
plt.xlabel('广告费用')#设置x轴的名称
plt.ylabel('购买用户数')
plt.grid(True)#呈现网格线
plt.show()#可视化展示
1.5、解决中文不能显示
•如果中文不能正常显示,可以加上
font = {'family': 'MicroSoft Yahei',
'weight': 'bold',
'size': 12}
matplotlib.rc("font", **font)
•如果中文和正负不能正常显示,可以加上
from matplotlib import rcParams
#支持中文
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
2、折线图
■折线图:也称趋势图,它是用直线段将各数据点连接起来而组成的图形,以折线方式显示数据的变化趋势。
-
折线图绘图函数:
•plot(x,y,style,color,linewidth);
•title(‘图的标题’) -
参数说明:
•style,画布的样式;
•color,画线的颜色
•linewidth,线的宽度 -
style样式:
参数 | 注释 |
---|---|
- | 连续的曲线 |
– | 连续的虚线 |
-. | 连续的用带点的曲线 |
: | 由点连成的曲线 |
. | 小点,散点图 |
o | 大点,散点图 |
, | 像素点(更小的点)的散点图 |
* | 五角星的点,散点图 |
2.1、导入数据
import pandas
from pandas import read_csv
import matplotlib.pyplot as plt
data = read_csv("F:\\数据分析\\数据分析3\\章节5数据可视化\\5\\5.2\\data.csv")
2.2、日期类型转换
对日期格式进行转化,变成日期类型,字符型不能直接使用
data['购买日期'] = pandas.to_datetime(data['日期'])
2.3、数据可视化
•顺滑的曲线
plt.plot(data['购买日期'],data['购买用户数'],'-')
•设置颜色
plt.plot(data['购买日期'],data['购买用户数'],'-',color='r')
•设置线条粗细
plt.plot(data['购买日期'],data['购买用户数'],'-',color='r',linewidth=6)
•增加表名
plt.plot(data['购买日期'],data['购买用户数'],'-.',color='r')
plt.title('手机销售分布图')
3、饼图
■饼图( Pie Graph) :又称圆形图。是一个划分为几个扇形的圆形统计图,它能够直观地反映个体与总体的比例关系。
- 饼图绘图函数:
- pie(x, labels, colors, explode, autopct);
- 参数说明:
参数 | 注释 |
---|---|
x | 进行绘图的序列 |
labels | 饼图的各部分标签 |
colors | 饼图的各部分颜色,使用RGB标颜色 |
explode | 需要突出的块状序列,0为原状,非0为突出 |
autopct | 饼图占比的显示格式, %.2f :保留两位小数 |
3.1、导入数据
import numpy,matplotlib
from pandas import read_csv
import matplotlib.pyplot as plt
data = read_csv("F:\\数据分析\\数据分析3\\章节5数据可视化\\5\\5.3\\data.csv")
3.2、分组统计数量
- 先查找有几个通信品牌,再找它对应的号码有多少个
gb = data.groupby(
by = ['通信品牌'],
as_index=False
)['号码'].agg({
'用户数':numpy.size#计数
})
3.2、饼图展示
plt.pie(gb['用户数'],labels=gb['通信品牌'],autopct='%.2f%%')#%.2f表示保留两位小数,%%表示%
4、柱状图
■柱形图:是一种以长方形的单位长度,根据数据大小绘制的统计图,用来比较两个或以上的数据(时间或类别)。
- 柱形图绘图函数:
- bar(left,height,width,color) #竖向柱形图
- barh(bottom,width,height,color) #横向柱形图
- 参数说明:
参数 | 注释 |
---|---|
left | x轴的位置序列, 一般采用arange函数产生一个序列 |
height | y轴的数值序列,也就是柱形图的高度,一般就是我们需要 展示的数据 |
width | 柱形图的宽度, 一般设置为1即可 |
color | 柱形图填充颜色 |
4.1、导入数据
import numpy,matplotlib
from pandas import read_csv
import matplotlib.pyplot as plt
data = read_csv("F:\\数据分析\\数据分析3\\章节5数据可视化\\5\\5.4\\data.csv")
4.2、分组求和
gb = data.groupby(
by = ['手机品牌'],
as_index=False
)['月消费(元)'].agg({
'月消费':numpy.sum #求和
})
4.3、建立X轴的序列
index = numpy.arange(gb['月消费'].size)
4.4、数据可视化
- 竖向柱形图
plt.bar(index,gb['月消费'],1,color='G')
- 移动柱形图(-向右;+向左,往原点靠拢)
plt.bar(index,gb['月消费'],1,color='G')
plt.xticks(index + 1/2,gb.index)
- 添加横轴标签
plt.bar(index,gb['月消费'],1,color='G')
plt.xticks(index,gb.手机品牌)#加上X标签
- 横向柱形图
plt.barh(index,gb['月消费'],1,color='r')
plt.yticks(index,gb.手机品牌)
4.5、三维柱状图
import numpy,matplotlib
from pandas import read_csv
from matplotlib import pyplot as plt
data = read_csv("F:\\数据分析\\数据分析3\\章节5数据可视化\\5\\5.4\\data.csv")
d1 = '手机品牌'
d2 = '通信品牌'
v = '月消费'
gb = data.groupby(by = [d1,d2])['月消费(元)'].agg({v:numpy.sum})#求对用的月消费之和
d1_size = gb.index.levels[0].size
d2_size = gb.index.levels[1].size
index = numpy.arange(d1_size)
colors = ['r','g','b']#定义颜色
for i in range(0,d2_size):#遍历每一种颜色的数据
print (i)
subgb = gb[v][gb.index.labels[1] == i]
bar = plt.bar(index*d2_size + i,subgb,color=colors[i])
index1 = numpy.arange(d1_size)*d2_size
plt.xticks(index1 + 3/2,gb.index.levels[0])
plt.title('手机品牌对应通信品牌月消费之和')
plt.xlabel('手机品牌')
plt.ylabel('月消费之和')
plt.legend(gb.index.levels[1])#显示图列
plt.show()
4.6、堆叠柱状图
import numpy,matplotlib
from pandas import read_csv
from matplotlib import pyplot as plt
data = read_csv("F:\\数据分析\\数据分析3\\章节5数据可视化\\5\\5.3\\data.csv")
d1 = '手机品牌'
d2 = '通信品牌'
v = '月消费'
gb = data.groupby(by = [d1,d2])['月消费(元)'].agg({v:numpy.sum})#求对用的月消费之和
d1_size = gb.index.levels[0].size
d2_size = gb.index.levels[1].size
index = numpy.arange(d1_size)
colors = ['r','g','b']#定义颜色
bsum = index*0.0
for i in range(0,d2_size):#遍历每一种颜色的数据
print(i)
subgb = gb[v][gb.index.labels[1] == i]
bar = plt.bar(index,subgb,color=colors[i],bottom=bsum)
bsum = subgb + 1
plt.xticks(index,gb.index.levels[0])
plt.title('手机品牌对应通信品牌月消费之和')
plt.xlabel('手机品牌')
plt.ylabel('月消费之和')
plt.legend(gb.index.levels[1])#显示图列
plt.show()
5、直方图
■直方图(Histogram) :是用一系列等宽不等高的长方形来绘制,宽度表示数据范围的间隔,高度表示在给定间隔内数据出现的频数,变化的高度形态表示数据的分布情况。
- 直方图绘图函数:
- hist(x.color,bins,cumulative=False)
- 参数说明:
参数 | 注释 |
---|---|
x | 需要进行绘制的向量 |
color | 直方图的填充颜色 |
bins | 设置直方图的分组个数 |
cumulative | 设置是否累计计数,默认是False |
5.1、导入数据
import matplotlib
from pandas import read_csv
from matplotlib import pyplot as plt
data = read_csv("F:\\数据分析\\数据分析3\\章节5数据可视化\\5\\5.4\\data.csv")
5.2、绘制直方图
plt.hist(data['手机品牌'])
5.3、设置分组数
plt.hist(data['手机品牌'],bins=20)
5.4、累计分布
plt.hist(data['手机品牌'],bins=20,cumulative=True)
上一篇: 爬虫学习记录-多线程爬取图片