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所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
👉二、Python必备开发工具
👉三、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉 四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
👉五、Python练习题
检查学习结果。
👉六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
(文末领读者福利)*
👉五、Python练习题
检查学习结果。
👉六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
[外链图片转存中…(img-Y9WVzX7H-1711092085122)]