数据分析篇(二)

  • 2019 年 10 月 6 日
  • 筆記

实例:

# 条形图

from matplotlib import pyplot as plt

from matplotlib import font_manager

# 设置中文字体

my_font = font_manager.FontProperties(fname = "C:/Windows/Fonts/simsun.ttc",size=14)

# 进行电影票房统计,数据来源:58921.com

a = ['战狼二','红海行动','美人鱼','唐人街探案','我不是药神']

b = [56.39,36.22,33.9,33.71,30.75]

# 设置图形大小

plt.figure(figsize=(12,10),dpi=80)

# 绘制条形图用bar, width表示宽度

plt.bar(range(len(a)),b,width=0.4)

# 调整x轴为汉字

plt.xticks(range(len(a)),a,fontProperties = my_font)

# 添加描述信息

plt.xlabel("电影名称",fontProperties = my_font)

plt.ylabel("票房(亿)",fontProperties = my_font)

plt.title("电影票房",fontProperties = my_font)

plt.show()

效果图:

# 横向条形图用barh绘制,我们只需要y轴显示电影名字

from matplotlib import pyplot as plt

from matplotlib import font_manager

# 设置中文字体

my_font = font_manager.FontProperties(fname = "C:/Windows/Fonts/simsun.ttc",size=14)

# 进行电影票房统计,数据来源:58921.com

a = ['战狼二','红海行动','美人鱼','唐人街探案','我不是药神']

b = [56.39,36.22,33.9,33.71,30.75]

# 设置图形大小

plt.figure(figsize=(12,10),dpi=80)

# 绘制横向条形图用barh,这里不用width用height

plt.barh(range(len(a)),b,height=0.4)

# 调整y轴为汉字

plt.yticks(range(len(a)),a,fontProperties = my_font)

# 添加描述信息

plt.xlabel("票房(亿)",fontProperties = my_font)

plt.ylabel("电影名称",fontProperties = my_font)

plt.title("电影票房",fontProperties = my_font)

plt.show()

效果图:

多条条形图

实例:

# 多条条形图

from matplotlib import pyplot as plt

from matplotlib import font_manager

# 设置中文字体

my_font = font_manager.FontProperties(fname = "C:/Windows/Fonts/simsun.ttc",size=14)

# a表示电影名称

a = ['海王','龙猫','印度合伙人','网络迷踪','无名之辈']

# 2018-12-17日依次票房

d_17 = [4135,791,539,238,180]

# 2018-12-18日依次票房

d_18 = [3655,673,435,182,148]

# 2018-12-19日依次票房

d_19 = [3303,611,469,181,160]

# 设置图形大小

plt.figure(figsize=(12,10),dpi=80)

# 绘制x轴

# 每天的往后移动0.3,也就是width的值

x_17 = list(range(len(a)))

x_18 = [i+0.3 for i in x_17]

x_19 = [i+0.3 for i in x_18]

# 绘制d_17图像

plt.bar(x_17,d_17,width=0.3,label='2018-12-17日')

# 绘制d_18图像

plt.bar(x_18,d_18,width=0.3,label='2018-12-18日')

# 绘制d_19图像

plt.bar(x_19,d_19,width=0.3,label='2018-12-18日')

# 右上角显示中文分类

plt.legend(prop = my_font)

# 在中间显示电影名称

plt.xticks(x_18,a,fontProperties = my_font)

plt.xlabel("电影名称",fontProperties = my_font)

plt.ylabel("票房(万)",fontProperties = my_font)

plt.title("电影票房",fontProperties = my_font)

plt.show()

效果图:

直方图

实例:

直方图的样子和条形图差不多,直方图常用于统计某个时间段的频率。

实例:

# 用直方图来有统计某个区间出现的次数

import random

from matplotlib import pyplot as plt

from matplotlib import font_manager

# 设置中文字体

my_font = font_manager.FontProperties(fname = "C:/Windows/Fonts/simsun.ttc",size=14)

# a 生成300个1-100的随机数

a = [random.randint(1,100) for i in range(300)]

# 设置图形大小

plt.figure(figsize=(12,10),dpi=80)

# 绘制直方图用hish函数

# 第一个参数就是我们的数字列表

# 第二个参数表示分成多少组

# 组数在数学中计算是(最大值-最小值)/组距(自己设置)

# 这里我们设置组距为3

bin_width = 3

# 计算我们需要分成多少组

num_bins = int((max(a)-min(a))//bin_width)

plt.hist(a,num_bins)

# 设置x轴刻度,步长为我们的组距

plt.xticks(range(min(a),max(a)+bin_width,bin_width))

# 给个表格,方面我们看清数据,透明度为0.5

plt.grid(alpha=0.5)

plt.show()

效果图:

matplotlib 还可以画出其他的图形,这里就不说了,大同小异。