ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Python-100-Days 番外篇:按数据分析流程快速驾驭 pandas 库——三大核心类型与六阶段方法论

Python-100-Days 番外篇:按数据分析流程快速驾驭 pandas 库——三大核心类型与六阶段方法论 文档教程【免费下载链接】Python-100-DaysPython - 100天从新手到大师项目地址https://gitcode.com/GitHub_Trending/py/Python-100-Days点击查看免费下载本篇技术指南围绕 Python 数据科学生态中的核心库pandas系统梳理其三大核心类型Series、DataFrame、Index以及「数据获取 → 数据重塑 → 数据清洗 → 数据透视 → 数据呈现」的完整分析流程。文章以 番外篇/如何快速驾驭 pandas 库.md 为骨架并结合当前仓库 Day66-80 中「深入浅出 pandas」系列教程Day72Day77与配套 Notebook 代码进行源码级佐证。读完本文你将掌握 pandas 最常用的函数与方法清单、每个核心参数的含义与默认值以及一套「按流程学函数」的高效学习路径——无论是自学还是直接用它们完成一次真实的数据分析任务都能少走弯路。很多初学者面对 pandas 时最大的困惑是函数和方法太多不知道从哪儿学起、更不知道什么时候该用哪个。要解决这个问题最有效的做法不是逐个背 API而是按数据分析的流程来组织知识——每个阶段只掌握该阶段最常用的几个函数使用时按流程「对号入座」。本仓库在 Day72 - 深入浅出pandas-1 至 Day77 - 深入浅出pandas-6 中对该思路做了完整落地本文则给出浓缩版「速查手册」。三个核心类理解 pandas 的数据模型pandas 库有三个最核心的类其中最重要的是DataFrame类型它是学习的重点。在 Day72 - 深入浅出pandas-1 中同样强调pandas 以 NumPy 为基础实现数据存储和运算核心数据类型正是Series数据系列、DataFrame数据框外加一个为二者提供索引服务的Index类型及其子类型。Series表示一维数据跟一维数组类似带标签的数组每个数据都有自己的索引标签可以通过索引访问数据。从源码结构看Series内部包含两个数组——一个保存数据、一个保存索引。例如 Day66-80/72.深入浅出pandas-1.md 中通过列表加索引、以及通过字典创建Series的写法import pandas as pd # 通过列表 索引创建 ser1 pd.Series(data[120, 380, 250, 360], index[一季度, 二季度, 三季度, 四季度]) # 通过字典创建键即索引、值即数据 ser2 pd.Series({一季度: 320, 二季度: 180, 三季度: 300, 四季度: 405})DataFrame表示二维数据类似于 Excel 电子表格行和列都有自己的索引标签可以通过索引访问行、列、单元格。日常工作中DataFrame使用最广泛因为二维结构正好对应有行有列的表格。Index表示索引为Series和DataFrame提供索引服务。Index有很多子类型如DatetimeIndex、MultiIndex、CategoricalIndex等适用于需要不同类型索引的场景。学习建议把 90% 的精力放在DataFrame上因为它是二维数据的载体Series可以看作它的「一列」Index则是它的「行标签系统」。数据分析流程按阶段组织函数的黄金框架学习和使用 pandas 的重点是DataFrame的应用。建议大家按照数据分析的流程来掌握对应的函数和方法这样做往往事半功倍。下面的流程图中蓝色虚线圈中的部分就是可以通过 BI 工具如 Power BI、Tableau 等或 Python 程序来完成的部分。整个流程可以拆解为五个阶段下面逐一展开每个阶段给出完整可用的函数签名与参数说明。阶段一数据获取数据加载数据获取也可以称为数据加载其本质就是创建DataFrame对象需要掌握以下几个函数。1. 从 CSV 文件加载数据pd.read_csv是最高频的加载函数参数众多下面给出完整清单pd.read_csv( filepath, # CSV文件路径可以本地绝对路径或相对路径也可以是一个URL sep, # 字段分隔符默认是逗号 header, # 表头在第几行 encoding, # 文件编码默认utf-8 quotechar, # 包裹字符串的符号默认是双引号 usecols, # 加载哪些列 index_col, # 指定索引列 dtype, # 指定列的数据类型 converters, # 指定列的数据转换器 nrows, # 加载多少行数据 skiprows, # 指定需要跳过的行 parse_dates, # 将哪些列解析为日期时间 date_format, # 日期格式 true_values, # 被视为布尔值True的值 false_values, # 被视为布尔值False的值 na_values, # 被视为空值的值 na_filter, # 是否检测空值标记 on_bad_lines, # 遇到有问题的行如何处理可选项error、warn、skip engine, # 指定底层引擎例如可以使用更快的Arrow引擎来处理体量更大的数据 iterator, # 是否开启迭代器模式处理大数据时减少内存开销 chunksize, # 迭代器模式下每次加载数量的体量 )仓库中的真实用法可以印证这一点。Day66-80/73.深入浅出pandas-2.md 使用北京积分落户数据演示了index_col的用法df3 pd.read_csv(data/2018年北京积分落户数据.csv, index_colid)该教程还补充了两个实践细节读取路径建议使用/作为分隔符在 Windows 上若必须使用\建议在字符串前加r使用原始字符串如rc:\new\data\xxx.csv以避开转义字符。仓库配套的 Notebook Day66-80/code/day04.ipynb 中还有批量读取多个 CSV 并合并的示例dfs [pd.read_csv(os.path.join(res/jobs, filename)) for filename in ...]2. 从 Excel 文件加载数据pd.read_excel( io, # 工作簿文件的路径 sheet_name, # 工作表的名字 skip_footer, # 跳过末尾多少行 )说明read_excel函数跟read_csv有很多作用相同的参数这里没有赘述从 Excel 文件中加载数据时没有迭代器模式。在 Day66-80/73.深入浅出pandas-2.md 中一个工作簿内有多个以股票代码命名的工作表可通过sheet_name指定加载哪个df4 pd.read_excel(data/2022年股票数据.xlsx, sheet_nameAMZN, index_colDate)3. 从数据库或数仓加载数据pd.read_sql( sql, # SQL查询或二维表的名字 con, # 数据库连接 parse_dates, # 指定需要解析成日期的列 index_col, # 指定索隐裂 columns, # 需要加载的列 chunksize, # 加载数据的体量 dtype, # 指定列的数据类型 )其中的con参数需要传入数据库连接对象例如 MySQL 场景下可以用pymysql或mysqlclient创建Connection对象后传入这一用法在 Day66-80/73.深入浅出pandas-2.md 中「读取关系数据库二维表创建DataFrame对象」一节有完整示例。4. 其他创建 DataFrame 对象的方式# 方式一二维列表 索引 列名 pd.DataFrame(data[[95, 87], [66, 78], [92, 89]], index[1001, 1002, 1003], columns[Verbal, Math]) # 方式二字典键为列名值为列数据 索引 pd.DataFrame(data{Verbal: [95, 66, 92], Math: [87, 78, 89]}, index[1001, 1002, 1003])创建后必会的查看与访问操作如果要对DataFrame中的数据或索引进行操作需要掌握下面的运算和方法。# 1. 查看信息 df.info() # 2. 查看前/后 N 行 df.head(10) df.tail(5) # 3. 操作列 df[column_name] df.colume_name # 注意仅当列名是合法的Python标识符时可用 # 4. 操作行 df.loc[row_index] # 按标签索引名取行 df.iloc[0] # 按整数位置取行 # 5. 操作单元格 df.at[row_index, column_name] # 按标签取单元格 df.iat[0, 0] # 按整数位置取单元格结构调整删除、筛选、抽样、索引管理# 6. 删除行或列 df.drop( labels, # 要删除的行或列的索引 axis, # axis0labels表示行索引axis1labels表示列索引 index, # 要删除的行的索引 columns, # 要删除的列的索引 inplace, # 是否就地删除inplaceTrue表示就地删除不返回新DataFrame对象 ) # 7. 筛选数据 df.query(expr) # 通过表达式指定筛选条件 df[bool_index] # 布尔索引 # 8. 随机抽样 df.sampe( n, # 样本容量 frac, # 抽样比例 replace, # 有放回或无放回抽样默认值False random_state, # 随机数种子种子相同每次抽样的结果相同 ) # 9. 重置索引 df.reset_index( level, # 对于多级索引指定重置哪一级的索引 drop, # 是否丢弃索引dropFalse表示索引会被处理成普通列 inplace, # 是否就地处理要不要返回新的DataFrame对象 ) # 10. 设置索引 df.set_index( keys, # 指定作为索引的列 drop, # 是否删除作为索引的列默认值True append, # 是否将指定列加入现有的索引默认值False inplace, # 是否就地处理要不要返回新的DataFrame对象 verify_integrity, # 检查索引列是否存在重复值默认值False ) # 11. 调整索引顺序 df.reindex() df[fancy_index] # 花式索引 df.loc[facy_index] # 花式索引 df.iloc[fancy_index] # 花式索引 # 12. 索引排序 df.sort_index( axis, # 确定行索引或列索引默认值0 level, # 对于多级索引指定索引的级别 ascending, # 升序或降序默认值True inplace, # 是否就地排序 kind, # 排序算法默认值quicksort na_position, # 空值放在最前还是最后默认值last key, # 传入比较索引大小的函数自定义比较规则 )阶段二数据重塑拼接与合并数据重塑解决的是「多张表如何组合成一张表」的问题对应 SQL 中的UNION与JOIN两种语义。1. 拼接类似于 SQL 中的 union 操作pd.concat( objs, # 保存多个DataFrame对象的容器 axis, # 沿着哪个轴进行拼接 ignore_index, # 是否忽略原来的索引默认值False )Day66-80/74.深入浅出pandas-3.md 中提供了真实示例读取两张员工表后直接pd.concat([emp_df, emp2_df])完成纵向拼接形成完整的员工数据。2. 合并类似于 SQL 中的 join 操作pd.merge( left, # 左表 right, # 右表 how, # 指定连表的方式默认值inner表示内连接 on, # 指定连表字段如果左右两表连表字段同名 left_on, # 指定左表的连表字段 right_on, # 指定右表的连表字段 left_index, # 是否使用左表的索引连表 right_index, # 是否使用右表的索引连表 suffixes, # 指定同名列的后缀默认值(_x, _y) )同样在 Day66-80/74.深入浅出pandas-3.md 中将员工表与部门表通过howinner、ondno合并得到了员工所属部门信息这就是典型的按外键字段做等值连接。阶段三数据清洗缺失值、重复值、异常值与预处理数据清洗是分析流程中最耗时、也最考验经验的一环重点分四步走甄别 → 删除/填充 → 预处理。1. 缺失值处理# 甄别缺失值 df.isna() df.notna() # 删除缺失值 df.dropna( axis, # 删行或删列默认值0 how, # 是否存在任意一个缺失值就删除默认值any subset, # 只对哪些行或列删除空值 inplace, # 是否就地删除要不要返回新的DataFrame对象 ) # 填充缺失值 df.fillna( value, # 填充的值 method, # 填充空值的方法 inplace, # 是否就地填充要不要返回新的DataFrame对象 ) # 使用插值算法插值 df.interpolate( method, # 插值算法默认值linear表示线性插值法 axis, # 沿着哪个轴插值 inplace, # 是否就地插值要不要返回新的DataFrame对象 )Day66-80/74.深入浅出pandas-3.md 对此有详细展开dropna默认沿 0 轴删除整行指定axis1则删除整列fillna除了指定value还可以通过methodffill用前一个单元格的值填充、methodbfill用后一个单元格的值填充例如emp_df.fillna(value0)将空值统一置为 0。2. 重复值处理# 甄别重复值 df.duplicated( subset, # 用于判断重复的列标签 keep, # 如何处理重复项默认值first表示保留第一项 ) # 删除重复值 df.drop_duplicates( subset, # 用于判断重复的列标签 keep, # 如何处理重复项默认值first表示保留第一项 inplace, # 是否就地去重默认值False ) # 统计非重复值 df.nunique(axis)Day66-80/74.深入浅出pandas-3.md 中演示了两种典型场景dept_df.drop_duplicates(dname)按部门名称去重而all_emp_df.drop_duplicates([ename, job], inplaceTrue)同时以员工姓名和岗位两个字段判断重复并就地删除——注意keep参数可选first保留第一项、last保留最后一项或False重复项全部删除。3. 异常值处理异常值的处理重点在甄别可以使用数值判定法、z-score 判定法、孤立森林等方法来进行甄别离群点然后结合实际业务意义判定是不是异常值。对于异常值的处理通常是替换或删除删除可以用之前提到的drop方法删行或者删列。# 替换异常值 df.replace( to_replace, # 被替换的值 value, # 替换的值 inplace, # 是否就地替换要不要返回新的DataFrame对象 regex, # 是否启动正则表达式替换默认值False )该教程中还给出了批量替换的进阶用法emp_df.replace({sal: [1800, 9000], comm: 800}, {sal: avg_sal, comm: 1000})用字典同时指定多个被替换值与对应的替换值。4. 预处理Series 上的六大类操作预处理通常在Series对象上对数据进行操作假设变量s是一个Series对象。日期时间预处理s.dt.year # 年 s.dt.quarter # 季度 s.dt.month # 月 s.dt.day # 日 s.dt.hour # 时 s.dt.minute # 分 s.dt.second # 秒 s.dt.weekday # 星期几 s.dt.to_period(freq) # 以特定频率转换 s.dt.floor(freq) # 下取整 s.dt.ceil(freq) # 上取整 s.dt.round(freq) # 舍入 s.dt.strftime(date_format) # 格式化 s.dt.tz_localize(tz) # 时区本地化 s.dt.tz_convert(tz) # 转换时区字符串预处理s.str.lower() # 字符串变小写 s.str.upper() # 字符串变大写 s.str.title() # 字符串首字母大写 # 字符串拆分 s.str.split( pat, # 拆分字符或正则表达式 n, # 最大拆分次数 expand, # 是否将拆分后的内容展开成多个列默认值False ) # 从字符串中捕获内容 s.str.extract( pat, # 正则表达式 flags, # 正则表达式处理标记 expand, # 是否将捕获内容展开成多个列默认值True ) s.str.isalpha() # 检查字符串是不是字母 s.str.isnumeric() # 检查字符串是不是数值 s.str.isalnum() # 检查字符串是不是字母数字 s.str.isspace() # 检查字符串是不是空白字符 s.str.startswith() # 检查字符串是否以指定内容开头 s.str.endswith() # 检查字符串是否以指定内容结尾 # 检查字符串是否跟正则表达式匹配 s.str.match( pat, # 正则表达式 flags, # 正则表达式处理标记 ) # 检查字符串是否包含指定内容 s.str.contains( pat, # 字符串或正则表达式 flags, # 正则表达式处理标记 regex, # 是否使用正则表达式默认值True ) # 替换 s.str.replace( pat, # 被替换的内容字符串或正则表达式 repl, # 替换的内容 n, # 最大替换次数默认值-1表示全部替换 flags, # 正则表达式处理标记 regex, # 是否使用正则表达式默认值True ) s.str.strip() # 去掉字符串多余的空格 s.str.join(sep) # 用指定的分隔符将内容拼接成字符串 # 字符串拼接 s.str.cat( others, # 拼接的内容 sep, # 分隔符 na_rep, # 空值的替代符 ) s.str.len() # 获得字符串长度 # 查找子串的位置 s.str.find( sub, # 子串 start, # 起始位置 end, # 结束位置 )类别category预处理# 类别重排序 s.cat.reorder_categories( new_categories, # 新的类别顺序 inplace, # 是否就地处理默认值False ) # 添加类别 s.cat.add_categories( new_categories, # 要添加的新类别 inplace, # 是否就地处理默认值False ) # 移除类别 s.cat.remove_categories( removals, # 要移除的类别 inplace, # 是否就地处理默认值False ) # 移除没有使用的类别 s.cat.remove_unused_categories( inplace, # 是否就地处理默认值False ) # 类别重命名 s.cat.rename_categories( new_categories, # 新的类别名称 inplace, # 是否就地处理默认值False )二值化虚拟变量机器学习建模前常把类别型变量转换为 0/1 矩阵。pd.get_dummies( data, # 需要转换为虚拟变量的Series或DataFrame prefix, # 指定生成的虚拟变量列的前缀 prefix_sep, # 前缀和列名之间的分隔符 dummy_na, # 是否为空值NaN生成一个列默认值False columns, # 指定要转换的列名 drop_first, # 是否从生成的虚拟变量中删除第一个类别的列默认值False )离散化分箱将连续型变量切分为区间cut按等宽区间切分、qcut按分位数切分。pd.cut( x, # 要分割的输入数据一维数据 bins, # 分割的区间数或具体的区间边界 right, # 区间是否包含右端点默认值False labels, # 指定每个区间的标签 retbins, # 是否返回分割的边界数组默认值False ordered, # 返回的类别是否是有序的默认值True ) pd.qcut( x, # 要分割的输入数据一维数据 q, # 分割点的数量或具体的分位数 labels, # 指定每个区间的标签 retbins, # 是否返回分割的边界数组默认值False )自定义转换当内置函数无法满足需求时用map/apply/transform三个方法做灵活的元素级或行列级变换。s.map(arg) # 对数据进行元素级别的转换和映射 df.map(func) # 对数据进行元素级别的转换和映射 # 通过指定函数对数据进行元素级别的转换Series s.apply( func, # 作用于每个元素的函数 convert_type, # 尝试将结果转换为最适合的类型默认值True args, # 传递给func的额外位置参数 kwargs, # 传递给func的额外关键字参数 ) # 通过指定函数对数据进行行级或列级的转换DataFrame df.apply( func, # 作用域行或列的函数 axis, # 控制做行级还是列级转换 result_type, # 指定返回的类型expand表示扩展为列reduce表示返回标量broadcast表示广播为原始形状 args, # 传递给func的额外位置参数 kwargs, # 传递给func的额外关键字参数 ) s.transform(func) # 通过指定一个或多个函数对数据进行元素级别的转换 df.transform(func) # 通过指定一个或多个函数对数据进行行级或列级转换阶段四数据透视统计、聚合与透视表1. 描述性统计信息s.mean() # 均值 s.median() # 中位数 s.mode() # 众数 s.max() # 最大值 s.min() # 最小值 s.var(ddof) # 方差ddof代表自由度校正值 s.std(ddof) # 标准差ddof代表自由度校正值 s.skew() # 偏态系数 s.kurt() # 峰度系数2. 相关性分析df.cov() # 协方差 df.corr(method) # 相关系数默认pearson表示皮尔逊相关系数可选值还有kendall和spearmanDay66-80/76.深入浅出pandas-5.md 中用波士顿房价数据集演示了corr的实际用途boston_df[[NOX, RM, PTRATIO, LSTAT, PRICE]].corr()计算皮尔逊相关系数找出与房价正/负相关的特征再用corr(methodspearman)对比秩相关的结果。3. 排序和头部值# 排序Series s.sort_values( asending, # 升序或降序默认值True inplace, # 是否就地排序默认值False kind, # 排序算法默认值quicksort na_position, # 空值的位置默认值last key, # 指定比较元素的规则函数 ) # 排序DataFrame df.sort_values( by, # 排序的依据 ascending, # 升序或降序默认值True inplace, # 是否就地排序默认值False kind, # 排序算法默认值quicksort na_position, # 空值的位置默认值last key, # 指定比较元素的规则函数 ) # TopN元素头部Series s.nlargest( n, # 前N个最大值 keep, # 如何处理重复值默认值first ) # TopN元素头部DataFrame df.nlargest( n, # 前N个最大值 columns, # 指定用于排序的列名 keep, # 如何处理重复值默认值first ) # TopN元素尾部Series s.nsmallest( n, # 前N个最小值 keep, # 如何处理重复值默认值first ) # TopN元素尾部DataFrame df.nsmallest( n, # 前N个最小值 columns, # 指定用于排序的列名 keep, # 如何处理重复值默认值first )4. 分组聚合df.groupby( by, # 指定用于分组的列名 level, # 对于多级索引指定用哪一级分组 as_index, # 是否将分组的列设置为索引默认值True sort, # 是否对分组的结果进行排序默认值True observed, # 只考虑在数据中实际出现的分组默认值False ).aggregate( func, # 单个函数或函数列表 args, # 函数的可变参数 kwargs, # 函数的关键字参数 )Day66-80/75.深入浅出pandas-4.md 用 2020 年销售数据把这个流程讲透了四个递进例子非常有代表性# 按销售区域分组求销售额之和结果为Series df.groupby(销售区域).销售额.sum() # 按月份分组先用 dt.month 提取月份再分组 df.groupby(df[销售日期].dt.month).销售额.sum() # 多级分组每个销售区域每个月的销售总额 df.groupby([销售区域, df[销售日期].dt.month]).销售额.sum() # 多聚合函数agg 同时求总和、最大值、最小值并可重命名结果列 df.groupby(销售区域).销售额.agg(销售总额sum, 单笔最高max, 单笔最低min) # 对不同列使用不同聚合函数 df.groupby(销售区域)[[销售额, 销售数量]].agg({...})此外还有宽窄表互转的两个方法df.pivot(index..., columns..., values...)把「窄表」转成行少列多的宽表df.melt(id_vars..., value_vars..., var_name..., value_name...)把宽表「熔化」成长表。df.pivot( index, # 指定用作索引的列 columns, # 要作为新列的列 values, # 用于填充新DataFrame中的值的列 ) df.melt( id_vars, # 在转换过程中保持不变的列 value_vars, # 要转换为行的列 var_name, # 指定存储原列名的新列名 value_name, # 指定存储原数据值的新列名 )5. 透视表透视表的本质就是对数据进行分组聚合操作即根据 A 列对 B 列进行统计——用过 Excel 透视表的读者对此一定不陌生。index参数相当于「A 列」、values参数相当于「B 列」二者都可以是单列或多列。pd.pivot_table( data, # DataFrame对象 values, # 需要聚合的列 index, # 分组数据的字段行索引 columns, # 分组数据的字段列索引 aggfunc, # 聚合函数默认值mean fill_value, # 填充空值的值 margins, # 是否计算行列总计默认值False margins_name, # 总计列的名字默认值All observed # 只考虑在数据中实际出现的分组默认值False )Day66-80/75.深入浅出pandas-4.md 给出了从简到繁的三个例子# 统计每个销售区域的销售总额 pd.pivot_table(df, index销售区域, values销售额, aggfuncsum) # 统计每个销售区域每个月的销售总额两个行索引 pd.pivot_table(df, index[销售区域, 月份], values销售额, aggfuncsum) # 销售区域作行、月份作列空值补0并增加行列总计 pd.pivot_table(df, index销售区域, columns月份, values销售额, aggfuncsum, fill_value0, marginsTrue, margins_name总计)注意同样按单个列聚合时groupby返回Series而pivot_table返回DataFrame两者对象类型不同后续操作方式也不同。6. 交叉表交叉表是一种特殊的透视表它不需要先构造DataFrame对象而是直接通过数组或Series指定多个因素进行运算得到统计结果。pd.crosstab( index, # 交叉表中的行变量 columns, # 交叉表中的列变量 values, # 用于填充交叉表的值可选项 aggfunc, # 聚合函数可选项 margins, # 是否计算行列总计默认值False margins_name, # 总计列的名字默认值All )例如准备销售区域与销售月份两组Series后可用pd.crosstab(indexsales_area, columnssales_month, valuessales_amount, aggfuncsum).fillna(0).astype(i8)直接得到统计结果再通过fillna和astype完成空值补零与类型转换。阶段五数据呈现可视化数据分析的最后一步是呈现结论。pandas 内置的plot方法基于 matplotlib一行代码即可完成常用图表绘制。df.plot( figsize, # 图表尺寸二元组 kind, # 图表类型 ax, # 绘图的坐标系 x, # 横轴数据 y, # 纵轴数据 title, # 图表标题 grid, # 是否绘制网格 legend, # 是否显示图例 xticks, # 横轴刻度 yticks, # 纵轴刻度 xlim, # 横轴取值范围 ylim, # 纵轴取值范围 xlabel, # 横轴标签 ylabel, # 纵轴标签 rot, # 轴标签旋转角度 fontsize, # 轴标签字体大小 colormap, # 颜色系列 stacked, # 是否绘制堆叠图默认值False colorbar, # 是否显示色彩条 )plot方法最重要的参数是kind它可以控制图表的类型折线图kindline散点图kindscatter柱状图kindbar条状图水平柱状图kindbarh饼状图kindpie直方图kindhist箱线图kindbox面积图kindarea核密度估计图kindkde仓库中的例子Day66-80/75.深入浅出pandas-4.md 先在透视表上调用plot生成柱状图比较「每个销售区域的销售总额」Day66-80/76.深入浅出pandas-5.md 中result_df.plot(kindline, figsize(10, 6))则用折线图展示时间序列趋势。更丰富的 matplotlib 应用见 Day66-80/78.数据可视化-1.md 起的可视化系列文档。学习路线建议与仓库实践入口「按流程学函数」这套方法的核心价值在于每个阶段只记一组函数使用时按流程定位。建议找一个真实数据集例如本仓库 Day66-80/code/res/jobs 下的多城市职位数据 CSV或 Day66-80/code/res/2023年北京积分落户数据.csv按照「加载 → 查看 → 清洗 → 聚合 → 可视化」的顺序把本文涉及的函数完整走一遍印象会深刻很多。如果你希望系统性地深入学习 pandas本仓库提供了完整的配套教程Day72 - 深入浅出pandas-1Series与DataFrame的创建、运算、索引与切片Day73 - 深入浅出pandas-2read_csv/read_excel/read_sql数据加载细节Day74 - 深入浅出pandas-3concat/merge数据重塑缺失值与重复值清洗Day75 - 深入浅出pandas-4groupby分组聚合与pivot_table/crosstab透视表实战Day76 - 深入浅出pandas-5协方差、相关系数与时间序列分析Day77 - 深入浅出pandas-6更多进阶数据处理技巧配套可运行代码Day66-80/code/day04.ipynb 至 Day66-80/code/day06.ipynb 中包含了上述教程的全部可执行示例此外数据分析的前置铺垫NumPy与后续延伸可视化分别在 Day66-80/68.NumPy的应用-1.md 起的 NumPy 系列和 Day66-80/78.数据可视化-1.md 起的可视化系列中。需要说明的是随着数据体量增大业界也出现了 polars、cuDF 等 pandas 替代品但它们的核心 API 与使用方式跟 pandas 大同小异——吃透 pandas 这套流程方法论迁移到任何新工具上都能快速上手。总结驾驭 pandas 的关键不在于背下所有函数而在于建立「三大核心类型 五阶段分析流程」的知识地图。把本文的速查表保存下来在实际项目中按流程调用你就能从「思路混乱」走向「得心应手」。赞分享文档教程【免费下载链接】Python-100-DaysPython - 100天从新手到大师项目地址https://gitcode.com/GitHub_Trending/py/Python-100-Days点击查看免费下载相关推荐Python-100-Days 番外篇Python 容器使用小技巧实战指南Python 100 Days 番外篇Python 容器使用小技巧实战指南 本篇技术指南基于《Python 100 Days》开源教程的 番外篇文档 http文档教程Python-100-Days 番外篇读懂 Python 之禅Zen of Python 逐条精译与工程实践解读Python 100 Days 番外篇读懂 Python 之禅Zen of Python 逐条精译与工程实践解读 导读 Python 之禅Zen of文档教程Python-100-Days 的 pandas 数据分析进阶同比环比、窗口计算与相关性分析Python 100 Days 的 pandas 数据分析进阶同比环比、窗口计算与相关性分析 导读 在完成 pandas 的数据清洗与透视之后真正让分析产生文档教程上一篇全面战争模组工具 RPFM把发布即崩溃变成保存前查出问题下一篇ETS2LA 欧卡2自动驾驶辅助完整上手指南3步装好、30分钟上手、长途从此解放双脚创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表