三水顺德网站建设,看网站是不是WP做的,wordpress文字主题,国家企业信用信息公示系统官方文章目录 Numpy学习1 Numpy 介绍与应用1-1Numpy是什么 2 NumPy Ndarray 对象3 Numpy 数据类型4 Numpy 数组属性 Pandas学习1 pandas新增数据列2 Pandas数据统计函数3 Pandas对缺失值的处理 总结关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品P… 文章目录 Numpy学习1 Numpy 介绍与应用1-1Numpy是什么 2 NumPy Ndarray 对象3 Numpy 数据类型4 Numpy 数组属性 Pandas学习1 pandas新增数据列2 Pandas数据统计函数3 Pandas对缺失值的处理 总结关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 Numpy学习
1 Numpy 介绍与应用
1-1Numpy是什么 NumPy 是一个运行速度非常快的数学库一个开源的的python科学计算库主要用于数组、矩阵计算包含 一个强大的N维数组对象 ndarray广播功能函数整合 C/C/Fortran 代码的工具线性代数、傅里叶变换、随机数生成等功能 1-2 为什么选择Numpy 对于同样的数值计算任务使用Numpy比直接编写原生python代码的优点有 代码更简洁
Numpy直接以数组、矩阵为粒度计算并且支撑大量的数学函数而Python需要用for循环从底层实现
性能更高效
Numpy的数组存储效率和输入输出计算性能比Python使用List或者嵌套List好很多
**注意**Numpy的数据存储和Python原生的List是不一样的 加上Numpy的大部分代码都是C语言实现的这是Numpy比纯Python代码高效的原因
相关学习、代码如下须提前安装好Numpy、pandas和matplotlib **Numpy终端安装命令**pip install numpy **Pandas终端安装命令**pip install pandas **Matplotlib终端安装过命令**pip install matplotlib \# Software : PyCharm
# Numpy是Python各种数据科学类库的基础库
# 比如PandasScipyScikit\_Learn等
# Numpy应用NumPy 通常与 SciPyScientific Python和 Matplotlib绘图库一起使用 这种组合广泛用于替代 MatLab是一个强大的科学计算环境有助于我们通过 Python 学习数据科学或者机器学习。
SciPy 是一个开源的 Python 算法库和数学工具包。
SciPy 包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。
Matplotlib 是 Python 编程语言及其数值数学扩展包 NumPy 的可视化操作界面。它为利用通用的图形用户界面工具包如 Tkinter, wxPython, Qt 或 GTK 向应用程序嵌入式绘图提供了应用程序接口API。
# 安装 NumPy 最简单的方法就是使用 pip 工具
# pip3 install --user numpy scipy matplotlib
# --user 选项可以设置只安装在当前的用户下而不是写入到系统目录。
# 默认情况使用国外线路国外太慢我们使用清华的镜像就可以:
# pip install numpy scipy matplotlib -i.csv https://pypi.tuna.tsinghua.edu.cn/simple
# 这种pip安装是一种最简单、最轻量级的方法当然这里的前提是有Python包管理器
# 如若不行可以安装Anaconda【目前应用较广泛】这是一个开源的Python发行版
# 安装Anaconda地址https://www.anaconda.com/
# 安装验证
# 测试是否安装成功
from numpy import \* # 导入 numpy 库
print(eye(4)) # 生成对角矩阵
# 查看版本
import numpy as np
print(np.\_\_version\_\_)
# 实现2个数组的加法
# 1-原生Python实现
def Py\_sum(n):a \[i\*\*2 for i in range(n)\]b \[i\*\*3 for i in range(n)\]# 创建一个空列表便于后续存储ab\_sum \[\]for i in range(n):# 将a、b中对应的元素相加ab\_sum.append(a\[i\]b\[i\])return ab\_sum
# 调用实现函数
print(Py\_sum(10))
# 2-Numpy实现
def np\_sum(n):c np.arange(n) \*\* 2d np.arange(n) \*\* 3return cd
print(np\_sum(10))
# 易看出使用Numpy代码简洁且运行效率快
# 测试100010W以及100W的运行时间
# 做绘图对比
import pandas as pd
# 输入数据
py\_times \[1.72\*1000, 202\*1000, 1.92\*1000\]
np\_times \[18.8, 14.9\*1000, 17.8\*10000\]# 创建Pandas的DataFrame类型数据
ch\_lxw pd.DataFrame({py\_times: py\_times,np\_times: np\_times # 可加逗号
})
print(ch\_lxw)import matplotlib.pyplot as plt
# 线性图
print(ch\_lxw.plot())
# 柱状图
print(ch\_lxw.plot.bar())
# 简易箱线图
print(ch\_lxw.boxplot)plt.show()线性图运行效果如下 柱状图运行效果如下 2 NumPy Ndarray 对象 NumPy 最重要的一个特点是其 N 维数组对象 ndarray它是一系列同类型数据的集合以 0 下标为开始进行集合中元素的索引。 ndarray 对象是用于存放同类型元素的多维数组其中的每个元素在内存中都有相同存储大小的区域。ndarray 对象采用了数组的索引机制将数组中的每个元素映射到内存块上并且按照一定的布局对内存块进行排序行或列
ndarray 内部由以下内容组成
一个指向数据内存或内存映射文件中的一块数据的指针数据类型或 dtype描述在数组中的固定大小值的格子一个表示数组形状shape的元组表示各维度大小的元组一个跨度元组stride其中的整数指的是为了前进到当前维度下一个元素需要跨过的字节数。
相关学习、代码如下 创建一个 ndarray 只需调用 NumPy 的 array 函数即可
numpy.array(object, dtype None, copy True, order None, subok False, ndmin 0)
参数说明名称 描述
object 表示数组或嵌套的数列
dtype 表示数组元素的数据类型可选
copy 表示对象是否需要复制可选
order 创建数组的样式C为行方向F为列方向A为任意方向默认
subok 默认返回一个与基类类型一致的数组
ndmin 指定生成数组的最小维度# ndarray 对象由计算机内存的连续一维部分组成并结合索引模式将每个元素映射到内存块中的一个位置。
# 内存块以行顺序(C样式)或列顺序(FORTRAN或MatLab风格即前述的F样式)来保存元素# 学好Numpy便于后期对Pandas的数据处理
# 1:一维
import numpy as np
lxw np.array(\[5, 2, 0\])
print(lxw)
print()
# 2 多于一个维度
import numpy as np
lxw2 np.array(\[\[1, 5, 9\], \[5, 2, 0\]\])
print(lxw2)
print()
# 3: 最小维度
import numpy as np
lxw3 np.array(\[5, 2, 0, 1, 3, 1, 4\], ndmin2) # ndmin: 指定生成数组的最小维度
print(lxw3)
print()
# 4 dtype参数
import numpy as np
lxw4 np.array(\[3, 3, 4, 4\], dtypecomplex) # dtype: 数组元素的数据类型\[complex 复数】
print(lxw4)3 Numpy 数据类型 numpy 支持的数据类型比 Python 内置的类型要多很多基本上可以和 C 语言的数据类型对应上其中部分类型对应为 Python 内置的类型. 常用 NumPy 基本类型
名称 描述 bool_ :【布尔型数据类型True 或者 False】 int_ : 【默认的整数类型类似于 C 语言中的 longint32 或 int64】 intc :【与 C 的 int 类型一样一般是 int32 或 int 64】 intp :【用于索引的整数类型类似于 C 的 ssize_t一般情况下仍然是 int32 或 int64】 int8 :【字节-128 to 127】 int16 :【整数-32768 to 32767】 int32 :【整数-2147483648 to 2147483647】 int64 【整数-9223372036854775808 to 9223372036854775807】 uint8 【无符号整数0 to 255】 uint16 【无符号整数0 to 65535】 uint32 【无符号整数0 to 4294967295】 uint64 【无符号整数0 to 18446744073709551615】 float_ float64 【类型的简写】 float16 【半精度浮点数包括1 个符号位5 个指数位10 个尾数位】 float32 【单精度浮点数包括1 个符号位8 个指数位23 个尾数位】 float64 【双精度浮点数包括1 个符号位11 个指数位52 个尾数位】 complex_ complex128 【类型的简写即 128 位复数】 complex64 【复数表示双 32 位浮点数实数部分和虚数部分】 complex128 【复数表示双 64 位浮点数实数部分和虚数部分】
相关学习、代码如下 # numpy 的数值类型实际上是 dtype 对象的实例并对应唯一的字符包括 np.bool\_np.int32np.float32等等。# Numpy 类型对象dtype 对象是使用以下语法构造的numpy.dtype(object, align, copy)object - 要转换为的数据类型对象
align - 如果为 true填充字段使其类似 C 的结构体。
copy - 复制 dtype 对象 如果为 false则是对内置数据类型对象的引用
# 1: 使用标量类型
import numpy as np
lxw np.dtype(np.int32)
print(lxw)
print()
# 2: int8, int16, int32, int64 四种数据类型可以使用字符串 i1, i2,i4,i8 代替
import numpy as np
lxw2 np.dtype(i8) # int64
print(lxw2)
print()
# 3: 字节顺序标注
import numpy as np
lxw3 np.dtype(i4) # int32
print(lxw3)
print()
# 4: 首先创建结构化数据类型
import numpy as np
lxw4 np.dtype(\[(age, np.int8)\]) # i1
print(lxw4)
print()
# 5: 将数据类型应用于 ndarray 对象
import numpy as np
lxw5 np.dtype(\[(age, np.int32)\])
a np.array(\[(10,), (20,), (30,)\], dtypelxw5)
print(a)
print()
# 6: 类型字段名可以用于存取实际的 age 列
import numpy as np
lxw6 np.dtype(\[(age, np.int64)\])
a np.array(\[(10,), (20,), (30,)\], dtypelxw6)
print(a\[age\])
print()
# 7: 定义一个结构化数据类型 student包含字符串字段 name整数字段 age及浮点字段 marks并将这个 dtype 应用到 ndarray 对象
import numpy as np
student np.dtype(\[(name, S20), (age, i2), (marks, f4)\])
print(student) # 运行结果\[(name, S20), (age, i2), (marks, f4)\]
print()
# 8:
import numpy as np
student2 np.dtype(\[(name,S20), (age, i1), (marks, f4)\])
lxw np.array(\[(lxw, 21, 52), (cw, 22, 58)\], dtypestudent2)
print(lxw) # 运行结果\[(blxw, 21, 52.) (bcw, 22, 58.)\]
# 每个内建类型都有一个唯一定义它的字符代码如下字符 对应类型
b 布尔型
i.csv (有符号) 整型
u 无符号整型 integer
f 浮点型
c 复数浮点型
m timedelta时间间隔
M datetime日期时间
O (Python) 对象
S, a (byte-)字符串
U Unicode
V 原始数据 (void)4 Numpy 数组属性 在 NumPy中每一个线性的数组称为是一个轴axis也就是维度dimensions。 比如说二维数组相当于是两个一维数组其中第一个一维数组中每个元素又是一个一维数组。
相关代码学习、如下
\# NumPy 的数组中比较重要 ndarray 对象属性有属性 说明
ndarray.ndim 秩即轴的数量或维度的数量
ndarray.shape 数组的维度对于矩阵n 行 m 列
ndarray.size 数组元素的总个数相当于 .shape 中 n\*m 的值
ndarray.dtype ndarray 对象的元素类型
ndarray.itemsize ndarray 对象中每个元素的大小以字节为单位
ndarray.flags ndarray 对象的内存信息
ndarray.real ndarray元素的实部
ndarray.imag ndarray 元素的虚部
ndarray.data 包含实际数组元素的缓冲区由于一般通过数组的索引获取元素所以通常不需要使用这个属性。
# ndarray.ndim
# ndarray.ndim 用于返回数组的维数等于秩。
import numpy as np
lxw np.arange(36)
print(lxw.ndim) # a 现只有一个维度
# 现调整其大小
a lxw.reshape(2, 6, 3) # 现在拥有三个维度
print(a.ndim)
print()
# ndarray.shape
# ndarray.shape 表示数组的维度返回一个元组这个元组的长度就是维度的数目即 ndim 属性(秩)。比如一个二维数组其维度表示行数和列数。
# ndarray.shape 也可以用于调整数组大小。
import numpy as np
lxw2 np.array(\[\[169, 175, 165\], \[52, 55, 50\]\])
print(lxw2.shape) # shape: 数组的维度
print()
# 调整数组大小:
import numpy as np
lxw3 np.array(\[\[123, 234, 345\], \[456, 567, 789\]\])
lxw3.shape (3, 2)
print(lxw3)
print()
# NumPy 也提供了 reshape 函数来调整数组大小:
import numpy as np
lxw4 np.array(\[\[23, 543, 65\], \[32, 54, 76\]\])
c lxw4.reshape(2, 3) # reshape: 调整数组大小
print(c)
print()
# ndarray.itemsize
# ndarray.itemsize 以字节的形式返回数组中每一个元素的大小。# 例如一个元素类型为 float64 的数组 itemsize 属性值为 8(float64 占用 64 个 bits,
# 每个字节长度为 8所以 64/8占用 8 个字节又如一个元素类型为 complex32 的数组 item 属性为 432/8
import numpy as np
# 数组的 dtype 为 int8一个字节
x np.array(\[1, 2, 3, 4, 5\], dtypenp.int8)
print(x.itemsize)
# 数组的dtypy现在为float64(八个字节
y np.array(\[1, 2, 3, 4, 5\], dtypenp.float64)
print(y.itemsize) # itemsize: 占用字节个数
# 拓展
# 整体转化为整数型
print(np.array(\[3.5, 6.6, 8.9\], dtypeint))
# 设置copy参数默认为True
a np.array(\[2, 5, 6, 8, 9\])
b np.array(a) # 复制a
print(b) # 控制台打印b
print(fa: {id(a)}, b: {id(b)}) # 可打印出a和b的内存地址
print(\*20)
# 类似于列表的引用赋值
b a
print(fa: {id(a)}, b: {id(b)})
# 创建一个矩阵
lxw5 np.mat(\[1, 2, 3, 4, 5\])
print(type(lxw5)) # 矩阵类型 class numpy.matrix
# 复制出副本并保持原类型
yy np.array(lxw5, subokTrue)
print(type(yy))
# 只复制副本不管其类型
by np.array(lxw5, subokFalse) # False: 使用数组的数据类型
print(type(by))
print(id(yy), id(by))
print(\*20)
# 使用数组的copy()方法
c np.array(\[2, 5, 6, 2\])
cp c.copy()
print(id(c), id(cp))
print()
# ndarray.flagsndarray.flags 返回 ndarray 对象的内存信息包含以下属性
属性 描述
C\_CONTIGUOUS (C) 数据是在一个单一的C风格的连续段中
F\_CONTIGUOUS (F) 数据是在一个单一的Fortran风格的连续段中
OWNDATA (O) 数组拥有它所使用的内存或从另一个对象中借用它
WRITEABLE (W) 数据区域可以被写入将该值设置为 False则数据为只读
ALIGNED (A) 数据和所有元素都适当地对齐到硬件上
UPDATEIFCOPY (U) 这个数组是其它数组的一个副本当这个数组被释放时原数组的内容将被更新
import numpy as np
lxw4 np.array(\[1, 3, 5, 6, 7\])
print(lxw4.flags) # flags: 其内存信息Pandas学习 当然做这些的前提是首先把文件准备好
文件准备
文件太长故只截取了部分当然此文件可自行弄类似的也可以 1 pandas新增数据列 在进行数据分析时经常需要按照一定条件创造新的数据列然后再进一步分析 直接赋值df.apply()方法df.assign()方法按条件进行分组分别赋值
\# 1:
import pandas as pd# 读取数据
lxw pd.read\_csv(sites.csv)# print(lxw.head())
df pd.DataFrame(lxw)
# print(df)
df\[lrl\] df\[lrl\].map(lambda x: x.rstrip(%))
# print(df)
df.loc\[:, jf\] df\[yye\] - df\[sku\_cost\_prc\]
# 返回的是Series
# print(df.head())
# 2:
def get\_cha(n):if n\[yye\] 5:return 高价elif n\[yye\] 2:return 低价else:return 正常价
df.loc\[:, yye\_type\] df.apply(get\_cha, axis1)
# print(df.head())
print(df\[yye\_type\].value\_counts())
# 3:
# 可同时添加多个新列
print(df.assign(yye\_bhlambda x: x\[yye\]\*2-3,sl\_zjlambda x: x\[sku\_cnt\]\*6
).head(10))
# 4:# 按条件先选择数据然后对这部分数据赋值新列
# 先创建空列
df\[zyye\_type\] df.loc\[df\[yye\] - df\[sku\_cnt\]8, zyye\_type\] 高
df.loc\[df\[yye\] - df\[sku\_cnt\] 8, zyye\_type\] 低
print(df.head())下面分别是每个小问对应运行效果
1 2 3 4 2 Pandas数据统计函数
\# Pandas数据统计函数1-汇总类统计
2-唯一去重和按值计数
3-相关系数和协方差import pandas as pd
lxw pd.read\_csv(nba.csv)
# print(lxw.head(3))
# 1:
# 一下子提取所有数字列统计结果
print(lxw.describe())
# 查看单个Series的数据
print(lxw\[Age\].mean())
# 年龄最大
print(lxw\[Age\].max())
# 体重最轻
print(lxw\[Weight\].min())
# 2:
# 2-1 唯一性去重【一般不用于数值项而是枚举、分类项】
print(lxw\[Height\].unique())
print(lxw\[Team\].unique())
# 2-2 按值计算
print(lxw\[Age\].value\_counts())
print(lxw\[Team\].value\_counts())
# 3:
# 应用股票涨跌、产品销量波动等等对于两个变量X、Y
1-协方差衡量同向程度程度如果协方差为正说明X、Y同向变化协方差越大说明同向程度越高如果协方差为负说明X、Y反向运动协方差越小说明方向程度越高。
2-相关系数衡量相似度程度当他们的相关系数为1时说明两个变量变化时的正向相似度最大当相关系数为-1说明两个变化时的反向相似度最大。
# 协方差矩阵
print(lxw.cov())
# 相关系数矩阵
print(lxw.corr())
# 单独查看年龄和体重的相关系数
print(lxw\[Age\].corr(lxw\[Weight\]))
# Age和Salary的相关系数
print(lxw\[Age\].corr(lxw\[Salary\]))
# 注意看括号内的相减
print(lxw\[Age\].corr(lxw\[Salary\]-lxw\[Weight\]))1: 2-1: 部分2-2 3 3 Pandas对缺失值的处理
特殊Excel的读取、清洗、处理
\# Pandas对缺失值的处理函数用法
1-isnull和notnull: 检测是否有控制可用于dataframe和series
2-dropna: 丢弃、删除缺失值
2-1 axis: 删除行还是列{0 or index, 1 or columns}, default()
2-2 how: 如果等于any 则任何值都为空都删除如果等于all所有值都为空才删除
2-3 inplace: 如果为True则修改当前dataframe,否则返回新的dataframe
2-4 value: 用于填充的值可以是单个值或者字典key是列名value是值
2-5 method: 等于ffill使用前一个不为空的值填充forword fill;等于bfill使用后一个不为空的值填充backword fill
2-6 axis: 按行还是按列填充{0 or index, 1 or columns}
2-7 inplace: 如果为True则修改当前dataframe否则返回新的dataframe
# 特殊Excel的读取、清洗、处理
import pandas as pd
# 1: 读取excel时忽略前几个空行
stu pd.read\_excel(Score表.xlsx, skiprows14) # skiprows: 控制在几行以下
print(stu)
# 2: 检测空值
print(stu.isnull())
print(stu\[成绩\].isnull())
print(stu\[成绩\].notnull())
# 筛选没有空成绩的所有行
print(stu.loc\[stu\[成绩\].notnull(), :\])
# 3: 删除全是空值的列
# axis: 删除行还是列{0 or index, 1 or columns}, default()
# how: 如果等于any 则任何值都为空都删除如果等于all所有值都为空才删除
# inplace: 如果为True则修改当前dataframe否则返回新的dataframe
stu.dropna(axiscolumns, howall, inplaceTrue)
print(stu)
# 4: 删除全是空值的行
stu.dropna(axisindex, howall, inplaceTrue)
print(stu)
# 5: 将成绩列为空的填充为0分
stu.fillna({成绩: 0})
print(stu)
# 同上
stu.loc\[:, 成绩\] stu\[成绩\].fillna(0)
print(stu)
# 6: 将姓名的缺失值填充【使用前面的有效值填充用ffill forward fill】
stu.loc\[:, 姓名\] stu\[姓名\].fillna(methodffill)
print(stu)
# 7: 将清洗好的Excel保存:
stu.to\_excel(Score成绩\_clean.xlsx, indexFalse)1: 2 ![在这里插入图片描述 3: 4: 5: 6: 总结
今天我学习了处理python数据分析的另一个库——Numpy刚开始接触这个库的时候真的感觉没什么意思可学的越深入一点越觉得越有意思当然昨天的那个库也挺不错的主要是Numpy这个是学Pandas的基础得打好基础当然也不会落下Pandas的学习 关于Python技术储备
学好 Python 不论是就业还是做副业赚钱都不错但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料给那些想学习 Python 的小伙伴们一点帮助
保存图片微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】 一、Python所有方向的学习路线
Python所有方向的技术点做的整理形成各个领域的知识点汇总它的用处就在于你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。
二、Python基础学习视频
② 路线对应学习视频
还有很多适合0基础入门的学习视频有了这些视频轻轻松松上手Python~在这里插入图片描述
③练习题
每节视频课后都有对应的练习题哦可以检验学习成果哈哈 因篇幅有限仅展示部分资料
三、精品Python学习书籍
当我学到一定基础有自己的理解能力的时候会去阅读一些前辈整理的书籍或者手写的笔记资料这些笔记详细记载了他们对一些技术点的理解这些理解是比较独到可以学到不一样的思路。
四、Python工具包项目源码合集
①Python工具包
学习Python常用的开发软件都在这里了每个都有详细的安装教程保证你可以安装成功哦
②Python实战案例
光学理论是没用的要学会跟着一起敲代码动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战案例来学习。100实战案例源码等你来拿
③Python小游戏源码
如果觉得上面的实战案例有点枯燥可以试试自己用Python编写小游戏让你的学习过程中增添一点趣味
五、面试资料
我们学习Python必然是为了找到高薪的工作下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料并且有阿里大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。
六、Python兼职渠道
而且学会Python以后还可以在各大兼职平台接单赚钱各种兼职渠道兼职注意事项如何和客户沟通我都整理成文档了。 这份完整版的Python全套学习资料已经上传CSDN朋友们如果需要可以保存图片微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】