最全学习《Python数据分析与挖掘实战》之Python数据分析简介,2024年最新腾讯面试内容

现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。

分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习

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

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

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

a=2 #赋值 a*2 #a乘以2 a**2 #a的2次方 a,b,c=1,2,3 #相当于a=1,b=2,c=3 s = ‘i like python’ #对变量进行赋值(可赋值字符串) s+’ very much’ #拼接字符串,结果是i like python very much s.slipt(’ ') #对变量以空格分割,结果为[‘i’, ‘like’, ‘python’]

(2)判断与循环
1.判断
if 条件1: 语句2 
  elif 条件3: 
        语句4 
  else : 
        语句5

2.循环

while循环:

s,k=0,0
while k<101: #在3.x环境下此过程为1+2+3+...+101 
    k=k+1 
    s=s+k 
print(s)

for循环:

s=0
for k in range(101): #在3.x环境下此过程为1+2+3+...+100
    s=s+k 
print(s)

3.函数

def定义函数:

def add2(x): 
   return x+2 
print(add2(1)) #返回结果为3

Python的函数可以是多种多样的,比如返回列表:

def add2(x=0,y=0): 
    return [x+2,y+3] 
def add3(x,y): 
    return x+3,y+3
 a,b=add3(1,2) #a=4,b=5

还支持lambda对简单的功能定义“行内函数”,有点像MATLAB里面的“匿名函数”,如下:

f = lambda x: x+2 #定义函数f(x)=x+2 
g = lambda x,y = x+y #定义函数g(x,y)=x+y

(3)数据结构

Python有4个内建的数据结构——list(列表)、tuple(元组)、dictionary(字典)、set(集合),它们可以统称为容器。

1.列表/元组

列表和元组都是序列结构,很相似,但是又有不同的地方;列表a=[1,2,3],元组a=(1,2,3),用法和功能完全一样。
区别:列表可以被修改,而元组不可以被修改;与列表有关的函数是list,元组是tuple。

列表与元组相关函数:
  1. cmp(a,b):比较;两个列表/元组的元素
  2. len(a):列表/元组元素个数
  3. max(a):返回列表/元组元素最大值
  4. min(a):返回列表/元组元素最小值
  5. sum(a):将列表/元组元素求和
  6. sorted(a):对列表的元素进行升序排列
列表的方法:
  1. a.append(1):将1添加到a列表的末尾
  2. a.count(1):统计列表a中1出现的次数
  3. a.extend([1,2]):将列表[1,2]的内容追加到列表a的末尾中
  4. a.index(1):从列表a中找出第一个1的索引位置
  5. a.insert(2,1):将1插入列表a的索引为2的位置
  6. a.pop(1):移除列表a中索引为1的元素

列表解析——能够简化我们队列表元素注意进行操作的代码:

a = [1,2,3] 
b=[] 
for i in a:
    b.append(i+2) 
print(b) #列表b=[3, 4, 5]

可简化为:

a=[1,2,3] 
b=[i=2 for i in a] 
print(b) #列表b=[3, 4, 5]

2.字典

通俗来讲,它也是一个列表,但是它的“下标”不再是以“0”开头的数字,而是让自己定义的“键”(key)开始。
创建一个字典的基本方法为:

d={'today':20,'tomorrow':30} #today/tomorrow就是字典的键,20/30则是键对应的值 d['today'] #该值为20 d['tomorrow'] #该值为30

通过dict()函数转换,或者通过dict.fromkeys来创建:

dict([['today',20],['tomorrow',30]]) #也相当于{'today':20,'tomorrow':30} 
dict.fromkeys(['today','tomorrow'],20) #相当于{'today':20,'tomorrow':20}

3.集合

和数学概念上的集合基本上是一致的。它与列表的区别:
a.在于它的元素的不重合的,而且是无序的;
b.它不支持索引。
一般我们用大括号{}或者set()来创建集合。
s={1,2,2,3} #2会自动去重,得到{1,2,3} s=set([1,2,2,3]) #同样会将列表转换为集合,得到{1,2,3}
集合的运算:

a = t | s #并集
b = t & s #交集
c = t - s #差集(项在t中,但不在s中)
d = t ^ s #对称差集(项在t或s中,但不会同时出现在二者中)

4.函数式编程

函数式编程主要由几个函数构成:lambda()、map()、reduce()、filter()

a、lambda():主要用来定义“行内函数”

b、map():类似于列表解析,例如:列表解析可以这样写 b =[i+2 for i in a],但是利用map函数我们可以这么写:

a=[1,2,3] 
b =map(lambda x: x+2,a)
b=list(b) 
print(b) #结果是[3,4,5]

注:在3.x需要b = list(b)这一步,在2.x就不需要。是因为在3.x中map函数进进是创建一个待运行的命令容器,只有其他函数调用它的时候才会返回结果。
map()也接受多参数的函数,如map(lambda x,y:x*y,a,b) 表示将a、b两个列表的元素对应相乘,把结果返回给新列表。map()命令和for循环的对比:列表解析本身还是for命令,在Python中for命令的执行效率不高,而map函数实现了相同的功能,而效率更高

c、reduce()函数:与map函数类似,map()用于逐一遍历,reduce()函数用于递归计算。例如:

reduce(lambda x,y : x\*y,range(1,n+1)) #可以计算n的阶乘

注:在2.x中,上述命令可以直接运行,在3.x中,reduce函数已经被移除了全局命名空间,置于fuctools库中,可通过from fuctools import reduce引入reduce。

上述代码也可用循环语句写成:

s=1 
for i in range(1,n+1): 
      s=s\*i

d、filter()函数:它是一个过滤器,用于筛选列表中符合条件的元素。例如:

b=filter(lambda x : x>5 and x<8,range(10)) 
b=list(b) 
print(b) #结果为[6, 7]

上述语句也可以用列表解析写出:

b=[i for i in range(10) if i>5 and i<8]

我们使用map()、reduce()、filter()最终的目的是兼顾简洁和效率,因为map()、reduce()、filter()的循环速度比Python内置的while和for循环快的多。

(4)库的导入和添加
1.库的导入:例如:导入math库
import math 
math.sin(1) #计算正弦 
math.exp(1) #计算指数 
math.pi #内置的圆周率常数

重命名库:

import math as m 
m.sin(1)

指定导入某个函数:

from math import exp as e 
e(1) help('modules') #获得已安装的所有模块名

2.导入futurn特征

使用2.x的用户可以通过引入futurn特征的方式兼容代码,如:

#将print变成函数形式,即用print(a)的方式输出:
from __futurn__ import print_function 
#3.x的3/2=1.5,3//2=1;2.x的3/2=1 
from __futurn__ import division

3.添加第三方库

以安装pandas为例:

打开cmd,输入 pip install pandas,点击回车即可

2.3 Python数据分析工具

Python数据挖掘相关扩展库
  • numpy:提供数组支持,以及相应的高效的处理函数
  • sicpy:提供矩阵支持,以及矩阵相关的数值计算模块
  • matplotlib:强大的数据可视化工具、作图库
  • pandas:强大、灵活的数据分析和探索工具
  • statsmodels:统计建模和计量经济学,包括描述统计、统计模型估计和推断
  • scikit-learn:支持回归、分类、聚类等的强大的机器学习库
  • keras:深度学习库,用于建立神经网络以及深度学习模型
  • gensim:用来做文本主题模型的库,文本挖掘可以用到
2.3.1 numpy

Python并没有提供真正的数组功能,而numpy则提供了真正的数组功能,它还是很多更高级库的依赖库,,例如scipy、matplotlib、pandas等。numpy内置函数的处理速度是C语言级别的,因此在编写函数的时候应当尽量的使用它们内置的函数,避免出现效率瓶颈的问题(尤其是涉及循环问题)。

安装numpy:

pip install numpy #在Windows中可以像安装其他第三方库一样用pip完成 python setup.py install #Windows还可自行下载源代码,然后用此代码安装 sudo apt-get install python-numpy #在Linux的Ubuntu下安装

numpy的基本操作:

#-\*- coding :utf-8 -\* 
import numpy as np #一般用np作为numpy的别名 
a = np.array([2,0,1,5]) #创建数组 
print(a) #打印结果 
print(a[:3]) #引用前3个数字(切片) 
print(a.min()) #输出a的最小值 
a.sort() #将a的元素从小到大排列,此操作直接修改a,print(a)为[0,1,2,5] 
print(a) 
b = np.array([[1,2,3],[4,5,6]]) #创建二维数组 
print(b\*b) #输出数组的平方阵[[1,4,9],[16,25,36]]

numpy官网:http://www.numpy.org/或者http://reverland.org/python/2012/08/12/numpy/

2.3.2 SciPy

SciPy包含的功能有最优化、线性代数、几份、插值、拟合、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。SciPy依赖于numpy,因此安装它之前需要先安装numpy,安装scipy和安装numpy在Windows平台上是一样的,直接用pip进行安装即可,sudo apt-get install python-scipy 在Linux的Ubuntu下安装。

SciPy求解非线性方程组和数值积分:

#-\*-coding:utf-8 -\* 
#求解非线性方程组2x1-x2^2=1,x1^2-x2=2 
from scipy.optimize import fsolve #导入求解方程组的函数 
def f(x): #定义要求解的方程组 
    x1=x[0] 
     x2=x[1]
return [2\*x1-x2\*\*2-1,x1\*\*2-x2-2] 
result = fsolve(f,[1,1]) #输出初值[1,1]并求解 
print(result) #数值积分 

from scipy import integrate #导入积分函数 
def g(x): #定义被积函数 
    return (1-x\*\*2)\*\*0.5 
pi_2,err = integrate.quad(g,-1,1) #积分结果和误差 
print(pi_2\*2) #有微积分知识知道积分结果为圆周率pi的一半

2.3.3 Matplotlib

主要用于绘制二维图,也可以进行简单的三维绘图。安装方法也和上述两个库的安装方法一致。

注:matplotlib对上级库的依赖较多,手动安装的时候需要吧这些库也逐一安装完成

matplotlib绘图的基本代码:

#-\*-coding:utf-8 -\* 
import numpy as np 
import matplotlib.pyplot as plt #导入matplotlib 

x = np.linspace(0,10,1000) #作图的变量自变量 
y = np.sin(x)+1 #因变量y 
z = np.cos(x\*\*2)+1 #因变量z
plt.figure(figsize=(8,4)) #设置图像大小 
plt.plot(x,y,label= '$\sin x+1$',color='red',linewidth=2) #作图,设置标签,线条颜色,线条大小 
plt.plot(x,z,'b--',label='$\cos x^2+1$') #作图,设置标签,线条类型 
plt.xlabel('Time(s)') #X轴名称 
plt.ylabel('Volt') #Y轴名称 
plt.title('A Simple Example') #标题 
plt.ylim(0,2.2) #显示Y轴范围 
plt.legend() #显示图例 
plt.show()

做出来的图如下:

img

以上代码做出来的图

如果使用的是中文标签,会发现中文标签无法正常显示。这是由于matplotlib的默认字体是英文导致的,解决办法是在作图之前手动将默认字体设置为中文字体,如黑体(SimHei):

plt.rcParams['font.sans-serif']=['SimHei'] #这句用来正常显示中文字体

如果保存图像负号不显示则可以用以下代码解决:

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

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

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值