欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > Python学习第三十天

Python学习第三十天

2025/4/17 22:05:55 来源:https://blog.csdn.net/weixin_37813118/article/details/147062510  浏览:    关键词:Python学习第三十天

数据分析

NumPy数值计算基础库

        官网:NumPy提供了高性能的多维数组对象和工具。

安装

# numpy为数组操作库 ipython 和jupyter类似于 numpy支持的窗口
pip install numpy ipython jupyter
# 启动ipython 查看是否成功ipython --version 退出模式exit
ipython
# jupyter启动 这个是有点类似于前端可视化的方式 运行
jupyter notebook

使用

numpy使用

import numpy as np
#  [0 1 2 3 4 5 6 7 8 9]
x = np.arange(10)
#  数组平方
y = x ** 2
print(x)
print(y)
# 保存你的数组
np.savez("x_y-squared.npz", x_axis=x, y_axis=y)
# 加载
load_xy = np.load("x_y-squared.npz")
# 打印两列
print(load_xy.files) # ['x_axis', 'y_axis']
# 获取打印
x = load_xy["x_axis"]
y = load_xy["y_axis"]
print(x)
print(y)

ipython使用

jupyter nodebook 运行后可以使用notebook使用%whos命令跟ipython使用一样的

命令行常用命令

命令行可以帮忙分析运行性能,提供更高效的代码编写、调试和探索功能

命令功能描述示例
%whos列出变量详细信息(类型/形状/值)%whos
%run运行外部 Python 脚本%run script.py
%timeit测量代码平均执行时间(多次运行)%timeit sum(range(1000))
%matplotlib设置 Matplotlib 绘图后端%matplotlib inline
%load从文件加载代码到当前单元格%load my_function.py
%debug进入事后调试器(分析报错)%debug
%cd快速切换工作目录%cd ~/projects
%ls列出当前目录文件%ls -l
%history查看历史命令记录%history 1-5
%reset清除所有变量(慎用)%reset -f
%who仅列出变量名(简版 %whos%who
%pdb自动进入调试模式(异常时)%pdb on
%prun代码性能分析(CPU 时间)%prun my_func()
%%writefile将单元格内容保存为文件%%writefile output.py
%autoreload自动重载修改的模块%autoreload 2

numpy常用方法和属性

方法/属性类型功能描述示例
np.array()方法创建数组arr = np.array([1, 2, 3])
arr.shape属性获取数组形状arr.shape → (3,)
arr.dtype属性获取数组数据类型arr.dtype → int64
np.arange()方法生成等差序列数组np.arange(0, 10, 2)
np.linspace()方法生成等间隔数组np.linspace(0, 1, 5)
np.zeros() / np.ones()方法创建全0或全1数组np.zeros((2, 3))
arr.reshape()方法改变数组形状(不修改数据)arr.reshape(3, 1)
np.random.rand()方法生成[0,1)均匀分布随机数组np.random.rand(2, 2)
arr.sum() / arr.mean()方法求和/均值arr.sum(axis=0)
np.dot() / @方法矩阵乘法A @ B
np.concatenate()方法数组拼接np.concatenate([a, b])
np.save() / np.load()方法保存/加载数组到文件np.save('data.npy', arr)
arr.T属性数组转置arr.T
np.where()方法条件筛选np.where(arr > 0)
np.unique()方法返回唯一值np.unique(arr)

Pandas数据分析工具

        官网概念:当处理表格数据时,例如存储在电子表格或数据库中的数据,pandas是您的理想工具。pandas将帮助您探索、清理和处理数据。在pandas中,数据表称为DataFrame。

安装

# 核心功能装
pip install pandas
# 选择带参数的
pip install "pandas[excel]"
# 测试
pip install "pandas[test]"

安装参数可选

可选参数功能描述包含的依赖库
pandas[excel]Excel 文件读写支持openpyxlxlsxwriterxlrd(仅读取旧版 .xls
pandas[parquet]Parquet 文件格式支持pyarrowfastparquet
pandas[sql]SQL 数据库操作支持SQLAlchemy
pandas[html]HTML 解析支持lxmlhtml5libbeautifulsoup4
pandas[xml]XML 解析支持lxml
pandas[clipboard]剪贴板操作支持pyqt5qtpy 或其他剪贴板后端
pandas[performance]性能优化(加速计算)numexprbottleneck
pandas[test]测试相关依赖(开发用)pytesthypothesis 等
pandas[compat]兼容性相关依赖如特定版本的 python-dateutil
pandas[all]安装所有可选依赖项(慎用)包含上述所有依赖

使用

    学习文档 :pandas中的基本数据结构,Pandas提供了两种类型的类来处理数据:

  • Series:一个包含任何类型数据的一维标记数组,例如整数、字符串、Python对象等。

  • DataFrame:一种二维数据结构,用于保存数据,如二维数组或具有行和列的表。

以上内容为翻译官网而来,使用ipython进入到命令行模式,如果内容很多使用cls命令清空。

Series常用方法

示例:s = pd.Series([1, 3, 5], index=['a', 'b', 'c'])

方法主要参数功能描述示例
values-返回 NumPy 数组

s.values 输出 

结果为:[1 3 5]

类型为:<class 'numpy.ndarray'>

index-返回索引对象s.index 输出 Index(['a', 'b', 'c'], dtype='object')
head(n)n=2(默认显示前5行,不填写n走默认)返回前n行

s.head(2) 输出

a    1
b    3
dtype: int64

tail(n)n=2(默认显示后5行,不填写n走默认)返回后2行

s.tail(2) 输出

b    3
c    5
dtype: int64

isna() / isnull()-检查缺失值(返回布尔Series)s.isna()
fillna(value)value(填充值)填充缺失值s.fillna(0)
dropna()-删除缺失值s.dropna()
map(func)func(函数或字典)元素级转换

s.map(lambda x: x*2) 输出

a     2
b     6
c    10
dtype: int64

apply(func)func(函数)应用函数

s.apply(np.sqrt) 输出

a    1.000000
b    1.732051
c    2.236068
dtype: float64

value_counts()normalize=False(是否标准化)统计唯一值频率

s.value_counts() 输出

1    1
3    1
5    1
Name: count, dtype: int64

sort_values()ascending=True(升序)按值排序

s.sort_values(ascending=False)

c    5
b    3
a    1
dtype: int64

unique()-返回唯一值数组

s.unique() 输出

[1 3 5]

DataFrame常用方法

示例:df = pd.DataFrame({'A': [1, 2,3], 'B': ['x', 'y','z']})

合并示例:官网中的例子也不错,可以去试试10分钟pandas。

df1 = pd.DataFrame({'Date': ['2025-04-08', '2025-04-08', '2023-01-02']*2,'City': ['Beijing', 'Shanghai']*3,'Category': ['Electronics', 'Clothing']*3,'Sales': [100, 150, 200, 50, 300, 120]
})
df2 = pd.DataFrame({'Date': ['2025-04-08', '2025-04-08', '2025-04-08']*2,'City': ['Beijing', 'chengdu']*3,'Category': ['Electronics', 'Clothing']*3,'Sales': [100, 150, 200, 50, 300, 120]
})
方法主要参数功能描述示例
head(n) / tail(n)n=5返回前/后n行

df.head(2)/df.tail(1) 输出

head(n)返回前n行:
   A  B
0  1  x
1  2  y
tail(n)返回后n行:
   A  B
2  3  z

shape-返回维度(行数, 列数)

df.shape  输出

(3, 2)

columns-返回列名列表

df.columns 输出

Index(['A', 'B'], dtype='object')

info()-显示数据类型和内存信息

df.info() 输出

describe()percentiles=[.25, .75]生成统计摘要(数值列)

df.describe() 输出

isna() / isnull()-检查缺失值(返回布尔DataFrame)df.isna()
fillna(value)value(填充值)填充缺失值df.fillna(0)
dropna()axis=0(行/列), how='any'/'all'删除缺失值

df.dropna(how='all') 输出

   A  B
0  1  x
1  2  y
2  3  z

drop(columns)columns(列名列表)删除指定列

df.drop(columns=['A']) 输出

   B
0  x
1  y
2  z

groupby()by(分组键)分组聚合

df.groupby('A').sum() 输出

   B
A   
1  x
2  y
3  z

agg(func)func(函数或字典)多列聚合(如summean

df.agg({'A': 'sum', 'B': 'max'}) 输出

A    6
B    z
dtype: object

sort_values()by(列名), ascending=True按值排序

df.sort_values(by=['A'], ascending=False)输出

   A  B
2  3  z
1  2  y
0  1  x

merge()right(合并对象), on(键)

合并DataFrame(类似SQL JOIN)

df1.merge(df2, on='City')输出

   

pivot_table()valuesindexcolumns生成透视表

pd.pivot_table(df1, values='Sales', index='City')输出

City                
Beijing   200.000000
Shanghai  106.666667

Matplotlib数据可视化

        官网:Matplotlib是Python的主要绘图库。

安装

pip install matplotlib

使用

import matplotlib.pyplot as plt
import numpy as np# 设置字体为黑体
plt.rcParams['font.family'] = ['SimHei']
x = np.linspace(0, 10, 100)
y = np.sin(x)# 创建画布
plt.figure(figsize=(8, 4))
# 创建折线图
plt.plot(x, y, label='sin(x)', color='blue', linestyle='--', linewidth=2)
# 创建柱状图help(plt.bar)
#plt.bar(x, y, label='sin(x)', color='blue', linestyle='--', linewidth=2)
plt.title("折线图", fontsize=14)
plt.xlabel("X轴", fontsize=12)
plt.ylabel("Y轴", fontsize=12)
plt.grid(True, alpha=0.3)
plt.legend()
# 保存图片 args的路径为项目根路径
plt.savefig('./day30/test_pandas/plot.png', dpi=300)
# plt.savefig('./day30/test_pandas/bar.png', dpi=300)
# 使用show会清空缓存区 所以会导致是白的图片 必须将savefig放到上面
plt.show()

常用图表类型速查表

图表类型方法主要参数适用场景
折线图plt.plot()xycolorlinestylelinewidthmarkerlabel趋势分析、时间序列
散点图plt.scatter()xys(大小), c(颜色), alphacmap相关性、分布关系
柱状图plt.bar()xheightwidthcoloredgecolorlabel分类数据对比
水平柱状图plt.barh()ywidth, 其他同bar()长类别名称或排名对比
直方图plt.hist()xbinsrangedensityalphaedgecolor数据分布统计
饼图plt.pie()xlabelsautopctexplodeshadow占比分析(类别≤6个)
箱线图plt.boxplot()xnotchvertpatch_artist数据离散度、异常值检测
面积图plt.fill_between()xy1y2alphacolor累积趋势或范围强调
热力图plt.imshow()Xcmapinterpolationvmin/vmax矩阵数据、相关性矩阵
3D曲面图Axes3D.plot_surface()XYZcmaprstridecstride三维数据可视化

核心方法分类表

1. 图形控制
方法作用示例
plt.figure()创建画布fig = plt.figure(figsize=(8,6))
plt.subplot()创建子图plt.subplot(2,2,1)
plt.subplots()批量创建子图(返回axes数组)fig, axes = plt.subplots(2,2)
plt.close()关闭图形plt.close('all')
2. 元素定制
方法作用示例
plt.title()添加标题plt.title("Sales", fontsize=14)
plt.xlabel()X轴标签plt.xlabel("Time")
plt.ylabel()Y轴标签plt.ylabel("Price", rotation=0)
plt.legend()显示图例plt.legend(loc='upper right')
plt.grid()显示网格plt.grid(True, linestyle=':')
plt.text()添加文本plt.text(2,5, "Peak")
3. 坐标轴控制
方法作用示例
plt.xlim()设置X轴范围plt.xlim(0, 100)
plt.ylim()设置Y轴范围plt.ylim(bottom=0)
plt.xticks()设置X轴刻度plt.xticks([0,1,2], ['A','B','C'])
plt.twinx()双Y轴(创建第二个Y轴)ax2 = ax1.twinx()
4. 样式设置
方法/参数作用示例
plt.style.use()使用预设样式plt.style.use('ggplot')
color颜色设置(支持名称/十六进制)color='#FF5733'
linestyle线型('-''--'':''-.'linestyle='--'
marker标记点('o''s''^''D'等)marker='o'
5. 输出保存
方法作用示例
plt.show()显示图形plt.show()
plt.savefig()保存图形plt.savefig('plot.png', dpi=300)

代码为day30处,maplotilib试一个就行了,其他的基本跟模版差不多不知道参数啥含义的可以直接查询官网或者使用查询函数的参数翻译可以得知。接下来的是第三段阶段scrapy框架和数据分析的练习,框架会解析某个网站将网站的验证码下载到本地本实现登录这两天会写个需求。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词