Chapter1数据分析

目录

一.数据分析的介绍

二.jupyter和conda的使用

三.matplotlib的基础绘图

四.matplotlib的基础绘图和调整x轴的刻度

五.matplotlib设置显示中文

六.matplotlib添加描述信息

七.matplotlib绘制网格和标注多条折线图

一.数据分析的介绍

1.学习数据分析的原因

(1).岗位需求

(2).python数据科学的基础

(3).机器学习课程的基础

2.数据分析的定义

数据分析是用适当的方法对收集的大量数据进行分析,帮助人们作出判断,以便采取适当的行动。

3.数据分析的流程

提出问题\rightarrow准备数据(数据清洗)\rightarrow分析数据\rightarrow获得结论\rightarrow(成果可视化)

二.jupyter和conda的使用

1.conda环境安装

创建环境:conda create

切换环境:windows:activate python3

                linux/macos:source activate python3

2.jupyter notebook:一款编程/文档/笔记/展示软件

三.matplotlib的基础绘图

1.学习matplotlib的原因

(1)使数据可视化,更直观的呈现

(2)使数据更加客观、更具说服力

2.matplotlib的定义

matplotlib:主要用来实现图表的可视化,仿照matlab,是python的绘图库

3.matplotlib基本要点

asix轴,指的是x或y轴。

 #导入pyplot,注意文件名不可写成matplotlib
from matplotlib import pyplot as plt  
x=range(2,26,2)
y=[15,13,14.5,17,20,25,26,26,24,22,18,15]
#绘图
plt.plot(x,y)
#展示图形
plt.show()

四.matplotlib的基础绘图和调整x轴的刻度

1.设置图片大小:fig=plt.figure(figsize=(*,*),dpi=*) (*为设置的具体数字)

其中,figsize:图片大小,长和宽,dpi:每英寸上面点的个数,代表清晰程度

2.保存图片:plt.savefig('./t1.png') 保存到当前目录

ps:保存为svg这种矢量图格式,放大不会有锯齿

3.调整x轴刻度:plt.xticks(range(2,50,a)) (a为每个刻度之间的距离,必须为整数)

ps:如果想要设置更小的步长(即更密集)

_xtick_labels=[i/2 for i in range(4,49)]

plt.xticks(_xtick_labels)  or plt.xticks(_xtick_labels[::3])

同理y轴的刻度,但是range()里面就要取min(y)和max(y)+1

#coding=utf-8
from matplotlib import pyplot as plt

#设置图片大小
#figsize:图片大小,长和宽,dpi:每英寸上面点的个数,代表清晰程度
'''fig=plt.figure(figsize=(20,8),dpi=80)
x=range(2,26,2)
y=[15,13,14.5,17,20,25,26,26,24,22,18,15]'''

#绘图
plt.plot(x,y)

#设置x轴的刻度
_xtick_labels=[i/2 for i in range(4,49)]  #变得更密集
plt.xticks(_xtick_labels[::3])

#设置y轴的刻度
plt.yticks(range(min(y),max(y)+1))

#图片的保存
plt.savefig('./t1.png')  #ps:保存为svg这种矢量图格式,放大不会有锯齿

#展示图形
plt.show()

五.matplotlib设置显示中文

matplotlib默认不支持中文字符,因为默认的英文字体无法显示汉字

fc-list  查看支持的字体

fc-list :lang=zh  查看支持的中文(冒号前面有空格)

修改matplotlib默认字体:

(1)通过matplotlib.rc可以修改(windows/linux)

ps:以下代码用三个单引号注释是为了方便大家看设置字体的方法,实际放到python中运行需要去掉注释符。

import random
from matplotlib import pyplot as plt

import matplotlib
matplotlib.rc("font",family='SimHei')  #设置字体

'''x=range(0,120)
y=[random.randint(20,35) for i in range(120)]

plt.figure(figsize=(20,8),dpi=80)  #设置大小

plt.plot(x,y)

_x=list(x)
_xtick_labels=['10点{}分'.format(i) for i in range(60)]
_xtick_labels+=['11点{}分'.format(i-60) for i in range(60,120)]

#_x取了步长,所以_xtick_labels也要取步长,即数字和字符串一一对应,rotation指的是旋转的度数
plt.xticks(_x[::3],_xtick_labels[::3],rotation=45)

#添加描述信息
plt.xlabel('时间')
plt.ylabel('温度  单位(℃)')
plt.title('10点-12点每分钟的气温变化情况')
plt.show()'''

ps:可通过以下代码来查询系统的所有字体

from matplotlib.font_manager import FontManager
import subprocess

mpl_fonts = set(f.name for f in FontManager().ttflist)

print('all font list get from matplotlib.font_manager:')
for f in sorted(mpl_fonts):
    print('\t' + f)

(2)通过matplotlib下的font_manager可以解决(windows/linux/mac)

ps:以下代码用三个单引号注释是为了方便大家看设置字体的方法,实际放到python中运行需要去掉注释符。

import random
from matplotlib import pyplot as plt
from matplotlib import font_manager

my_font=font_manager.FontProperties(fname='系统的字体路径') #系统的字体路径这块我的电脑不太好使,根据个人电脑而定

'''x=range(0,120)
y=[random.randint(20,35) for i in range(120)]

plt.figure(figsize=(20,8),dpi=80)  #设置大小

plt.plot(x,y)

#调整x轴的刻度
_x=list(x)[::10]
_xtick_labels=['hello,{}'.format(i) for i in _x]  #将字符串与数字对应

_x=list(x)
_xtick_labels=['10点{}分'.format(i) for i in range(60)]
_xtick_labels+=['11点{}分'.format(i-60) for i in range(60,120)]'''

#_x取了步长,所以_xtick_labels也要取步长,即数字和字符串一一对应,rotation指的是旋转的度数
plt.xticks(_x[::3],_xtick_labels[::3],rotation=45,fontproperties=my_font)

#添加描述信息
plt.xlabel('时间',fontproperties=my_font)
plt.ylabel('温度  单位(℃)',fontproperties=my_font)
plt.title('10点-12点每分钟的气温变化情况',fontproperties=my_font)
plt.show()

(3)通过plt.rcParams手动设置

ps:以下代码用三个单引号注释是为了方便大家看设置字体的方法,实际放到python中运行需要去掉注释符。

import random
from matplotlib import pyplot as plt

'''x=range(0,120)
y=[random.randint(20,35) for i in range(120)]

plt.figure(figsize=(20,8),dpi=80)  #设置大小

plt.plot(x,y)

plt.rcParams['font.sans-serif']=['SimHei'] #显示中文标签
plt.rcParams['axes.unicode_minus']=False   #这两行需要手动设置

#调整x轴的刻度
_x=list(x)[::10]
_xtick_labels=['hello,{}'.format(i) for i in _x]  #将字符串与数字对应'''


'''_x=list(x)
_xtick_labels=['10点{}分'.format(i) for i in range(60)]
_xtick_labels+=['11点{}分'.format(i-60) for i in range(60,120)]

#_x取了步长,所以_xtick_labels也要取步长,即数字和字符串一一对应,rotation指的是旋转的度数
plt.xticks(_x[::3],_xtick_labels[::3],rotation=45)

#添加描述信息(如果是第一种和第三种方法,在添加描述信息时不需要再添加代码)
plt.xlabel('时间')
plt.ylabel('温度  单位(℃)')
plt.title('10点-12点每分钟的气温变化情况')
plt.show()'''

六.matplotlib添加描述信息

通过.xlabel添加横坐标信息,.ylabel添加纵坐标信息,.title()添加标题信息,代码见上“五.matplotlib设置显示中文”。

七.matplotlib绘制网格和标注多条折线图

(1)plt.grid(alpha=0.1) ,其中alpha表示网格线的透明度

(2)先使用label,再使用plt.legend()来标注多条折线图,通过loc来设置图例的位置,如: plt.legend(loc='upper left')设置。

 ps:通过color''来设置线条颜色,通过linestyle来设置线条风格,通过linewidth来设置线条宽度。

小练习:统计小明和小宋从11岁到30岁每年交的女(男)朋友的数量情况。y轴表示个数,x轴表示岁数,如11岁,12岁等。

import matplotlib
from matplotlib import pyplot as plt
matplotlib.rc("font",family='SimHei')

'''x=range(11,31)
y_1=[1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
y_2=[1,0,3,1,2,2,3,3,2,1,2,1,1,1,1,1,1,1,1,1]

plt.figure(figsize=(20,8),dpi=80)'''

plt.plot(x,y_1,label='小明',color='orange',linestyle=':',linewidth=5) 
plt.plot(x,y_2,label='小宋',color='cyan',linestyle='-.',linewidth=5)

'''_x=list(x)
_xlabels=['{}岁'.format(i) for i in range(11,31)]

plt.xticks(_x,_xlabels,rotation=45)'''

#添加网格线
plt.grid(alpha=0.5,linestyle=':') #alpha为网格线的透明度

'''plt.xlabel('岁数')
plt.ylabel('个数')
plt.title('从11岁到30岁每年交的女(男)朋友的数量')'''

#添加图例
plt.legend(loc='upper left')  #图例在左上角

#展示
plt.show()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值