码农知识堂 - 1000bd
Python
PHP
JS/TS
JAVA
C/C++
C#
GO
Kotlin
Swift
读书笔记:《Python 和 Dask 数据科学》
文章目录
一. 可扩展计算
数据集规模
调度,扩展,并发和恢复
二. Dask
Dask 组件和层次
Dask 入门
三. Dask DataFrame
Dask 和 Pandas
数据:读取
数据:清理转换
数据:聚合分析
数据:可视化
四. Dask 部署
一. 可扩展计算
数据集规模
小规模数据集,可以装入内存,可以装入本地磁盘
Pandas,NumPy,scikit-learn
中规模数据集,不可以装入内存,可以装入本地磁盘
Dask 本地任务调度器
大规模数据集,不可以装入内存,不可以装入本地磁盘
Dask 分布式任务调度器
集群资源管理器:
Hadoop Yarn
Mesos
Kubernetes
调度,扩展,并发和恢复
任务调度器:有向无环图 DAG
扩展:
横向扩展:雇佣更多工人,需要在不同工人之间编排复杂任务
纵向扩展:升级设备,技术升级总会达到极限
并发和资源管理:任务调度器来决定如何处理资源的争用和锁定,避免资源的争用影响性能
失败中恢复:只运行失败的任务,已经完成的任务不需要重新运行
二. Dask
Dask 组件和层次
顶层 API:
Dask Array:NumPy
Dask Bag:Python List,非结构化数据
Dask DataFrame:Pandas
Dask ML:scikit-learn
序列化模型:pickle,dill
底层 API:
Dask delayed:lazy parallel objects
Dask Future:Eager parallel objects
Dask 子系统:调度器
Dask 入门
数据类型:
自动从数据推断数据类型,随机抽样
最好显式指定数据类型;或者使用显式指定数据类型的二进制文件格式存储数据(parquet)
跟踪正在运行的任务:from dask.diagnostics import ProgressBar
compute:运行计算任务 DAG 并输出结果
persist:将中间结果保存在内存中,不需要重新计算,persist 之前的计算任务会在 DAG 中删除
DAG 可视化:dd.visualiuze
任务调度:
跟踪中间结果的存储位置,将计算任务放在数据节点上运行,避免在网络上传输中间结果,提高运行效率
数据本地话,避免将数据在 worker 之间移动,使用分布式文件系统(S3,HDFS)
三. Dask DataFrame
Dask 和 Pandas
索引和轴:
索引:每行的标识符
轴:0轴沿着行,1轴沿着列
Pandas 经过高度优化,可以高效处理内存中的数据
Dask 分区:
npartitions
divisions:分区的边界
map_partitions:方法应用到每个分区
混洗 shuffle:将所有分区广播给所有 worker,发生于排序,分组和索引操作时,预先对数据进行排序,尽可能减少混洗操作
Dask 的局限性:没有扩展 Pandas 的所有操作
不支持更改 DataFrame 结构:stack,unstack,melt
关系操作涉及混洗成为性能瓶颈:join,merge,groupby,rolling
创建索引需要排序混洗
reset_index:不以分区感知的方式建立索引
数据:读取
数据类型:
显式指定,禁用类型推断
首先全部假定为 np.str 类型,读取后再 head 分析具体类型
np.nan 为 float32 类型,uint 无法存储
dask 只显示数字数据类型,非数字数字类型显示为 object
csv:带分隔符的文本文件
sql:关系型数据库
HDFS:可以在数据节点上运行计算
S3:仅作为数据存储服务
Parquet:
读写:fasetparquet,pyarrow
压缩:gzip,lzo,snappy
数据:清理转换
列操作:
选择列,删除列,重命名
创建新列:apply,assign
行操作:
选择行,loc,可以切片
缺失值:
》50%:删除列
5%~50%:缺失值填充
《5%:删除行
数据重编码:
where:替换 False 行
mask:替换 True 行
索引,排序,连接
索引已排序:search,filter
两表的索引已对齐:join
列轴连接:join
行轴连接:append
数据:聚合分析
相关性不意味着因果关系。
统计信息:
mean,std,min,max
偏度:
正偏度:大于中位数,减缓
负偏度:大于中位数,陡峭
dask_stats.skew
中位数:quantile(0.5)
describe
相关性:corr
聚合分组:
groupby
agg
自定义聚合对象:dd.Aggregation:
应用于每个分区的函数
聚合每个分区结果的函数
滑动窗口:
窗口大小不能跨越分区
默认前n个窗口,可以设置center=True
数据:可视化
安斯科姆四重奏:四个数据集具有相同的统计变量,但是具有不同的数据分布
Seaborn 可视化:基于 Matplotlib 的封装
可视化的价值在于能够快速直观地从数据中识别和洞察的能力,当可视化大量数据时,则难以观察
Datashader 可视化:
仅限位置数据
不需要降低采样
直接接受 Dask 对象
可以交互式可视化:holoviews,geoviews,bokeh
四. Dask 部署
Dask 集群在
AWS
中的架构:
Scheduler 调度器:从 Notebook 接受作业,协调工作节点
Worker 工作节点:接受任务并计算
Jupyter Notebook 服务器:提供前端允许用户运行代码
客户端:向用户展示结果
配置 AWS 集群:
生成安全密钥 Access Key
创建 ECS 集群
配置集群网络,安全组
配置文件系统 EFS
配置 Docker 镜像 ECR
创建调度器,工作节点,Notebook 服务器镜像
连接到集群
scheduler hostname:8787
notebook hostname:8888
显式传递调度器 URI,或者配置 DASK_SCHEDULER_ADDRESS 环境变量
相关阅读:
nodejs+vue游戏测评交流系统elementui
修改AVD默认存放位置
XML Schema(XSD)详解:定义 XML 文档结构合法性的完整指南
Guava入门~MapMaker
Kafka消息队列大数据实战教程-第三篇(Kafka分区和副本的创建)
linux 命令大全
Reid strong baseline知识蒸馏【附代码】
Python编程实例-Python网络编程中的一些概念
python中的继承
深入理解计算机系统(CSAPP) —— 第二章 信息的表示和处理
原文地址:https://blog.csdn.net/qq_39384184/article/details/127961829
最新文章
攻防演习之三天拿下官网站群
数据安全治理学习——前期安全规划和安全管理体系建设
企业安全 | 企业内一次钓鱼演练准备过程
内网渗透测试 | Kerberos协议及其部分攻击手法
0day的产生 | 不懂代码的"代码审计"
安装scrcpy-client模块av模块异常,环境问题解决方案
leetcode hot100【LeetCode 279. 完全平方数】java实现
OpenWrt下安装Mosquitto
AnatoMask论文汇总
【AI日记】24.11.01 LangChain、openai api和github copilot
热门文章
十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
奉劝各位学弟学妹们,该打造你的技术影响力了!
五年了,我在 CSDN 的两个一百万。
Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
面试官都震惊,你这网络基础可以啊!
你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
心情不好的时候,用 Python 画棵樱花树送给自己吧
通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
13 万字 C 语言从入门到精通保姆级教程2021 年版
10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系
2656653265@qq.com
京ICP备2022015340号-1
正则表达式工具
cron表达式工具
密码生成工具
京公网安备 11010502049817号