5个Python自动化脚本,直接省出8小时EDA时间!数据人必看
一、数据人的痛点被这5个脚本终结了搞数据的那群人里面, 每个人都经历过EDA带来的苦头, 开启一个不熟悉的数据集时, 就处在像拆盲盒那样毫无办法着手的情况, 查看里面缺失的值, 绘制分布情况的图, 寻觅出现异常的数值, 可以说一套这类流程走下来, 大半天的时间就这么没了, 明明做的都是那种有着重复性质的活计, 却还是不得不依靠手动去敲代码, 为此忙碌到深夜了都还没触及到数据分析的关键之处。进一步而言, 更令人心痛的是, 众多的数据分析师, 每天将百分之八十的时间, 均耗费于这类“毫无成效的反复操作”之上。而真正能够用于探寻数据价值之所在, 以及产出核心内容的时间, 连百分之二十都达不到。那么, 难道就不存在任何方法, 能够据此摆脱这种自我消耗的状态吗?有着答案存在, 早就能够达成EDA自动化, 只是好多人依旧在埋头进行手动操作, 今日所分享的5个脚本, 能够直接借助自动化达成EDA核心任务, 将原本数小时的工作量压缩直至几分钟, 使得数据人从重复性劳动当中解脱出来。在此需要着重提醒一点, 自动化并非包揽一切之事毫无不能之处的, 它能够协助你节省下一定的时间, 可是却没办法替代你去进行动脑思考, 真正具有关键意义的核心所在之处, 乃是运用脚本节省而来的时刻, 去开展更具价值的进行分析举动, 就这样此才是数据人之间形成差距的重要因素。先告知大家一个关键技术背景, 文中所用到的库, 、、, 全部都是开源免费的, 不用付费就能够使用, 其中在上星标高达38.8k, 是数据处理的必备工具, 星标28.3k, 星标11.2k, 这三者搭配起来使用, 几乎可以覆盖所有EDA基础需求, 上手难度低, 新手也能够快速套用。二、核心拆解5个脚本覆盖EDA全流程可直接复制使用在正式开启之前, 要先去厘定一个前提条件: 所有的脚本都是基于其运行的, 大家仅仅只需要把自身的数据集像是CSV格式这种加载到其中, 便能够直接去调用脚本, 并不需要进行额外的修改核心代码的操作。接下来逐个去进行拆解, 每一个皆会附上完整的代码以及使用说明, 哪怕是新手也能够依照着去操作。脚本1数据集概览脚本——10秒摸清数据“底细”作为第一步来执行相关操作时, 必然是要去知晓数据集的基本架构的, 具体涵盖如下方面, 有多少列, 每一列属于何种数据类型, 存在多少缺失值, 具备多少唯一值。要是依靠手动方式逐一对待每列进行查看, 不但速度迟缓, 而且极易出现差错。然而, 这个脚本能够以一键的形式生成结构化的汇总内容, 助力你在较短时间内清晰地掌握数据的详细情况。import pandas as pd def dataset_profile(df): # 生成数据集概览表格包含列名、数据类型、缺失值、唯一值 profile pd.DataFrame({ Column: df.columns, Data Type: df.dtypes.values, Missing Values: df.isnull().sum().values, Unique Values: df.nunique().values }) return profile # 加载数据集替换为你的数据文件路径 df pd.read_csv(data.csv) # 调用函数打印概览结果 print(dataset_profile(df))说明使用方法: 仅需把代码里的data.csv...替换成你自己的数据集路径, 像那个 “销售数据.csv。”运行以后可以得到每一列的详细内容, 并不需要再亲手输入()、df.().()等指令, 直接达成目标。脚本2分布可视化脚本——自动生成所有数值列分布图数据分布的了解属于EDA的核心步骤范畴, 数值列所呈现的分布状况, 直接对后续的分析及建模方向起到决定作用。依靠手动方式逐列去绘制直方图、密度图, 不但耗费时间, 并且极易出现格式方面不统一的情况, 而此脚本能够自动识别全部的数值列, 批量生成可供可视化的图表。使用前需先安装依赖库命令如下# 安装Matplotlib和Seaborn库终端或命令行输入 pip install matplotlib seaborn完整脚本import matplotlib.pyplot as plt import seaborn as sns def plot_distributions(df): # 筛选所有数值类型的列float64、int64 numeric_cols df.select_dtypes(include[float64,int64]).columns # 为每一列生成直方图和密度图 for col in numeric_cols: plt.figure(figsize(6,4)) # 设置图表大小 sns.histplot(df[col], kdeTrue) # 绘制直方图密度图 plt.title(fDistribution of {col}) # 图表标题 plt.show() # 显示图表 # 调用函数df为已加载的数据集 plot_distributions(df)按照使用说明, 在运行脚本之后, 就会自动生出独立图表, 针对每一个数值列, 从而能够清晰看到数据的偏态、数据的峰值, 可以快速发现数据之中所存在的异常分布, 就像是极端值集中、分布不均等情况, 这样就省去了手动去写循环绘图的麻烦之处。脚本3相关性分析脚本——热力图一键可视化变量关系挖掘数据关联, 关键在于变量之间的相关性, 像销售额与广告投入的相关性, 还有用户年龄与消费金额的相关性。手动计算相关系数并绘制热力图, 步骤不仅繁琐, 还容易出错, 而这个脚本能够一键生成相关性热力图, 可直观呈现变量间的关联强度。import seaborn as sns import matplotlib.pyplot as plt def correlation_heatmap(df): # 计算所有数值列的相关系数 corr df.corr() # 绘制热力图 plt.figure(figsize(10,6)) # 设置图表大小 sns.heatmap(corr, annotTrue, cmapcoolwarm) # annotTrue显示相关系数 plt.title(Correlation Heatmap) # 图表标题 plt.show() # 显示图表 # 调用函数df为已加载的数据集 correlation_heatmap(df)相关系数的计算说明: 脚本针对所有数值列进行自动计算, 计算得出的相关系数会通过热力图来予以呈现, 其中红色代表着强正相关, 蓝色代表着强负相关, 并且数值越是靠近1或者-1, 那么相关性也就越强。后续在开展特征选择以及变量分析工作时, 直接依据热力图便能够快速地筛选出关键变量。脚本4异常值检测脚本——快速定位数据中的“异常分子”处于EDA里, 最容易被忽视, 然而却对分析结果有着极大影响的问题便是异常值如销售额里的极端数值、用户年龄当中的异常数据, 一旦有所忽略, 便会直接致使分析结论被扭曲、而让模型准确率降低, 此脚本是运用IQ方法也就是四分位距去自动侦察所有数值列中的异常值不需要手动进行计算。def detect_outliers(df): # 筛选所有数值类型的列 numeric_cols df.select_dtypes(include[float64,int64]).columns # 逐个列检测异常值 for col in numeric_cols: Q1 df[col].quantile(0.25) # 第一四分位数 Q3 df[col].quantile(0.75) # 第三四分位数 IQR Q3 - Q1 # 四分位距 # 定义异常值范围超出Q1-1.5*IQR或Q31.5*IQR的为异常值 outliers df[(df[col] Q1 - 1.5 * IQR) | (df[col] Q3 1.5 * IQR)] # 打印每列的异常值数量 print(f{col}: {len(outliers)} potential outliers detected) # 调用函数df为已加载的数据集 detect_outliers(df)说明: 运行完毕后, 会直接打印出每一列的异常值数量, 并不需要人工手动去计算四分位距, 也不用去判断异常值范围。在后续阶段, 只需要针对那些异常值较多的列实施清洗操作, 像进行删除或者替换等行为, 如此便能够提升数据质量。脚本5缺失值分析脚本——一键统计缺失值占比在真实数据集里, 缺失值呈现为一种常态, 这同时也是EDA必须要去解决的问题, 对于缺失值过多的列而言, 有可能是需要将其删除的, 而那些缺失值较少的列, 则能够进行填充操作, 手动去统计每一列的缺失值以及占比情况, 会耗费时间并且还容易出现遗漏, 然而这个脚本却能够一键生成缺失值汇总表, 清晰地把每列的缺失状况呈现出来。def missing_data_summary(df): # 统计每列缺失值数量 missing df.isnull().sum() # 计算每列缺失值占比百分比 percent (missing / len(df)) * 100 # 生成缺失值汇总表按缺失占比降序排列 summary pd.DataFrame({ Missing Values: missing, Percentage: percent }) return summary.sort_values(Percentage, ascendingFalse) # 调用函数打印缺失值汇总表 print(missing_data_summary(df))有这样一个使用说明, 运行之后, 会得到这样一个汇总表, 它是按照缺失占比来进行降序排列的, 通过这个汇总表能够快速地定位出缺失值较多的列, 比如说, 要是某一列的缺失占比超过了50%, 那么这一列, 可能就需要直接删除掉, 这样就能为后续的数据清洗提供一个明确的方向了。补充EDA自动化完整 直接套用把上面那5个脚本组合到一块儿, 就能够形成一套完整的EDA自动化流程, 不需要手动去切换步骤, 按照顺序运行就行。以“数据路径.csv”加载数据集, 形成df, 运行数据集概览脚本, 要摸清数据结构, 运行分布可视化脚本, 去查看数值列分布, 运行相关性分析脚本, 挖掘变量关联, 运行异常值检测脚本, 定位异常数据并运行缺失值分析脚本, 处理缺失数据。一套流程进行下来, 原本需要花费三至八小时来手动完成的 EDA, 仅仅只需要花费几分钟便能够弄好, 其效率直接便实现了翻倍。三、辩证分析自动化EDA是帮手还是“懒人陷阱”不容置疑, 这五个脚本能够给从事数据工作的人节省诸多时间使其摆脱因反复劳作引发的内耗, 这乃其核心价值所在, 特别是针对那些日常需要应对多个数据集、进行批量分析的人而言, 自动化的脚本堪称提升效率的“神器”。可是我们绝不能够盲目地去依赖自动化, 因为它也是存在着明显限制条件的。先要知道, 脚本仅仅是能够完成“标准化”的那种EDA任务, 对于特殊场景譬如非结构化数据的异常值, 或是特殊业务场景下的缺失值处理这些内容它是处理不了的其次, 脚本只能够去呈现数据现象这一部分而已, 对于现象背后所蕴含的业务逻辑它是无法进行解读说明的——就好比说脚本能查测出来某一列存在着异常值, 然而却没有办法判定这个异常值究竟是属于数据错误, 还是真正的那种业务异常情况像是不期而至的大额订单之类状况。更为关键的点在于, 好多新手极易陷入这样的误区: 仅仅去跑脚本, 而不进行思考, 他们觉得跑完5个脚本, 便完成了EDA, 然而却忽视了对脚本输出结果的解读, 最终依旧没办法挖掘出有价值的。这里给诸位一个恰当的提议, 自动化脚本属于“工具”范畴, 并非“替代者”。其功效在于协助你省却重复性劳作, 使你拥有更多时间去思索“数据何以如此这般”, “此异常值背后蕴含何种业务缘由”, “变量相关性能导向怎样的业务决策”, 而这才是数据分析师的关键竞争力所在, 亦是自动化所无法取代的。四、现实意义为什么现在的数据人必须学会EDA自动化在如今数据岗位竞争愈发激烈的状况下, “会做EDA”已并非优势, “能够高效地将EDA做好”才算是拉开差距的关键所在。诸多的数据分析师加班众多且效率低下, 并非是由于能力欠缺而是把大量时间耗费在了重复性的劳动上面。学会用自动化EDA有三个不可替代的现实意义其一, 具备节省时间、提升效率的特性, 借由将原本耗时几小时的 EDA 工作, 压缩至仅仅几分钟, 进而能够拥有更多时间去开展核心分析、与业务进行对接, 无需再因重复工作而去熬夜, 并且能够更为快速地得出分析成果, 从而获取到领导以及业务方的认可。其二, 要确保分析具备一致性, 手动进行 EDA 的话, 很容易出现操作方面的失误, 就像有可能会漏查某一列的缺失值, 绘图的时候格式还不统一, 然而脚本却是固定不变的, 不管去处理多少个数据集, 它都能够维持一贯的分析流程, 进而可以避免因为人为的失误而对分析结果造成影响。三, 把入门门槛降低, 去助力新手成长。刚进入这个行业的数据新手会怎样呢, EDA的重复步骤会很容易就让人产生挫败感。而这些脚本, 是能够直接复制来使用的。这样做的话, 既能快速地完成工作, 又能在使用期间熟悉, 等工具的用法, 从而快速提升自身能力。特别是处于大数据时代, 数据集合变得越发庞大, 其类型也愈发繁杂多样, 依靠手动方式进行探索性数据分析已然难以契合工作所需, 自动化成为必然的发展趋向——要是能够越快掌握这些脚本, 便能够越早从重复性劳动当中解脱出来, 在数据相关的岗位上前行得更远了。五、互动话题你做EDA时最头疼的是什么想必不少从事数据工作的人都曾历经这般状况: 辛辛苦苦耗费大半天时间去开展 EDA, 到头来却发觉遗漏了对异常值的排查, 于是不得不再次从头做起又或者是手动进行绘图操作, 然而画到中途才察觉到格式存在问题, 无奈之下只能将所有内容推倒重来, 一切都得返工。这些5个脚本, 恰好能够解决这些痛点, 然而, 每个人的工作场景并不相同, 因而遇到的问题也存在差异。留言区交流一下: 平日里你搞 EDA 时, 最让你犯难的是哪一步咧? 是进行缺失值处理, 还是开展异常值检测, 亦或是开展可视化绘图? 你有没有自己常常会用到的 EDA 自动化技巧? 分享出来呵, 一道帮数据从业者节省时间、提升效率