Python数据分析一课一得

数据分析是利用数学、统计学理论与实践相结合的科学统计分析方法,对Excel数据、数据库中的数据、收集的大量数据、网页抓取的数据进行分析,从中提取有价值的信息并形成结论进行展示的过程。

一、Python数据分析环境配置

1.了解Anaconda

Anaconda

1.一个Python的集成版本。
2.预装了大量常用数据分析类工具库。
3.完全开源和免费。
4.对全平台和几乎所有Python版本支持。
官网: https://www.anaconda.com/

安装流程

安装包–“next”–“I agree”-“All Users(requires admin privileges)”–选择安装路径-“Install”-"finish”。
系统会将Anaconda3的安装路径配置到系统环境变量中

在这里插入图片描述

2.Jupyter Notebook简介

1.一个Anaconda自带的轻量级Python编辑器
2.可以在浏览器中打开
3.有关观的注释、文字和代码完美结合
4.可以分步运行代码
5.善于进行数据分析的结果展示和分析

在这里插入图片描述

二、excel和python处理结构化数据的差异

1.Pandas库导入方法和主要功能 :

导入方法:import pandas as pd(一般将pandas库重命名为pd方便之后的调用)。
Pandas库主要用来处理结构化数据;结构化数据可以理解为表格化数据。
Pandas库可以用来做数据处理和数据分析。

2.NumPy提供了两种基本的对象:

ndarray(N-dimensional Array)和ufunc(Universal Function)。
ndarray是存储单一数据类型的多维数组,而ufunc则是能够对数进行处理的函数。
在NumPy中,维度称为轴。
示例 :

1|import pandas as pd
2|import numpy as np

在这里插入图片描述

3.读取excel文件数据(以csv文件为例)

excel文件是微软办公软件excel使用的文件格式,用于存储的结构化数据。
Python中读取excel文件的方法:调用pandas库的read_excel函数

CSV文件是一种逗号分隔的文本文件,可以用excel和记事本打开
Python中读取CSV格式文件的方法:调用pandas库的read_csv函数
示例 :

1|data=pd.read_csv('C:/Apps/某地区房屋销售数据.csv',encoding='gbk')

在这里插入图片描述

4.Series序列对象

概念

上节中利用pandas库从外部读取数据到python中形成的表格叫做DataFrame表格对象
Series序列对象即DataFrame表格对象中的某一列数据 Series序列对象简称序列对象,
其数据类型是Series

获取序列对象的方法

从表格对象中提取序列对象:表格对象[‘列名称’]
手动生成一个序列对象:pd.Series(列表对象)类生成

Series序列对象的属性
属性含义
values元素(值)
index索引
name名称
dtypes元素类型
size元素个数
ndim维度数
shape数据形状(行列数目)

示例 :

1|series=pd.Series(['a','b','c'])

在这里插入图片描述

1|print(series.values)#值
2|print(series.index)#索引
3|print(series.name)#名称
4|print(series.dtypes)#数据类型
5|print(series.size)#数据个数

在这里插入图片描述

Series序列对象中局部数据的访问方法

1.通过序列单个索引访问 序列对象 [ 索引 ]
2.通过序列索引的切片访问:
序列对象 [ 索引1:索引2 ]
3.通过判断条件访问:
序列对象 [ 序列对象 逻辑判断符号 阈值 ]

示例 :

1|series=pd.Series(['a','b','c'])
2|print(series)
3|print('-'*20)
4|print(series[0])
5|print('-'*20)
6|print(series[0:2])
7|print('-'*20)
8|print(series[series!='a'])

在这里插入图片描述

Series序列对象的运算

序列对象和数字或者另一个序列之间可以进行基本的运算

1|series =pd.Series([1,2,3])
2|print('序列对象:\n',series)	
3|print('加法运算:\n',series+10)	
4|print('乘法运算,\n',series*10)
5|print('两个序列对象的运算:\n',series*6+series*4) 
6|print('字符串序列加法运算,\n',series.astype (str)+'天')	 	
7|print('判断运算,\n',series==2)

在这里插入图片描述

Series序列对象常用方法
astype()

转换序列对象中元素的数据类型

1|df['订单编号'].astype(float)
value_counts()

用于统计序列中每个元素值出现了多少次
注意 :返回值也是一个序列对象

1|series =pd.Series([1,2,3,3])
2|print(series)
3|print(series.value_counts())
sort_values()

对序列中的数据进行排序
注意 : 返回的新序列对象对象中索引排序被打乱了

1|series =pd.Series([1,2,5,3,4])
2|print(series)
3|print(series.sort_values())
rank()

返回序列中数据大小的排名
注意:返回的是一个序列对象,索引和原序列相同

1|series =pd.Series([1,100,10])
2|print(series)
3|print(series.rank())
4|print(series.rank(ascending=False))
round()

控制数字型序列的小数点位

1|series =pd.Series([1/3,1/6,1/8])
2|print(series)
3|print(series.round(2))
agg()

对序列对象的元素进行加工的方法
注意:返回序列对象
语法:

  1. 序列对象.agg(lambda x:关于x的返回值)
    2.序列对象.agg(定义好的加工函数)
1|series =pd.Series(['15岁','20岁','30岁'])
2|print('原序列:\n',series)
3|series2 =series.agg(lambda x:int(x.split('岁')[0]))
4|print('提取数字序列:\n',series2)
5|series3 =series2.agg(lambda x:'成年' if x>18 else '未成年')
6|print('加工为是否成年序列:\n',series3)
max()/min()/mean()/median()/count()/var()/…

计算数字型序列对象中所有元素的统计量

方法功能
max()求序列元素的最大值
min()求序列元素的最小值
mean()求序列元素的平均值
median()求序列元素的中位数
count()求序列元素的个数
mode()求序列元素的众数
var()求序列元素的方差
quantile()求序列元素的分位数
示例 :
1|series =pd.Series([1,2,3,4])
2|print('最大值:',series.max())
3|print('最小值:',series.min())
4|print('平均值:',series.mean())
5|print('中位数:',series.median())
6|print('元素个数:',series.count())
7|print('方差:',series.var())

5.DataFrame表格对象

创建表格对象的方法

可以通过pandas库中的DataFrame()类来创建一个表格对象
通过DataFrame()类的参数columns来设置表格对象的列名称

df=pd.DataFrame(
    [['张三','男'],['李四','女']],
    columns=['姓名','性别']
)
df

在这里插入图片描述

表格对象的基本方法

head() : 返回前5行数据,用于概览
info() : 查看表格对象行列数、各列的数据类型和非空值数量
describe() : 对表格对象中的数字型序列进行各类统计量的计算
rename() : 修改表格对象的列名称
to_excel() : 将表格对象导出成excel

三、表格对象实现统计分析

表格对象的增删查改

表格对象的数据查询

通过序列对象查询数据
访问单列:表格名称[序列名称’][索引]

1|df['顾客类型'][:5]

访问多列:表格名称[[序列名称1,‘序列名称2’,…]][索引]

1|df[['顾客类型','性别']][:5]
loc方法

调用语法:表格对象.loc[n,‘列名称’] n表示行索引,表示访问第n行
列名称’表示列索引,表示访问相应的列

1|print(df.loc[:5,'顾客类型'])
2|print(df.loc[:5,['顾客类型','性别']])
iloc方法

调用语法:表格对象.iloc[n,m] n表示行索引,表示访问第n行
m表示列索引,表示访问第m列

1|df.iloc[:,[3,4,5]]
表格对象数据的条件查询

条件查询即查询满足一定条件的数据(行)
一般有两种方法实现条件查询:
1.表格对象.query(查询条件字符串)
示例 :

1|df.query('城市=="城市C" and 性别=="男" and 支付方式=="现金"')

2.表格对象.loc[条件序列对象+逻辑判断,列索引]
示例 :

1|df.loc[df['城市']=='城市C',:]
表格对象数据的新增

概念 : 表格对象数据新增一般指新增一列
思路 : 将一个序列对象赋值给表格对象新的一列
语法 : 表格对象[‘新的列名’] = 某个序列对象
注意 : 新的列名不能和表格对象中已有的列名重复
示例 :

1|df['支付费用(人民币)']=df['支付费用(美元)']*7.29
2|df
表格对象数据的删除

概念 : 表格对象行或列数据的删除
语法 : 表格对象.drop(n,axis=0)
参数n表示行或列的索引
axis默认为0,表示删除行,axis=1时删除列

1|df1.drop(0)

在这里插入图片描述

1|#删除列
2|df1.drop('姓名',axis=1)

在这里插入图片描述

表格对象数据的修改

思路:先访问,后赋值
语法:访问某个元素的代码=需要赋予的值
注意:赋值需要使用=,不是==,==是判断符号

1|df1['姓名'][0]='王五'

在这里插入图片描述

分组统计分析

基本概念

1.分组分析又叫分组聚合,先分组,后聚合。

2.分组指根据某个类别型变量(如:性别)对一个 结构化数据(如一个表格对象)进行分组。

3.聚合指计算每个组的某个指标的聚合值,聚合值指求和、最值、均值这类由多个值聚合而来的指标。

实现分组分析的步骤(案例:统计每辆车的行驶总时长)

第1步:确定分组变量(基于哪列数据分组)
一般用类别型变量来分组

语法:表格对象.groupby(‘分组变量’)

第2步:确定聚合变量(指定要聚合的数据是哪列)
一般用数字型数据来聚合

语法:表格对象.groupby(‘分组变量’)[‘聚合变量’]

第3步:指定聚合函数(确定聚合数据的计算逻辑)
聚合函数即统计量相关函数:max/min/mean/median/count/sum/…

语法:表格对象.groupby(‘分组变量’)[‘聚合变量’].聚合函数()

时间类型数据处理

Timestamp 时间对象
两种生成Timestamp时间对象的方法

  1. 通过pd.Timestamp()类来生成
1|time=pd.Timestamp(2022,3,18,13,39,0)
2|print('生成时间是:',time)
3|print('它的类型是:',type(time))
  1. 通过pd.to_datetime()函数来生成
1|time_str='2022-03-18 13:39:00'
2|print('时间字符串是:',time_str)
3|print('它的类型是:',type(time_str))
4|time2=pd.to_datetime(time_str)
5|print('转换后的打印结果是:',time2)
6|print('它的类型是:',type(time2))
Timestamp 时间对象的常用属性

时间对象可以通过其属性来查看它的局部时间
属性名分别为:year\month\day\hour\minute\second
分别对应着年、月、日、时、分、秒

Timedelta 时间差对象

生成 Timedelta 时间差对象的两种方法

1.通过pd.Timedelta()类生成

1|#通过pd.Timedelta()类生成
2|timedeltal = pd.Timedelta(hours=1)	
3|timedelta2= pd.Timedelta(days=1)
4|print('1小时时间差对象:',timedeltal)
5|print('1天时间差对象:',timedelta2)

2.通过两个 Timestamp时间对象相减得到

1|#通过两个Timestamp时间对象相减得到
2|time =pd.Timestamp(2022,3,18,13,39,0)
3|time2 = pd.Timestamp(2022,3,20,13,39,0)
4|print('两个时间的差为:',time2-time)
Timedelta时间差对象的属性

时间差对象的属性主要有:days、seconds

1|#时间差对象的属性
2|timedelta =pd.Timedelta(hours=1)
3|print('1小时时间差对象:',timedelta)
4|print('天数:',timedelta.days)
5|print('秒数:',timedelta.seconds)
时间对象序列及dt对象

时间对象序列及由Timestamp对象组成的一个序列对象
可以用pd.to_datetime()函数将一个时间字符串序列转换为时间度对象序列

1|time_series = pd. to_datetime(df['启动时间'])
2|time_series

dt 对象是基于时间对象序列衍生出的一个用于处理序列中的时间的工具
语法:时间对象序列.dt.时间处理方法
dt 对象常用的时间处理方法有:
1.返回局部时间信息:year\quarter\month…
2.返回星期几:weekday(06对应星期一星期天)
3.返回当前日期是当年的第几周:isocalendar()

1|time_series.dt.weekday

什么是数据预处理

数据预处理的概念

指数据分析之前,对数据进行加工处理,使数据在后续的分析方法中更加的准确、有效。数据预处理的种类
主要有:数据合并、数据清洗、数据转换。
数据合并:将两个表格中的数据通过一定的逻辑合并到一起。数据清洗:去除重复值、处理缺失值、处理异常值。
数据转换:对数据结构或数据类型进行转换,以便于后续的分析。

数据合并

1.拼接合并
纵向拼接 : 指将两个列名相同的Dataframe表格对象上下拼接到一起。
横向拼接 : 指将两个索引相同的Dataframe表格对象左右拼接到一起。

pd.concat()函数
语法结构 : pd.concat([表格对象1,表格对象2],axis=0或1)
axis默认为0,表示横向拼接,axis=1时表示纵向拼接

1|pd.concat([df1,df2])

2.主键合并
基于两个表共有的主键(即某列数据)将两个表的数据根据主键相同原则进行拼接(匹配)
同理于SQL语言中的join语句、Excel中的VLOOKUP函数。

根据合并后显示数据的逻辑不同,将主键合并分为:左连接、右连接、内连接、外连接

左连接 : 结果只显示左表的主键所对应的数据
右连接 : 结果只显示右表的主键所对应的数据
内连接 : 结果只显示左表和右表共有的主键所对应的数据
外连接 : 结果显示左表和右表所有的主键所对应的数据
pd.merge0各参数的含义
pd.merge(left,right,how=‘inner’,on=None,left_on=None,right_on=None)

参数作用
let用来合并的左表,接收Dataframe表格对象
right用来合并的有表、接收DataFrame表格对象
how主键合并的连接方式(内连接inner、外连接outer、左连接left、有连接right)
on当左右表用来拼接的字段名相同时,可以使用on参数指定
lefton左右两表中主键名称不一致时使用、指定左表的主键列名
right_on左右两表中主键名称不一致时使用、指定右表的主键列名
left_index当需要以左表的索引作为主键时使用、接收布尔值True
right_index当需要以右表的索引作为主键时使用、接收布尔值True

数据清洗

去除重复值

去重方法 drop_duplicates()
去重的概念 : 删除某个序列或是表格中某个序列中的重复数据。
去重方法 : DataFrame表格和Series序列对象内置方法drop_duplicates()
语法结构 : 表格 序列对象.drop_duplicates(subset=None ,keep=‘first’, inplace=False)

参数作用
subset当去重对象是表格对象时使用,指定去重依据的字段
keep指定去重后保留哪一行,first表示第一行,last表示最后一行
inplace表示去重是否对在原始数据对象上进行
对Dataframe表格对象去重

通过subset参数指定通过哪一列数据来去重

1|df.drop_duplicates(subset=['姓名'])
处理缺失值
缺失值的定义

在现实的数据的产生场景中,由于人为原因或系统原因导致的数据缺失问题。

查看数据的缺失值

表格对象.isnull()方法返回数据是否缺失的布尔值矩阵。表格对象.isnull().sum()返回各列的缺失值数量

1|df_user.isnull().sum()
删除法处理缺失值

删除法:删除某个缺失数据所在的行的所有数据。
语法结构:表格对象.dropna(axis=0,how=‘any’,subset=None,inplace=False)

参数作用
axis指定删除行或者列,默认为0,表示删除行
how对表格对象多个字段的缺失值进行删除时使用。‘any’表示任何一个字段有缺失就删除。‘all’表示所有字段都缺失才删除。
subset指定要删除的缺失值来自哪一(几)列
inplace表示是否对原数据生效,默认为False
替换法处理缺失值

1、替换法:使用某个数据去替换缺失值的处理方法,又叫填充法。
2、语法结构:序列对象.fillna(values=需要替换的值,inplace=False)
3、替换法又可以细分为:平均值法、众数法、特殊值法。
4、平均值法:一般对数值型序列使用。
5、众数法:一般对类别型序列使用。
6、特殊值法:一般在能够判断缺失数据和其他数据有不同特征时使用。

处理异常值
异常值的概念

1、从数学角度说,异常值是某一个序列中距离大部分数据较远,远到一定程度的数据。
2、从通俗角度说,异常值是能根据经验判断的不符合常理的数据。
3、异常值计算涉及的相关数学概念:
(1)上四分位数(Q3):序列中75%的数小于这个数。
(2)下四分位数(Q1):序列中25%的数小于这个数。
(3)IQR: IQR=Q3-Q1
(4)正常值区间:[Q1-1.5IQR,Q3+1.5IQR]
(5)异常值:在正常值区间之外的数

异常值的查找

1、常用的异常值处理方法有:删除法、替换法
2、删除法:删除掉异常值数据所在的行
3、替换法:用均值法、众数法来替换掉异常值

数据转换

常见的数据结构转换方法

Pandas库中常用的数据结构转换方法有数据堆叠(stack)、数据拆堆(unstack)、数据融合
(melt)、数据透视(pivot)
数据堆叠(stack):将一个表格对象的列名称转换为行索引,实现数据从矩阵排布到单列排布的堆叠.

数据堆叠stack方法解析

1、数据堆叠:将一个表格对象的列名称转换为行索引,实现数据从矩阵排布到单列排布的堆叠。
2、数据堆叠语法:表格对象.stack(level=-1,dropna=True)
3、Level表示列名称转换为行索引后的索引层级,默认为-1,即最内层索引
4、Dropna表示新数据中的缺失值是否删除
5、注意:表格对象数据堆叠后返回一个序列对象

1|type(df.stack())
数据拆堆unstack方法解析

1、数据拆堆 : 将一个表格对象的行索引转换为列索引,实现数据从单列排布到矩阵排布的转换
2、数据拆堆语法 : 多层索引序列对象.unstack(level=-1,fill_value=None)
3、Level表示要将哪个索引层级的行索引转换为列索引,默认为-1,即最内层索引
4、fill_value表示用于填充缺失值的值,默认为空值
5、注意 : 表格对象也可以使用数据拆堆unstack方法,行索引转列索引后,只有一行数据的表格对
象退化为一个序列对象

1|df.unstack()
数据类型的概念

1、在计算机编程领域中,基础的数据类型包括数字型(整型、浮点型)、字符型等。
2、在数学学术领域中,变量类型可以分为连续型变量和离散型变量。
3、而在数据分析领域中,则一般叫做数字型(value)数据和类别型(category)数据。
4、数字型数据的特点是:由数字构成,取值的可能性是无限多的
5、类别型数据的特点是:一般由字符构成,取值的可能性是有限的

哑变量实现的函数解析

语法:
get_dummies(data,prefix,prefix_sep=‘_’,columns)

参数作用
data需要数据化的类别型数据序列对象
prefix新生成数字型数据的名称前缀
prefix_sep新生成数字型数据名称前缀连接的符号,默认是_’
columnsdata输入的是表格对象时使用,指定需要数字化的列名称,接收一个列表
数据分箱的概念

1、对于数字型数据可以通过将其划分到不同的区间(分箱)来减少数据的取值可能个数。
2、这样处理降低了数据的复杂度,同时也保留了数据的大部分信息。
3、新生成的数据是类别型数据,在python中是字符串str和区间Interval等类型的数据。

区间的概念

“区间”指的是数字的范围。一般用括号和数字表示一个区间。
(a,b]表示一个区间,不包括a,但是包括b。数字1不属于(1,2),但1属于[1,2)。
Pandas中有一个Interval类可以生成“区间”对象

1|#区间对象
2|interval=pd.Interval(0,100)
3|print(interval)
4|print(50 in interval)
数据分箱函数pd.cut()解析

pd.cut(data=None, bins=None, labels=None)

参数作用
data需要进行分箱的序列对象
bins1.输入为整数数字时,表示切分的区间个数,每个区间的长度相等 2.输入为序列型数据时,表示以序列中的数作为各个区间的边界点
labels接收列表对象,指定各区间的名称
1|df2['分数区间']=pd.cut(df2['分数'].bins=[0,60,70,80,90,100])
2|df2

matplotlib画图基本语法

1、选择绘图函数–以plot函数(折线图)为例

1、 绘图函数决定要绘制什么样的图形,不同的图形有不同的函数名称(见后面内容)
2、绘图语法:plt.plot(x,y, color, linestyle, marker, format_ string, …)

参数作用
xX轴数据,传入参数值时不要写参数名x
yY轴数据,传入参数值时不要写参数名y
color图形颜色,接收颜色英文名、颜色英文名首字母、十六进制颜色代码等
linestyle线条样式,'-‘是实线,’–是虚线,
marker点的样式,'*’是星号,'o’是圆点,…
format_string可以通过一串字符控制图形样式,如’r–o’表示红色、虚线、圆点
2、设置画布

语法 :plot.figure(figsize,…)
示例 :

1|plt.figure(figsize=(8,2))
2|plt.plot([1,2],[1,3])
3、设置坐标轴

坐标轴分为x轴和y轴,其内容包括坐标轴标题、刻度、范围和网格线.
Matplotlib库中通过不同函数控制以上坐标轴的设置。

函数名传入参数及其作用
plt.xlabel()传入一个字符串,表示x轴的名称(标签)
pltylabel()传入一个字符串,表示y轴的名称(标签)
pltxticks()传入一个列表,表示x轴的各个刻度的值(刻度为类别型数据时使用)
plt.yticks()传入一个列表,表示y轴的各个刻度的值(刻度为类别型数据时使用)
plt.xlim()传入一个列表或是两个数,表示x轴的取值范围(刻度为数字型数据时使用)
plt.ylim()传入一个列表或是两个数,表示y轴的取值范围(刻度为数字型数据时使用)
plt.grid()不需要传入参数,使直角坐标系显示网格
添加文本标签

可以在画布中任意位置一次性添加一个文本信息
语法:plot.text(x, y, s, ha, va, fontsize, color,…)

参数作用
X输入一个x轴的值(数字或字符),表示要插入文本的x坐标
y输入一个y轴的值(数字或字符),表示要插入文本的y坐标
s要插入的文本字符串
ha水平对齐方式,‘center’‘left’'right’
va垂直对齐方式,‘center’‘top’‘bottom’
fontsize字体大小,传入一个数字
color文本字体颜色
设置标题和图例

1、标题显示在画布和图表的正上方。图例一般显示在图表角落,用于描述数据的含义
2、显示标题语法:plot.title(‘标题’)
3、显示图例语法:plot.legend(‘数据标签’,loc, fontsize,…)
4、loc参数:决定图例的位置,如“upper right表示右上方

柱形图

柱形图能够查看各项数据的大小差异
绘图函数:plt.bar(x,height, width,…)
可以通过多个plt.bar()绘制多重柱形图
在这里插入图片描述

参数作用
x列表,表示柱子在x轴的刻度,一般为字符。
height列表,表示柱子在y轴的刻度,为数字。
width数字,表示柱子的宽度。
饼图

饼图能够查看各项数据在总计中的占比情况
绘图函数:plt.pie(x,labels,radius,autopct…)
在这里插入图片描述

参数作用
x接收列表,里面是各个数据的值
labels接收列表,里面是各个数据的标签
radius接收数字,表示饼图的半径,默认是1
autopct接收字符串’%%1.xf%',表示饼图中显示百分比数并保留一位小数。
折线图

折线图能够查看时间序列数据的波动趋势
绘图函数:plt.plot(x,y, color, linestyle,marker, format_string, …)
在这里插入图片描述

参数作用
xX轴数据,传入参数值时不要写参数名x
yY轴数据,传入参数值时不要写参数名y
color图形颜色,接收颜色英文名首字母、十六进制颜色代码等, …
linestyle线条样式,-‘是实线,’–'是虚线,…
marker点的样式,*号星号,0是圆点,…
format_string可以通过一串字符控制图形样式,如’r–o’表示红色、虚线、圆点
散点图

散点图能够查看两个序列数据之间的相关关系
绘图函数:plt.scatter(x,y,s,c,marker,…)
在这里插入图片描述

参数作用
XX轴数据,传入一个列表序列类型数据
yY轴数据,传入一个列表序列类型数据
S点标记的大小
C点标记的颜色
marker点的样式,'*'是星号,'o’是圆点,…
直方图

直方图能够查看序列数据的分布情况
数据的分布即统计序列在不同区间内数据的个数绘图函数:plt.hist(x,bins,…)
在这里插入图片描述

参数作用
X列表、序列数据
bins统计数据分布的区间,接收一个列表
箱型图

1、通过四分位数(Q1\Q2\Q3)和上限、下限表示数据分布
2、上限=Q3+1.5*(Q3-Q1),下限=Q1-1.5 *(Q3-Q1)
3、箱型图通过圆点来显示序列的异常值
4、绘图函数:plt.boxplot(x,labels, vert, whis…)
在这里插入图片描述

参数作用
x列表、序列数据、可以接收多个序列
labels序列数据的标签,接收字符串的列表
vert控制箱型图的方向,接收布尔值
whis控制上下限和上下位分数之间的距离,默认为1.5

同时绘制多张图的方法

创建画布

生成画布函数:plt.figure( figsize =(a,b))
figsize: 设置空白画布的大小,接收一个含有两个元素的元组,表示画布的长和宽。

1|plt.figure(figsize=(8,4))
2|plt.show()
添加子图的逻辑

子图区域选择函数:plt.subplot( x , y , z)
执行后会在画布中选定一个区域,由参数xyz决定 x,y: 表示将画布对象划分为x行y列,共xy个区域。
z:表示在上述的x
y 个区域中的第z个(从左到右,从上到下)区域上画图。

1|plt.figure(figsize=(8,4))
2|plt.subplot(2,2,1)
3|plt.subplot(2,2,2)
4|plt.subplot(2,1,2)
5|plt.show()
绘制子图

绘制子图需要在执行完subplot函数后执行绘图的相关代码
每次执行完一个subplot函数选择一个区域后执行绘图代码即可在该位置绘图

1|plt.figure(figsize=(8,4))
2|plt.subplot(2,2,1)
3|plt.bar([1,2,3,4],[1,2,3,4])
4|plt.subplot(2,2,2)
5|plt.scatter([1,2,3,4],[1,2,3,4])
6|plt.subplot(2,1,2)
7|plt.plot([1,2,3,4],[1,2,3,4])
8|plt.show()

结论 :利用Python进行数据分析可以大大提高效率和数据处理的准确性,特别是在处理大规模数据集时。Python的数据分析库,如pandas、NumPy和Matplotlib等,为开发者提供了强大的数据和可视化功能,使得数据分析变得更加便捷和高效。同时,Python的灵活性和可扩展性也使得开发者可以根据自己的需求定制特定的数据分析工具。因此,学习并掌握Python数据分析的相关技术和库对于数据科学家和开发者来说是非常有价值的。

  • 17
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值