2024年Python数据分析之数据预处理_python预处理数据(1),跳槽 面试

本文提供了一系列Python学习资源,包括电子书、标准库文档、项目源码、视频教程、学习路线图以及异常值处理、数据集成等内容,强调了系统化学习的重要性。作者鼓励读者加入技术交流圈子,共同成长。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

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

需要这份系统化学习资料的朋友,可以戳这里获取

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

f(x),未知值由对应的

f

(

x

)

f(x)

f(x)给出。

拉格朗日插值法

由泰勒定理,任意函数可用足够高阶的多项式和近似,即f(x)=\sum_{i=0}^n a_ix^if(x)=i=0∑n​ai​xi

插值法就是使用某一自变量(通常是index或者序数)计算另一属性的缺失值y_j=f(x_j)yj​=f(xj​)

因此,需要求解插值函数

f

(

x

)

f(x)

f(x)的表达式,即求解

a

_

i

i

=

0

,

1

,

.

.

.

,

n

a\_i,i=0,1,…,n

a_i,i=0,1,…,n,这需要

n

1

n+1

n+1个样本点

(

x

_

j

,

y

_

j

)

,

j

=

1

,

2

,

.

.

.

,

n

1

(x\_j,y\_j),j=1,2,…,n+1

(x_j,y_j),j=1,2,…,n+1,将样本点代入上述方程a_0+a_1x_1+a_2x_12+…+a_nx_1n=y_1a0​+a1​x1​+a2​x12​+…+an​x1n​=y1​a_0+a_1x_2+a_2x_22+…+a_nx_2n=y_2a0​+a1​x2​+a2​x22​+…+an​x2n​=y2​…a_0+a_1x_{n+1}+a_2x_{n+1}2+…+a_nx_{n+1}n=y_{n+1}a0​+a1​xn+1​+a2​xn+12​+…+an​xn+1n​=yn+1​

显然以上线性方程组的系数矩阵为范德蒙矩阵,因此,有唯一解,即有唯一

f

(

x

)

f(x)

f(x),在实际计算中,直接求解上述矩阵比较复杂。拉格朗日插值法应运而生,拉格朗日插值法实际上是一种求

f

(

x

)

f(x)

f(x)的计算方法:f(x)=\sum_{i=1}^{n+1} y_i\prod_{j\neq i}\frac{(x-x_j)}{(x_i-x_j)}f(x)=i=1∑n+1​yi​j=i∏​(xi​−xj​)(x−xj​)​

观察上式可以发现,这是一个x的n阶多项式,且过点所有

(

x

_

m

,

y

_

m

)

(x\_m,y\_m)

(x_m,y_m),即上式即为所求。

插值实例

df = pd.read\_excel('Python数据分析与挖掘实战/chapter3/demo/data/catering\_sale.xls')
df.head(3)

日期销量
02015-03-0151.0
12015-02-282618.2
22015-02-272608.4

df.isnull().sum()

日期 0
销量 1
dtype: int64

可以看出,销量存在缺失值,使用拉格朗日法对缺失值进行插补,首先将异常值过滤为缺失值,然后对每一列的缺失值进行插值,插值的自变量为缺失值的前后k个数据的index。

from scipy.interpolate import lagrange

df[‘销量’][(df[‘销量’] < 400) | (df[‘销量’] > 5000)] = None # 过滤异常值,将其变为空值

def lagrange_(s,n,k=4):
“”"
s:需要插值的列
n:缺失值的index
k:插值使用前后k个数据
“”"
l = list(range(n-k,n)) + list(range(n+1,n+1+k))
y = s[[i for i in l if i >=0]] #取出前后k项数据的值
y = y[y.notnull()] #剔除空值
return lagrange(y.index, list(y))(j)

#对整个datafram进行插值
for i in df.columns:
for j in range(len(df)):
if df[i].isnull()[j]:
df[i][j]=lagrange_(df[i],j)
df.to_excel(‘outputfile.xlsx’)

异常值处理
异常值处理方法方法描述
删除含有异常值的记录直接将含有异常值的记录删除
视为缺失值将异常值视为缺失值,利用缺失值处理的方法进行处理
平均值修正可用前后两个观测值的平均值修正该异常值
不处理直接在具有异常值的数据集.上进行挖掘建模

数据集成

  • 数据集成:将多个数据源合并存放在一个一致的数据存储(如数据仓库)中的过程。

数据挖掘需要的数据往往分布在不同的数据源中,这时需要进行数据集成。在数据集成时,来自多个数据源的现实世界实体的表达形式是不一样的,有可能不匹配,要考虑实体识别问题和属性冗余问题,从而将源数据在最低层上加以转换、提炼和集成。

实体识别
  • 实体识别:从不同数据源识别出现实世界的实体,它的任务是统一不同源数据的矛盾之处,常见形式如下:

    1. 同名异义:数据源A中的属性ID和数据源B中的属性ID分别描述的是菜品编号和订单编号,即描述的是不同的实体。
    2. 异名同义:数据源A中的sales__dt和数据源B中的sales_date都是描述销售日期的,即A.sales__dt=B.sales_date。
    3. 单位不统一:描述同一个实体分别用的是国际单位和中国传统的计量单位。

检测和解决这些冲突就是实体识别的任务。

冗余属性识别

数据集成往往导致数据冗余,例如:

  • 同一属性多次出现;
  • 同–属性命名不一致导致重复。

仔细整合不同源数据能减少甚至避免数据冗余与不一致,从而提高数据挖掘的速度和质量。对于冗余属性要先分析,检测到后再将其删除。

有些冗余属性可以用相关分析检测。给定两个数值型的属性A和B,根据其属性值,用相关系数度量一个属性在多大程度上蕴含另一一个属性。

数据变换

数据变换主要是对数据进行规范化处理,将数据转换成“适当的”形式,以适用于挖掘任务及算法的需要。

简单函数变换

简单函数变换是对原始数据进行某些数学函数变换,常用的变换包括平方、开方、取对数、差分运算等,即:
x’=x^2x′=x2x’=\sqrt xx′=x​x’=log xx′=logxx’=f(x_{k+1})-f(x_{k})x′=f(xk+1​)−f(xk​)

规范化
  • 数据规范化(归一化):对数据进行标准化处理,将数据按照比例进行缩放,使之落入一个特定的区域,便于进行综合分析。

归一化处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲,数值间的差别可能很大,不进行处理可能会影响到数据分析的结果。为了消除指标之间的量纲和取值范围差异的影响,需要进行归一化。如将工资收入属性值映射到[-1,1]或者[0,1]内。数据规范化对于基于距离的挖掘算法尤为重要。

  • 最小-最大规范化(MinMaxScaler)

x’=\frac{x-x_{min}}{x_{max}-x_{min}}x′=xmax​−xmin​x−xmin​​

from sklearn.preprocessing import MinMaxScaler

data = pd.read_excel(‘Python数据分析与挖掘实战/chapter4/demo/data/normalization_data.xls’,header=None)
data

0123
0785216022863
1144-600-5212245
295-457468-1283
3695966951054
41905276912051
51014034702487
61464134352571

scaler = MinMaxScaler().fit(data)
pd.DataFrame(scaler.transform(data))

0123
00.0743800.9372910.9235201.000000
10.6198350.0000000.0000000.850941
20.2148760.1195650.8133220.000000
30.0000001.0000001.0000000.563676
41.0000000.9423080.9967110.804149
50.2644630.8386290.8149670.909310
60.6363640.8469900.7861840.929571
  • 零均值规范化(StandardScaler)

x’=\frac{x-\mu}{\sigma}x′=σx−μ​

依然使用上述数据:

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler().fit(data)
pd.DataFrame(scaler.transform(data))

0123
0-0.9779260.6868110.5017510.862099

做了那么多年开发,自学了很多门编程语言,我很明白学习资源对于学一门新语言的重要性,这些年也收藏了不少的Python干货,对我来说这些东西确实已经用不到了,但对于准备自学Python的人来说,或许它就是一个宝藏,可以给你省去很多的时间和精力。

别在网上瞎学了,我最近也做了一些资源的更新,只要你是我的粉丝,这期福利你都可拿走。

我先来介绍一下这些东西怎么用,文末抱走。


(1)Python所有方向的学习路线(新版)

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

最近我才对这些路线做了一下新的更新,知识体系更全面了。

在这里插入图片描述

(2)Python学习视频

包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

在这里插入图片描述

(3)100多个练手项目

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

在这里插入图片描述

(4)200多本电子书

这些年我也收藏了很多电子书,大概200多本,有时候带实体书不方便的话,我就会去打开电子书看看,书籍可不一定比视频教程差,尤其是权威的技术书籍。

基本上主流的和经典的都有,这里我就不放图了,版权问题,个人看看是没有问题的。

(5)Python知识点汇总

知识点汇总有点像学习路线,但与学习路线不同的点就在于,知识点汇总更为细致,里面包含了对具体知识点的简单说明,而我们的学习路线则更为抽象和简单,只是为了方便大家只是某个领域你应该学习哪些技术栈。

在这里插入图片描述

(6)其他资料

还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。

在这里插入图片描述

这些都不是什么非常值钱的东西,但对于没有资源或者资源不是很好的学习者来说确实很不错,你要是用得到的话都可以直接抱走,关注过我的人都知道,这些都是可以拿到的。

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

需要这份系统化学习资料的朋友,可以戳这里获取

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值