机器学习之基础知识(全)_机器学习基础,2024年最新直面春招

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
img

正文

图像层指Axes内通过plot、scatter、bar、histogram、pie等函数根据数据绘制出的图像。

总结:

  • Canvas(画板)位于最底层,用户一般接触不到
  • Figure (画布)建立在Canvas之上
  • Axes(绘图区)建立在Figure之上
  • 坐标轴(axis)、图例(legend)等辅助显示层以及图像层都是建立在Axes之上

3.2 折线图(plot)与基础绘图功能

3.2.1 折线图绘制与保存图片

为了更好地理解所有基础绘图功能,我们通过天气温度变化的绘图来融合所有的基础API使用。

(1)matplotlib.pyplot模块

matplotlib.pytplot包含了一系列类似于matlab的画图函数。它的函数作用于当前图形(figure)的当前坐标系。
import matplotlib.pyplot as plt

(2)折线图绘制与显示

展现上海一周的天气,比如从星期一到星期日的天气温度如下:

import matplotlib.pyplot as plt
#1.创建画布
plt.figure(figsize=(10,10))
#2.绘制折线图(图像层)
plt.plot([1,2,3,4,5,6,7],[17,17,18,15,11,11,13])
#3.显示图像
plt.show()

运行结果:

(3)设置画布属性与图片保存

plt.figure(figsize=(),dpi=)

figsize:指定图的长度

dpi:图像的清晰度

plt.savefig(path)

**注意:**plt.show()会释放figure资源,如果在显示图像之后保存图片将只能保存空图片。所以,图像保存一定要放到show前面。

3.2.2 完善原始折线图1(辅助显示层)

**案例:**显示温度变化状况。
**需求:**画出某城市11点到12点1小时内每分钟的温度变化折线图,温度范围在15度~18度。

#画出温度变化图
import random
import matplotlib.pyplot as plt

#0.准备x、y坐标的数据
x=range(60)
y_shanghai=[random.uniform(10,15) for i in x]

#1.创建画布
plt.figure(figsize=(20,8),dpi=200)

#2.绘制折线图
plt.plot(x,y_shanghai)
#2.1 添加x、y轴刻度
y_ticks=range(40)
plt.yticks(y_ticks[::5])
x_ticks_label=[‘11点{}分’.format(i) for i in x]
plt.xticks(x[::5],x_ticks_label[::5])
#plt.xticks(x_ticks_label[::5])#报错 ==> 必须最开始传递进去的是数字

#3.显示图像
plt.show()

运行结果:

中文显示问题的解决:

**SimHei字体下载路径:**https://us-logger1.oss-cn-beijing.aliyuncs.com/SimHei.ttf

3.2.3 添加网格显示

为了更加清楚地观察图形对应的值:plt.grid(True,linestyle=‘–’,alpha= 0.5)

参数:
                linestyle   --绘制网格的方式

alpha       --透明度

3.2.4 添加描述信息

添加x轴、y轴描述信息及标题。

plt.xlabel(‘时间’,fontsize=20)
plt.ylabel(‘温度’,fontsize=20)
plt.title(‘xxxxx’,fontsize=20)

3.2.5 多次plot

**需求:**添加一个城市的温度变化。
        收集到北京当天温度变化情况,温度在1度到3度。怎么去添加另一个在同一坐标系当中的不同图形,其实很简单只需要再次plot即可,但是需要区分线条,如下:

y_beijing=[random.uniform(1,3) for i in x]
plt.plot(x,y_beijing,color=‘b’,linestyle=‘-.’,label=‘北京’)
#显示图例
plt.legend(loc=‘best’)

3.2.6 设置图形风格

**显示图例:**plt.legend(loc=‘best’)

**注意:**如果只在plt.plot()中设置label还不能最终显示出图例,还需要通过plt.legend()将图例显示出来。

3.2.7 多个坐标系显示-plt.subplots(面向对象的画图方法)

matplotlib.pyplot.subplots(nrows=1, ncols=1,**fig_kw)创建一个带有多个axes(坐标系/绘图区)的图。

**注意:**plt.函数名()相当于面向过程的画图方法,axes.set_方法名()相当于面向对象的画图方法。

#画出温度变化图
import random
import matplotlib.pyplot as plt

#0.准备x、y坐标的数据
x=range(60)
y_shanghai=[random.uniform(15,18) for i in x]
y_beijing=[random.uniform(1,14) for i in x]

#1.创建画布
fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=100)

#2.绘制折线图
axes[0].plot(x,y_shanghai,color=‘r’,linestyle=‘–’,label=‘上海’)
axes[1].plot(x,y_beijing,color=‘g’,linestyle=‘-.’,label=‘北京’)

#2.1 添加x、y轴刻度
x_ticks_label=[‘11点{}分’.format(i) for i in x]
y_ticks=range(40)
axes[0].set_xticks(x[::5])
axes[0].set_yticks(y_ticks[::5])
axes[0].set_xticklabels(x_ticks_label[::5])
axes[1].set_xticks(x[::5])
axes[1].set_yticks(y_ticks[::5])
axes[1].set_xticklabels(x_ticks_label[::5])

#2.2 添加网格
axes[0].grid(True,linestyle=‘–’,alpha=1)
axes[1].grid(True,linestyle=‘–’,alpha=1)

#2.3 添加描述
axes[0].set_xlabel(‘时间’,fontsize=25)
axes[0].set_ylabel(‘温度’,fontsize=25)
axes[0].set_title(‘上海’,fontsize=25)
axes[1].set_xlabel(‘时间’,fontsize=25)
axes[1].set_ylabel(‘温度’,fontsize=25)
axes[1].set_title(‘北京’,fontsize=25)

#2.4显示图例
axes[0].legend(loc=‘best’)
axes[1].legend(loc=‘best’)

#3.显示图像
plt.show()

运行效果:

3.2.8 折线图应用场景
  • 呈现公司产品(不同区域)每天活跃用户数
  • 呈现app每天下载数量
  • 呈现产品新功能上线后,用户点击次数随时间的变化
  • 拓展:画各种数学函数图像

**注意:**plt.plot()除了可以画折线图,也可以用于画各种数学函数图像。

import random
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams[‘axes.unicode_minus’]=False #解决负号显示问题

#0.准备数据
x=np.linspace(-10,10,1000)#[-10,10]1000个数据
y=np.sin(x)

#1.创建画布
plt.figure(figsize=(20,8),dpi=100)

#2.绘制函数图像
plt.plot(x,y)
#2.1显示网格
plt.grid()

#3.显示图像
plt.show()

运行结果:

3.3 常见图形绘制

https://matplotlib.org/index.html

3.3.1 常见图形种类及意义

Matplotlib能够绘制折线图、散点图、柱状图、直方图、饼图。
我们需要知道不同的统计图的意义,以此来决定选择哪种统计图来呈现我们的数据。

(1)折线图

**折线图:**以折线的上升或下降来表示统计数量的增减变化的统计图。
**特点:**能够显示数据的变化趋势,反映事物的变化情况。(变化)
**api:**plt.plot(x, y)

(2)散点图

**散点图:**用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。
**特点:**判断变量之间是否存在数量关联趋势,展示离群点(分布规律)。

**api:**plt.scatter(x, y)

(3)柱状图

**柱状图:**排列在工作表的列或行中的数据可以绘制到柱状图中。
**特点:**绘制连离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别。(统计/对比)
**api:**plt.bar(x, width, align=‘center’ , **kwargs)

(4)直方图

**直方图:**由一系列高度不等的纵向条纹或线段表示数据分布的情况。一般用横轴表示数据范围,纵轴表示分布情况。
**特点:**绘制连续性的数据展示一组或者多组数据的分布状况(统计)
**api:**matplotlib.pyplot.hist(x, bins=None)

(5)饼图

**饼图:**用于表示不同分类的占比情况,通过弧度大小来对比各种分类。

**特点:**分类数据的占比情况(占比)
**api:**plt.pie(x, labels=,autopct=,colors)

3.3.2 散点图绘制

**需求:**探究房屋面积和房屋价格的关系。

import matplotlib.pyplot as plt

#房屋面积数据
x=[225.98,247.07,253.14,457.85,241.58,301.01,20.67,288.64,163.56,120.06,207.83,342.75,147.9,53.06,224.72,29.51,21.61,483.21,245.25,399.25,343.35]
#房屋价格数据
y=[196.63,203.88,210.75,372.74,202.41,247.61,24.9,239.34,140.32,104.15,176.84,288.23,128.79,49.64,191.74,33.1,30.74,400.02,205.35,330.64,283.45]

plt.figure(figsize=(20,8),dpi=100)
plt.scatter(x,y)
plt.show()

结果:

3.3.3 柱状图绘制

movie_name=[‘雷神3∶诸神黄昏’,‘正义联盟’,‘东方快车谋杀案’,‘寻梦环游记’,‘全球风暴’,‘降魔传’,‘追捕’,‘七十七天’,‘密战’,‘狂兽’,‘其它’]
x=range(len(movie_name))
y=[73853,57767,22354,15969,14839,8725,8716,8318,7916,6764,52222]
plt.figure(figsize=(20,8),dpi=100)
plt.bar(x,y,width=0.5,color=[‘b’,‘r’,‘g’,‘y’,‘c’,‘m’,‘y’,‘k’,‘c’,‘g’,‘b’])
plt.xticks(x,movie_name,fontsize=15)
plt.grid()
plt.title(‘某月电影票房统计’,fontsize=20)
plt.show()

结果:

4.numpy

4.1 numpy的优势

4.1.1 numpy介绍
  • **Numpy(Numerical Python)**是一个开源的Python科学计算库,用于快速处理任意维度的数组
  • Numpy支持常见的数组和距阵操作。对于同样的数值计算任务,使用Numpy比直接使用Python要简洁的多。
  • Numpy使用ndarray对象来处理多维数组,该对象是一个快速而灵活的大数据容器。
4.1.2 ndarray介绍

NumPy提供了一个N维数组类型ndarray,它描述了相同类型的“items”的集合。

4.1.3 ndarray与Python原生list运算效率对比

使用Python列表可以存储一维数组,通过列表的嵌套可以实现多维数组,那么为什么还需要使用Numpy的ndarray呢?

在这里我们通过一段代码运行来体会到ndarray的好处:

import random,time
import numpy as np
a=[]
for i in range(10000):
a.append(random.random())
%time sum1=sum(a)

b=np.array(a)
%time sum2=np.sum(b)

从中我们看到ndarray的计算速度要快很多,节约了时间。
        机器学习的最大特点就是大量的数据运算,那么如果没有一个快速的解决方案,那可能现在python也在机器学习领域达不到好的效果。

4.1.4 narray的优势

(1)内存块风格

ndarray到底跟原生python列表有什么不同呢,请看一张图:

从图中我们可以看出ndarray在存储数据的时候,数据与数据的地址都是连续的,这样就给使得批量操作数组元素时速度更快。
        这是因为ndarray中的所有元素的类型都是相同的,而Python列表中的元素类型是任意的,所以ndarray在存储元素时内存可以连续,而python原生list就只能通过寻址方式找到下一个元素,这虽然也导致了在通用性能方面Numpy的ndarray不及Python原生list,但在科学计算中,Numpy的ndarray就可以省掉很多循环语句,代码使用方面比Python原生list简单的多。

(2)ndarray支持并行化运算(向量化运算)

(3)效率远高于纯Python代码

Numpy底层使用C语言编写,内部解除了GIL(全局解释器锁),其对数组的操作速度不受Python解释器的限制,所以,其效率远高于纯Python代码。

4.2 N维数组-ndarray

4.2.1 ndarray的属性

数组属性反映了数组本身固有的信息。

4.2.2 ndarray的形状

4.2.3 ndarray的类型

dtype是numpy.dtype类型,先看看对于数组来说都有哪些类型:

**注意:**若不指定,整数默认int64,小数默认float64。

4.3 基本操作

4.3.1 生成数组的方法

(1)生成0和1的数组

(2)从现有数组生成

**生成方式:**array为深拷贝,互不影响;asarray是浅拷贝,指向同一空间区域。

(3)生成固定范围的数组

  • **生成等间隔的序列:**np.linspace (start, stop, num, endpoint)

  • 其它的还有:

numpy.arange(start,stop, step, dtype)

numpy.logspace(start,stop, num)

(4)生成随机数组

**使用模块:**np.random

均匀分布:

  • **np.random.rand(d0, d1, … , dn)**返回[0.0,1.0)内的一组均匀分布的数。

  • np.random.uniform(low=0.0, high=1.0, size=None)

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams[‘axes.unicode_minus’]=False #解决负号显示问题

x1=np.random.uniform(-1,1,10000000)
plt.figure(figsize=(10,3),dpi=100)
plt.hist(x=x1,bins=1000)
plt.show()

运行结果:

  • np.random.randint(low , high=None, size=None, dtype=‘I’)
    从一个均匀分布中随机采样,生成一个整数或N维整数数组,取数范围:若high不为None时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数。

正态分布:

  • np.random.randn(d0, d1, …,dn)

功能:从标准态分布中返回一个或多个样本值。

  • np.random.normal(loc=0.0, scale=1.0, size=None)

x2=np.random.normal(1.75,1,100000000)
plt.figure(figsize=(20,8),dpi=100)
plt.hist(x2,1000)
plt.show()

  • np.random.standard_normal(size=None)
    返回指定形状的标准正态分布的数组。

**案例:**随机生成8只股票2周的交易日涨幅数据。

stock_change = np.random.normal(0, 1,(8,10))

4.3.2 数组的索引、切片

一维、二维、三维的数组如何索引?

4.3.3 形状修改
  • ndarray.reshape(shape[, order])
    返回一个新结果,原来结果不变。

  • ndarray.resize(new_shape[, refcheck])
    修改原数组。
  • ndarray.T数组的转置
    将数组的行、列进行互换。
4.3.4 类型修改
  • ndarray.astype(type)
  • ndarray.tostring([order])或者ndarray.tobytes([order])
4.3.5 数组的去重
  • ndarray.unique

4.4 ndarray运算

4.4.1 逻辑运算

4.4.2 通用判断函数
  • np.arr()
  • np.any()
4.4.3 np.where (三元运算符)

通过使用np.where能够进行更加复杂的运算。

  • np.where()
  • 复合逻辑需要结合np.logical_and和np.logical_or使用
4.4.4 统计运算

在数据挖掘/机器学习领域,统计指标的值也是我们分析问题的一种方式。

常用的指标如下:

  • min(a[, axis, out, keepdims])
  • max(a[, axis, out, keepdims])
  • median(a[, axis, out, overwrite_input,keepdims])   中位数
  • mean(a, axis, dtype, out, keepdims])           平均值
  • std(a[, axis, dtype, out, ddof, keepdims])    标准差
  • var(a[, axis, dtype, out, ddof, keepdims])    方差
  • np.argmax(a,axis=)       最大值下标
  • np.argmin(a,axis=)        最小值下标

进行统计的时候,axis 轴的取值并不一定,Numpy中不同的API轴的值都不一样,在这里,axis=0代表列,axis=1代表行去进行统计。

4.5 数学:矩阵

4.5.1 矩阵和向量

(1)矩阵

(2)向量

4.5.2 加法和标量乘法

4.5.3 矩阵向量乘法

4.5.4 矩阵乘法

4.5.5 矩阵乘法的性质

4.5.6 逆、转置

4.6 数组间运算

4.6.1 数组和数的运算

4.6.2 数组与数组的运算:广播机制

执行broadcast的前提在于,两个ndarray执行的是element-wise的运算,Broadcast机制的功能是为了方便不同形状的ndarray (numpy库的核心数据结构)进行数学运算。
        当操作两个数组时,numpy会逐个比较它们的shape (构成的元组tuple),只有在下述情况下,两个数组才能够进行数组与数组的运算。

  • 维度相等
  • shape(其中相对应的一个地方为1)

4.6.3 矩阵乘法api
  • np.matmul    矩阵乘法
  • np.dot   点乘
  • **注意:**两者之间在进行矩阵相乘时候,没有区别;但是,dot支持矩阵和数字相乘。

5.Pandas

5.1 Pandas介绍

5.1.1 Pandas介绍

  • 2008年WesMcKinney开发出的库
  • 专门用于数据挖掘的开源python库
  • 以Numpy为基础,借力Numpy模块在计算方面性能高的优势
  • 基于matplotlib,能够简便的画图
  • 独特的数据结构
5.1.2 为什么使用Pandas

Numpy已经能够帮助我们处理数据,能够结合matplotlib解决部分数据展示等问题,那么pandas学习的目的在什么地方呢?

  • 便捷的数据处理能力
  • 读取文件方便
  • 封装了Matplotlib、Numpy的画图和计算
5.1.3 案例

5.1.4 DataFrame

(1)DataFrame结构

DataFrame对象既有行索引,又有列索引

  • 行索引,表明不同行,横向索引,叫index,0轴,axis=0
  • 列索引,表名不同列,纵向索引,叫columns,1轴,axis=1

(2)DataFrame属性

  • 对象.shape
  • 对象.indexDataFrame的行索引列表
  • 对象.columns   DataFrame的列索引列表
  • 对象.values直接获取其中array的值
  • 对象.T  转置
  • 对象.head(5) 显示前5行的内容
    如果不补充参数,默认5行。填入参数N则显示前N行
  • 对象.tail(5)      显示后5行的内容
    如果不补充参数,默认5行。填入参数N则显示后N行

(3)DataFrame索引的设置

1.修改行列索引值:

**注意:**以下修改方式是错误的
        

2.重设索引:

  • reset_index(drop=False)
    -设置新的下标索引。
    -drop:默认为False,不删除原来索引,如果为True,删除原来的索引值。

  • **set_index(keys, drop=True)
    -**keys:列索引名成或者列索引名称的列表。
    -drop:boolean, default True。当做新的索引,删除原来的列。

3.设置新索引案例:

  • 创建
  • 以月份设置新的索引
  • 设置多个索引,以年和月份        ==>   其实这就变成三维数组了

    **注:**通过刚才的设置,这样DataFrame就变成了一个具有Multilndex的DataFrame。

5.2 基本数据操作

为了更好的理解这些基本操作,我们将读取一个真实的股票数据。关于文件操作,后面在介绍,这里只先用一下API。

5.2.1 索引操作

Numpy当中我们已经讲过使用索引选取序列和切片选择,pandas也支持类似的操作,也可以直接使用列名、行名称,甚至组合使用。

(1)直接使用行列索引(先列后行)

(2)结合loc或者iloc使用索引

(3)使用ix组合索引

5.2.2 赋值操作

5.2.3 排序

排序有两种形式,一种对于索引进行排序,一种对于内容进行排序

  • 使用df.sort_values(by=, ascending=)
    -单个键或者多个键进行排序,默认升序
    -ascending=False:降序
    -ascending=True:升序
    -注意:by这个参数可以接受多个值,优先按照第一个索引排序,如果相同,按照后面的
  • 使用df.sort_index给索引进行排序
    这个股票的日期索引原来是从大到小,现在重新排序,从小到大:
  • 使用series.sort_values(ascending=True)进行排序
    series排序时,只有一列,不需要参数:
  • 使用series.sort_index()进行排序与df一样

5.3 DataFrame运算

5.3.1 算术运算

直接使用方法add,sub…也可以用符号±…

  • add(other)
  • sub(other)
5.3.2 逻辑运算

(1)逻辑运算符号<、>、|、&

  • 例如筛选p_change > 2的日期数据

  • 完成一个多个逻辑判断,筛选p_change > 2并且open > 15

(2)逻辑运算函数

  • query(expr)
    -expr:查询字符串
  • isin(values)
5.3.3 统计运算

(1)describe()

(2)统计函数

Numpy当中已经详细介绍,在这里我们演示min(最小值), max(最大值), mean(平均值), median(中位数),var(方差), std(标准差),mode(众数)结果:

对于单个函数去进行统计的时候,坐标轴还是按照这些默认为“columns"(axis=0, default),如果要对行"index”需要指定(axis=1)。

  • max()、min()
  • std()、var()
     
  • median()

  • idxmax()、idxmin()  获取最大/小值的下标

5.3.4 累计统计函数

以上这些函数可以对series和dataframe操作。

5.3.5 自定义函数
  • apply(func, axis=0)
    func:自定义函数
    ​​​​​​​axis=0:默认是列,axis=1为行进行运算

**举例:**​​​​​​​定义一个对列,最大值-最小值的函数

5.4 Pandas画图

pandas.DataFrame.plot

5.5 文件读取与存储

我们的数据大部分存在于文件当中,所以pandas会支持复杂的IO操作,pandas的API支持众多的文件格式,如CSV、SQL、XLS、JSON、HDF5。
**注:**最常用的HDF5和CSV文件。

5.5.1 CSV

(1)read_csv

pandas.read_csv(filepath_or_buffer,sep =‘,’ )

  • filepath_or_buffer:文件路径
  • usecols:指定读取的列名,列表形式

(2)to_csv

5.5.2 HDF5

(1)read_hdf和to_hdf

5.5.3 JSON

JSON是我们常用的一种数据交换格式,前面在前后端的交互经常用到,也会在存储的时候选择这种格式。所以我们需要知道Pandas如何进行读取和存储JSON格式。

(1)read_json

(2)to_json

5.5.4 拓展

优先选择使用HDF5文件存储:

  • HDF5在存储的时候支持压缩,使用的方式是blosc,这个是速度最快的也是pandas默认支持的
  • 使用压缩可以提磁盘利用率,节省空间
  • HDF5还是跨平台的,可以轻松迁移到hadoop 上面

5.6 高级处理-缺失值处理

5.6.1 如何处理nan

5.6.2 不是缺失值nan,有默认标记的

数据是这样的:

处理思路分析:

  • 1.先替换‘?'为np.nan
    df.replace(to_replace=, value=)
            -to_replace:替换前的值
            -value:替换后的值
  • 2.在进行缺失值的处理

5.7 高级处理-数据离散化

5.7.1 为什么要离散化

连续属性离散化的目的是为了简化数据结构,数据离散化技术可以用来减少给定连续属性值的个数。离散化方法经常作为数据挖掘的工具。

5.7.2 什么是数据离散化

连续属性的离散化就是在连续属性的值域上,将值域划分为若干个离散的区间,最后用不同的符号或整数值代表落在每个子区间中的属性值。
离散化有很多种方法,这使用一种最简单的方式去操作:

  • 原始人的身高数据:165,174,160,180,159,163,192,184
  • 假设按照身高分几个区间段:150165,165180,180~195

这样我们将数据分到了三个区间段,我可以对应的标记为矮、中、高三个类别,最终要处理成一个"哑变量"矩阵:

5.7.3 数据分组操作

使用的工具:

  • pd.qcut(data, bins):
    ​​​​​​​对数据进行分组将数据分组一般会与value_counts搭配使用,统计每组的个数
  • series.value_counts():统计分组次数
    ​​​​​​​

自定义区间分组:

  • pd.cut(data, bins)
     ​​​​​​​
5.7.4 分组数据变成one-hot编码

把每个类别生成一个布尔列,这些列中只有一列可以为这个样本取值为1.其又被称为热编码。

**别名:**哑变量,热独编码
把下图中左边的表格转化为使用右边形式进行表示:

pandas.get_dummies(data, prefix=None)

  • data:array-like, Series, or DataFrame
  • prefix:分组名字

5.8 高级处理-数据合并

如果你的数据由多张表组成,那么有时候需要将不同的内容合并在一起分析。

5.8.1 pd.concat实现数据合并

pd.concat([data1, data2], axis=1)
        -按照行或列进行合并,axis=0为列索引,axis=1为行索引
        比如我们将刚才处理好的one-hot编码与原数据合并:
        

5.8.2 pd.merge实现数据合并

pd.merge(left, right, how=‘inner’, on=None, left_on=None, right_on=None)

  • 可以指定按照两组数据的共同键值对合并或者左右各自
  • left:A DataFrame object
  • right:Another DataFrame object
  • on:Columns (names) to join on. Must be found in both the left and right DataFrame objects.
  • left_on=None, right_on=None:指定左右键

5.9 高级处理-交叉表与透视表

5.9.1 交叉表与透视表什么作用

5.9.2 使用crosstab(交叉表)实现上图

**交叉表:**交叉表用于计算一列数据对于另外一列数据的分组个数(寻找两个列之间的关系)

  • pd.crosstab(value1, value2)
  • DataFrame.pivot_table([], index=[])
5.9.3案例-探究股票和星期几之间的关系

但是我们看到count只是每个星期日子的好坏天数,并没有得到比例,该怎么去做?

  • 对于每个星期一等的总天数求和,运用除法运算求出比例。

可视化:

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
to join on. Must be found in both the left and right DataFrame objects.

  • left_on=None, right_on=None:指定左右键

5.9 高级处理-交叉表与透视表

5.9.1 交叉表与透视表什么作用

5.9.2 使用crosstab(交叉表)实现上图

**交叉表:**交叉表用于计算一列数据对于另外一列数据的分组个数(寻找两个列之间的关系)

  • pd.crosstab(value1, value2)
  • DataFrame.pivot_table([], index=[])
5.9.3案例-探究股票和星期几之间的关系

但是我们看到count只是每个星期日子的好坏天数,并没有得到比例,该怎么去做?

  • 对于每个星期一等的总天数求和,运用除法运算求出比例。

可视化:

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-xchT25sb-1713567226481)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值