读入数据,genre 取值的频次统计如下
a = df[“genre”].value_counts()
a
Action,Adventure,Sci-Fi 50
Drama 48
Comedy,Drama,Romance 35
Comedy 32
Drama,Romance 31
..
Adventure,Comedy,Fantasy 1
Biography,History,Thriller 1
Action,Horror 1
Mystery,Thriller,Western 1
Animation,Fantasy 1
Name: genre, Length: 207, dtype: int64
筛选出 top3 的 index:
top_genre = vc[0:3].index
print(top_genre)
使用得到的 top3 的 index ,结合 isin,选择出相应的 df
df_top = df[df["genre"].isin(top_genre)]
df_top
ETL基础概念-过程
ETL处理分为五大模块,分别是:数据抽取、数据清洗、库内转换、规则检查、数据加载。各模块可灵活进行组合,形成ETL处理流程。简单介绍一下各个模块之间的主要功能。
数据抽取
- 确定数据源,需要确定从哪些源系统进行数据抽取
- 定义数据接口,对每个源文件及系统的每个字段进行详细说明
- 确定数据抽取的方法:是主动抽取还是由源系统推送?是增量抽取还是全量抽取?是按照每日抽取还是按照每月抽取?
数据清洗与转换
数据清洗
主要将不完整数据、错误数据、重复数据进行处理
数据转换
- 空值处理:可捕获字段空值,进行加载或替换为其他含义数据,或数据分流问题库
- 数据标准:统一元数据、统一标准字段、统一字段类型定义
- 数据拆分:依据业务需求做数据拆分,如身份证号,拆分区划、出生日期、性别等
- 数据验证:时间规则、业务规则、自定义规则
- 数据替换:对于因业务因素,可实现无效数据、缺失数据的替换
- 数据关联:关联其他数据或数学,保障数据完整性
数据加载
将数据缓冲区的数据直接加载到数据库对应表中,如果是全量方式则采用LOAD方式,如果是增量则根据业务规则MERGE进数据库
触发器模式
触发器方式是普遍采取的一种增量抽取机制。该方式是根据抽取要求,在要被抽取的源表上建立插入、修改、删除3个触发器,每当源表中的数据发生变化,就被相应的触发器将变化的数据写入一个增量日志表,ETL的增量抽取则是从增量日志表中而不是直接在源表中抽取数据,同时增量日志表中抽取过的数据要及时被标记或删除。
为了简单起见,增量日志表一般不存储增量数据的所有字段信息,而只是存储源表名称、更新的关键字值和更新操作类型(insert、update或delete),ETL增量抽取进程首先根据源表名称和更新的关键字值,从源表中提取对应的完整记录,再根据更新操作类型,对目标表进行相应的处理。
优点:
数据抽取的性能高,ETL 加载规则简单,速度快,不需要修改业务系统表结构,可以实现数据的递增加载。
缺点:
要求业务表建立触发器,对业务系统有一定的影响,容易对源数据库构成威胁。