手把手学爬虫第五弹——数据清洗与数据分析,近期想跳槽的程序员必看

array([[1, 2],

[2, 3],

[4, 5]])

  • 使用zeros()函数

zerios()函数创建元素值都是0的数组

import numpy as np

np.zeros((3,5))

ans:

array([[0., 0., 0., 0., 0.],

[0., 0., 0., 0., 0.],

[0., 0., 0., 0., 0.]])

  • 使用ones()函数

ones()函数创建元素值都为1的数组

import numpy as np

np.ones((3,4))

ans:

array([[1., 1., 1., 1.],

[1., 1., 1., 1.],

[1., 1., 1., 1.]])

  • 使用empty()函数

import numpy as np

np.empty((5,2))

ans:

array([[2.37663529e-312, 2.05833592e-312],

[2.05833592e-312, 2.18565567e-312],

[8.48798317e-313, 9.33678148e-313],

[1.01855798e-312, 1.12465777e-312],

[1.42421024e-306, 1.42410974e-306]])

  • 使用arange()函数

import numpy as np

np.arange(1,20,5)

ans:

array([ 1, 6, 11, 16])

利用NumPy数组进行数据处理
  • 将条件逻辑转为数组运算

NumPy的where()函数是三元表达式x if condition else y的矢量版本。

import numpy as np

arr1=np.array([1,5,7])

arr2=np.array([2,6,8])

arr3=np.array([True,False,True])

res = np.where(arr3,arr1,arr2)

res

ans:

上面的代码的意思是根据arr3里的布尔值,

如果为True的话取arr1对应下标的数组元素,

如果为False的话取arr2对应下标的元素

array([1, 6, 7]);

  • 数组统计运算

arr = np.arange(10)

arr

array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

arr.mean() # 求平均值

4.5

arr.sum() # 求和

45

arr.min() # 求最小值

0

arr.max() # 求最大值

9

arr.argmin() # 求最小值的索引

0

arr.argmax() # 求最大值的索引

9

arr.cumsum() # 计算元素累加和

array([ 0, 1, 3, 6, 10, 15, 21, 28, 36, 45], dtype=int32)

arr.cumprod()# 计算元素累计积

array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=int32)

数据分析工具Pandas

初识Pandas

Pandas 是一个开放源码、BSD 许可的库,提供高性能、易于使用的数据结构和数据分析工具。Pandas 一个强大的分析结构化数据的工具集,基础是 Numpy(提供高性能的矩阵运算)。Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据。Pandas 可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征。

Pandas数据结构
Series

Series 类似表格中的一个列(column),类似于一维数组,可以保存任何数据类型。

pandas.Series( data, index, dtype, name, copy)

参数说明:

data:一组数据(ndarray 类型)。

index:数据索引标签,如果不指定,默认从 0 开始。

dtype:数据类型,默认会自己判断。

name:设置名称。

copy:拷贝数据,默认为 False。

  • 创建方式1

import pandas as pd

obj=pd.Series([1,2,3,4,5])

obj

ans:

使用构造方法创建Series对象

第一列是索引,第二列是数据

0 1

1 2

2 3

3 4

4 5

dtype: int64

  • 创建方式2

obj=pd.Series([1,2,3,4,5],index=[‘a’,‘b’,‘c’,‘d’,‘e’])

obj

ans:

使用构造方法创建Series对象时指定索引

第一列是索引,第二列是数据

a 1

b 2

c 3

d 4

e 5

dtype: int64

  • 创建方式3

dic_data = {‘a’:12,‘b’:14,‘c’:20}

obj = pd.Series(dic_data)

obj

ans:

使用字典的方式创建

a 12

b 14

c 20

dtype: int64

DataFrame

DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)。

pandas.DataFrame( data, index, columns, dtype, copy)

参数说明:

data:一组数据(ndarray、series, map, lists, dict 等类型)。

index:索引值,或者可以称为行标签。

columns:列标签,默认为 RangeIndex (0, 1, 2, …, n) 。

dtype:数据类型。

copy:拷贝数据,默认为 False。

  • 创建方式1

import numpy as np

import pandas as pd

arr_data = np.array([[‘a’,‘b’,‘c’,],[‘d’,‘e’,‘f’]])

pd.DataFrame(arr_data)

ans:

基于数组创建

0 1 2

0 a b c

1 d e f

  • 创建方式2

import numpy as np

import pandas as pd

arr_data = np.array([[‘a’,‘b’,‘c’,],[‘d’,‘e’,‘f’]])

pd.DataFrame(arr_data, columns=[‘N1’, ‘N2’, ‘N3’])

ans:

指定索引创建

N1 N2 N3

0 a b c

1 d e f

  • 根据索引获取值

import numpy as np

import pandas as pd

arr_data = np.array([[‘a’,‘b’,‘c’,],[‘d’,‘e’,‘f’]])

obj=pd.DataFrame(arr_data, columns=[‘N1’, ‘N2’, ‘N3’])

obj[‘N2’] # 根据索引获取值

ans:

0 b

1 e

Name: N2, dtype: object

  • 通过属性访问

import numpy as np

import pandas as pd

arr_data = np.array([[‘a’,‘b’,‘c’,],[‘d’,‘e’,‘f’]])

obj=pd.DataFrame(arr_data, columns=[‘N1’, ‘N2’, ‘N3’])

obj.N2 # 通过属性访问

ans:

0 b

1 e

Name: N2, dtype: object

  • 添加数据

import numpy as np

import pandas as pd

arr_data = np.array([[‘a’,‘b’,‘c’,],[‘d’,‘e’,‘f’]])

obj=pd.DataFrame(arr_data, columns=[‘N1’, ‘N2’, ‘N3’])

obj[‘N4’]=[‘f’,‘g’] # 按索引添加数据

obj

ans:

N1 N2 N3 N4

0 a b c f

1 d e f g

  • 删除数据

import numpy as np

import pandas as pd

arr_data = np.array([[‘a’,‘b’,‘c’],[‘d’,‘e’,‘f’]])

obj=pd.DataFrame(arr_data, columns=[‘N1’, ‘N2’, ‘N3’])

obj[‘N4’]=[‘f’,‘g’]

del obj[‘N2’] # del 删除数据

obj

ans:

N1 N3 N4

0 a c f

1 d f g

Pandas索引操作以及高级索引
索引对象

Pandas中的索引都是index对象,又称为索引对象,该对象不可修改。

索引对象不可修改的特性非常重要,这样使得多个数据结构之间能够很安全的共享index对象。

obj1=pd.Series(range(3),index=[‘a’,‘b’,‘c’])

obj2=pd.Series([‘a’,‘b’,‘c’],index=obj1.index)

obj1.index is obj2.index

ans:

True

重置索引

reindex()方法作用是对原索引和新索引进行匹配,即,新索引有缘索引的数据,而原索引数据按照新索引排序。

index, columns:要符合的新标签/索引

method:None 、 backfill 、 bfill、pad、ffill、nearest可选

fill_value:可指定填充缺失值

limit:向前或向后填充的最大连续元素数

DataFrame.reindex(labels=None, index=None, columns=None, axis=None, method=None, copy=True, level=None, fill_value=nan, limit=None, tolerance=None)

obj=pd.Series([1,2,3,4,5],index=[‘a’,‘b’,‘c’,‘d’,‘e’])

obj

obj1=obj.reindex([‘a’,‘b’,‘c’,‘x’,‘y’,‘z’]) # 重置索引

obj1

ans:

a 1.0

b 2.0

c 3.0

x NaN

y NaN

z NaN

dtype: float64

索引操作
  • Series索引操作

Series的索引用法类似于Numpy数组的索引,但是Series的索引既可以通过索引的位置获取、也可以通过索引的名称获取。

obj=pd.Series([1,2,3,4,5],index=[‘a’,‘b’,‘c’,‘d’,‘e’])

obj[‘b’] # 通过索引的名称获取

obj[1] # 通过索引的位置获取

ans:

2

  • 获取不连续的数据

obj=pd.Series([1,2,3,4,5],index=[‘a’,‘b’,‘c’,‘d’,‘e’])

obj[‘b’]

ans:

b 2

d 4

f 6

dtype: int64

  • DataFrame的索引操作

DataFrame结构既可以包含行索引、也可以包含列索引。其中,行索引是通过index属性进行获取,列索引是通过columns属性进行获取。

import numpy as np

import pandas as pd

arr_data = np.array([[‘a’,‘b’,‘c’,],[‘d’,‘e’,‘f’]])

obj=pd.DataFrame(arr_data, columns=[‘N1’, ‘N2’, ‘N3’])

obj.N2

ans:

0 b

1 e

Name: N2, dtype: object

  • DataFrame获取不连续的Series对象

import numpy as np

import pandas as pd

arr_data = np.array([[‘a’,‘b’,‘c’,],[‘d’,‘e’,‘f’]])

obj=pd.DataFrame(arr_data, columns=[‘N1’, ‘N2’, ‘N3’])

obj[[‘N1’,‘N3’]] # 不连续的Series对象

ans:

N1 N3

0 a c

1 d f

  • 索引高级操作

loc:基于标签索引(索引名称),用于按标签选取数据。执行切片操作时,既包含起始索引又包含结束索引。

iloc:基于位置索引(整数索引),用于按位置选取数据。执行切片操作时,只包含起始索引,不包含结束索引。

import numpy as np

import pandas as pd

arr_data = np.array([[‘a’,‘b’,‘c’,‘d’,‘e’],[‘d’,‘e’,‘f’,‘g’,‘h’]])

obj=pd.DataFrame(arr_data, columns=[‘N1’, ‘N2’, ‘N3’,‘N4’,‘N5’])

obj.loc[:,[‘N2’,‘N5’]] # 基于标签索引

obj.iloc[:,[1,4]] # 基于位置索引9999999999999999999999999999999999

ans:

N2 N5

文末有福利领取哦~

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

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

👉二、Python必备开发工具

img
👉三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
img

👉 四、实战案例

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

👉五、Python练习题

检查学习结果。
img

👉六、面试资料

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

img

👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
img

(文末领读者福利)*
img

👉五、Python练习题

检查学习结果。
img

👉六、面试资料

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

img

👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
[外链图片转存中…(img-Y9WVzX7H-1711092085122)]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值