对比常用统计图
折线图:以折线的上升或者下降来表示统计数量的增减变化的统计图
特点:能够显示数据的变化趋势,反映事物的变化情况。
直方图:由一系列高度不等的纵向条纹或线段表示数据分布的情况
(一般用横轴表示数据范围,纵轴表示分布情况)
特点:绘制连续性的数据,展示一组或者多组数据的分布情况(统计)
条形图:排列在工作表中的行或列中的数据可以绘制到条形图中
特点:绘制离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别(统计)
散点图:用两组数据构成多个坐标点,考察坐标点的分布,判断两个变量之间是否存在某种关联 或总结坐标点的分布模式
特点:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)
作业:
1.假设通过爬虫你获取到了北京2016年3、10月份每天白天的最高气温(分别位于列表a,b)那么此时如何寻找气温随时间(天)变化的某种规律?
a = [11, 17, 16, 11, 12, 11, 12, 6, 6, 7, 8, 9, 12, 15, 14, 17, 18, 21, 16, 17, 20, 14, 15, 15, 15, 19, 21, 22, 22, 22, 23] b = [26, 26, 28, 19, 21, 17, 16, 19, 18, 20, 20, 19, 22, 23, 17, 20, 21, 20, 22, 15, 11, 15, 5, 13, 17, 10, 11, 13, 12, 13, 6]
2.假设你知道了列表a中电影分别在2017-09-14 、 09-15 、 09-16 三天的票房,为了展示列表中电影本身的票房以及同其他电影的数据对比情况2,应该如何更加直管的来呈现该数据。
a = ["蜘蛛侠", "战狼2", "猩球崛起3"]
b_16 = [15746,312,4497,319]
b_15 = [12357,156,2045,168]
c_14 = [2358,399,32358,362]
3.假设你获取了5部电影的时长(列表a中),希望统计出这些电影市场的分布状态(比如时长为100分钟到120分钟电影的数量,出现的频率)等信息,你应该如何呈现这些数据?
a=[131, 98, 125, 165, 123]
散点图:
from matplotlib import pyplot as plt
from matplotlib import font_manager
from matplotlib import font_manager
#中文字体
my_foot = font_manager.FontProperties(fname='C:\Windows\Fonts\simfang.ttf')
x_3 = range(1, 32)
x_10 = range(41, 72)
y_3 = [11, 17, 16, 11, 12, 11, 12, 6, 6, 7, 8, 9, 12, 15, 14, 17, 18, 21, 16, 17, 20, 14, 15, 15, 15, 19, 21, 22, 22, 22, 23]
y_10 = [26, 26, 28, 19, 21, 17, 16, 19, 18, 20, 20, 19, 22, 23, 17, 20, 21, 20, 22, 15, 11, 15, 5, 13, 17, 10, 11, 13, 12, 13, 6]
# 散点图 (设置大小)
plt.figure(figsize=(15,8), dpi=80)
plt.scatter(x_3, y_3, label="3月份")
plt.scatter(x_10, y_10, label="10月份")
# # 调整x轴的刻度
_x = list(x_3) + list(x_10)
_xtick_labels = ["3月{}日".format(i) for i in x_3]
_xtick_labels += ["10月{}日".format(i-40) for i in x_10]
plt.xticks(_x[::3], _xtick_labels[::3], fontproperties=my_foot, rotation=45)
# 添加图例
plt.legend(loc='upper left', prop=my_foot)
# 添加描述信息
plt.xlabel("时间", fontproperties=my_foot)
plt.ylabel("温度", fontproperties=my_foot)
plt.title("标题", fontproperties=my_foot)
# 展示
plt.show()
条形图:
# 绘制竖形条形图
from matplotlib import pyplot as plt
from matplotlib import font_manager
my_foot = font_manager.FontProperties(fname='C:\Windows\Fonts\simfang.ttf')
a = ["战狼2", "速度与激情8", "功夫瑜伽", "西游伏妖篇"]
b = [56.01, 26.94, 17.53, 16.49]
# 设置图形大小
plt.figure(figsize=(15, 8), dpi=80)
# 绘制条形图
plt.bar(range(len(a)), b, width=0.3)
# 添加图例
plt.legend(loc='upper left', prop=my_foot)
# 添加描述信息
plt.xlabel("电影", fontproperties=my_foot)
plt.ylabel("评分", fontproperties=my_foot)
plt.title("电影评分数据", fontproperties=my_foot)
# 设置字符串到x轴
plt.xticks(range(len(a)), a, fontproperties=my_foot, rotation=45)
# 图片保存
plt.savefig('./dianying.png')
plt.show()
直方图
from matplotlib import pyplot as plt
from matplotlib import font_manager
a = [131, 98, 125, 165, 110]
# 计算组数
d = 5 # 组距
num_bins = (max(a)-min(a))//d
# 设置图片的大小
plt.figure(figsize=(15, 8), dpi=80)
plt.hist(a, num_bins, density=True)
# 设置x轴的刻度
plt.xticks(range(min(a), max(a)+d, d))
plt.grid()
plt.show()
注·:横行条形图只需修改一下内容
# 绘制条形图
plt.barh(range(len(a)), b, height=0.3)