Pandas Cheat Sheet:pandas 数据整理(Data Wrangling)一页速查手册

发布时间:2026/9/18 20:13:22
Pandas Cheat Sheet:pandas 数据整理(Data Wrangling)一页速查手册 Pandas Cheat Sheetpandas 数据整理Data Wrangling一页速查手册【免费下载链接】pandasFlexible and powerful data analysis / manipulation library for Python, providing labeled data structures similar to R data.frame objects, statistical functions, and much more项目地址: https://gitcode.com/gh_mirrors/pa/pandasPandas Cheat Sheet 是 pandas 官方仓库维护的“一页纸”数据整理速查手册浓缩了从创建 DataFrame、筛选子集、重塑melt/pivot、合并merge到类型转换、日期时间访问器、绘图与文件 I/O 的全部高频操作。本文完整复刻并扩写了该速查表的三大板块内容并结合仓库源码指出关键 API 的落点读完即可把它当作日常写 pandas 代码时的检索式参考。Cheat Sheet 是什么速查表本体由 doc/cheatsheet/README.md 说明其核心事实如下该手册使用 Microsoft PowerPoint 2013 制作在 PPT 中执行“另存为 PDF”即可得到 PDF 版本原稿由 Princeton Consultants 的 Irv Lustig 编写灵感来自 RStudio 的 Data Wrangling Cheatsheet提供三种语言版本其中英文版包含其他语言版本没有的额外内容版本PDFPPTX英文EnglishPandas_Cheat_Sheet.pdfPandas_Cheat_Sheet.pptx日文JapanesePandas_Cheat_Sheet_JA.pdfPandas_Cheat_Sheet_JA.pptx波斯文PersianPandas_Cheat_Sheet_FA.pdfPandas_Cheat_Sheet_FA.pptxREADME 还提到一个“替代方案”DataCamp 以 PDF、Google Colab 和 Streamlit 三种形式发布的 Pandas Cheat Sheet详见 README 末尾表格此处不复述外链。仓库中这 6 个文件位于 doc/cheatsheet/ 目录可直接查看或下载打印。速查表整体遵循“Tidy Data整洁数据”这一基础理念每个变量variable存于各自独立的列、每个观测observation存于各自独立的行。README 与 PPT 首页均强调整洁数据与 pandas 的向量化操作天然契合操作变量时 pandas 会自动保持观测的对齐没有比这更符合 pandas 直觉的数据格式。以下各节按 PPT 三页幻灯片的脉络完整展开。一、创建 DataFrameCreating DataFrames速查表给出了三种构造 DataFrame 的典型写法。1. 按列指定值字典形式df pd.DataFrame( {a: [4, 5, 6], b: [7, 8, 9], c: [10, 11, 12]}, index[1, 2, 3] )2. 按行指定值二维列表形式df pd.DataFrame( [[4, 7, 10], [5, 8, 11], [6, 9, 12]], index[1, 2, 3], columns[a, b, c] )3. 带 MultiIndex 的 DataFramedf pd.DataFrame( {a: [4, 5, 6], b: [7, 8, 9], c: [10, 11, 12]}, indexpd.MultiIndex.from_tuples( [(d, 1), (d, 2), (e, 2)], names[n, v] ) )二、筛选行逻辑条件与 query速查表将“按逻辑条件抽取行”作为独立小节核心写法有布尔索引df[df.Length 7]—— 提取满足逻辑条件的行正则列名筛选df.filter(regexregex)—— 选出列名匹配正则表达式的列字符串正则匹配配合str访问器df.query(Name.str.startswith(abc), enginepython)成员判断df.column.isin(values)—— 判断列值是否属于给定集合空值判断pd.isnull(obj)是 NaN与pd.notnull(obj)不是 NaN。Python/pandas 逻辑运算符速查来自 PPT 第一页的对照表符号含义符号含义小于等于!不等于小于或等于大于大于或等于,\|,~,^逻辑 and、or、not、xordf.any(),df.all()逻辑 any、allquery()用法query()支持用布尔表达式按行筛选且可直接用列名书写df.query(Length 7) df.query(Length 7 and Width 8)抽样与排序选择类操作同一页右侧列出的高频方法代码作用df.drop_duplicates()删除重复行只考虑列值df.sample(frac0.5)随机抽取 50% 的行df.sample(n10)随机抽取 10 行df.nlargest(n, value)选取并排序前 n 大的条目df.nsmallest(n, value)选取并排序前 n 小的条目df.head(n)选取前 n 行df.tail(n)选取后 n 行三、子集操作loc / iloc / at / iat 与正则PPT 将子集操作划分为“子集观测行”“子集变量列”“行列同时选”三类核心规则是第一索引选行第二索引选列。代码作用df[width]或df.width按名称选择单列df[[width, length, species]]按名称选择多列df.iloc[10:20]选择第 10 至 20 行位置索引df.iloc[:, [1, 2, 5]]选择位置 1、2、5 的列第一列位置为 0df.loc[:, x2:x4]选择 x2 到 x4 之间的全部列含边界df.loc[df[a] 10, [a, c]]满足条件的行 指定列df.iat[1, 2]按索引位置访问单个值df.at[4, A]按标签访问单个值速查表的总结句值得记住用df.loc[]和df.iloc[]选行、选列或行列用df.at[]和df.iat[]访问单个值。正则表达式示例PPT 首页给出的 5 个例子均针对列名匹配正则含义\.匹配包含句点.的字符串Length$匹配以Length结尾的字符串^Sepal匹配以Sepal开头的字符串^x[1-5]$匹配以x开头、以 1–5 之一结尾的字符串^(?!Species$).*匹配除Species之外的所有字符串负向先行断言四、重塑数据Reshapingmelt、pivot、concat 与方法链这一节是速查表的第一大板块主题是“改变布局、排序、重排索引、重命名”代码作用pd.melt(df)将列聚集为行宽表 → 长表df.pivot(columnsvar, valuesval)将行摊开为列长表 → 宽表pd.concat([df1, df2])纵向拼接行pd.concat([df1, df2], axis1)横向拼接列df.sort_values(mpg)按某列的值升序排列行df.sort_values(mpg, ascendingFalse)按某列的值降序排列行df.rename(columns{y: year})重命名列df.sort_index()对索引排序df.reset_index()把索引重置为行号原索引变成列df.drop(columns[Length, Height])删除指定列方法链Method Chaining大多数 pandas 方法都会返回 DataFrame因此可以把一个方法的结果继续交给下一个方法PPT 给出的示例df (pd.melt(df) .rename(columns{variable: var, value: val}) .query(val 200) )PPT 原话指出由于多数方法返回 DataFrame代码可读性得以提升。源码佐证melt的实现位于 pandas/core/reshape/melt.py函数melt见 L45 起DataFrame.melt与DataFrame.pivot分别定义在 pandas/core/frame.py 与 pandas/core/frame.pypd.concat的入口在 pandas/core/reshape/concat.py。阅读这些文件可以进一步理解id_vars、var_name等未在速查表展开的参数。五、合并数据集Combine Data Setsmerge 与过滤式联接速查表第二页首先给出四张示例小表adf 含 A、B 两行bdf 含 C 行键为x1演示四种标准联接代码作用pd.merge(adf, bdf, howleft, onx1)左联接把 bdf 中匹配的行接到 adf 上未匹配处为 NaNpd.merge(adf, bdf, howright, onx1)右联接把 adf 中匹配的行接到 bdf 上pd.merge(adf, bdf, howinner, onx1)内联接只保留两边都有的行pd.merge(adf, bdf, howouter, onx1)外联接保留所有值、所有行过滤式联接Filtering Joins——不真正拼接列只按成员关系过滤行adf[adf.x1.isin(bdf.x1)] # adf 中在 bdf 里有匹配的所有行 adf[~adf.x1.isin(bdf.x1)] # adf 中在 bdf 里没有匹配的所有行逐行变换类方法同一页右侧常用于构造衍生列代码作用shift(1)复制一份值向下平移 1产生滞后 lagshift(-1)复制一份值向上平移 1产生超前rank(methoddense)排名并列不留空档rank(methodmin)排名并列取最小名次rank(methodfirst)排名并列名次归先出现的值rank(pctTrue)排名归一化到区间 [0, 1]cumsum()累积和cummax()累积最大值cummin()累积最小值cumprod()累积乘积六、类型转换Changing Type代码作用pd.to_numeric(data)将非数值类型转换为数值类型pd.to_datetime(data)将非日期类型转换为 datetime 类型pd.to_timedelta(data)将非 timedelta 类型转换为 timedeltadf.astype(type)将数据转换为几乎任意给定类型包括 categoricaldf.infer_objects()尝试为 object 类型数据推断出更合适的类型df.convert_dtypes()将各列转换为尽可能好的 dtype七、日期时间组件提取Datetime对含 datetime 数据的 Series使用dt访问器提取各分量PPT 第二页给出 7 个示例代码作用s.dt.year提取年份s.dt.month提取月份整数s.dt.day提取日整数s.dt.quarter该日期所在的季度s.dt.hour提取小时s.dt.minute提取分钟s.dt.second提取秒八、映射Mappingmap 与 apply速查表强调两者都是“把映射应用到 DataFrame/Series 的每个元素上适合重新归类或变换数据”s.map(lambda x: 2 * x) # 返回 Series 的副本其中每个元素都变为原来的 2 倍 df.apply(lambda s: s.max() - s.min(), axis1) # 返回一个 Series值为 DataFrame 每一行的最大值与最小值之差九、Series 字符串操作str 访问器“与 Python 字符串方法相似但它们是向量化的能高效地作用于整个 Series”PPT 原话代码作用s.str.count(pattern)返回每个元素中匹配计数的整数 Seriess.str.get(index)返回每个元素在给定索引处的数据s.str.join(sep)返回每个元素被拼接后的 Seriess.str.title()将每个单词的首字母大写s.str.len()返回每个元素长度的 Seriess.str.cat()将元素拼接为一个字符串s.str.partition(sep)在分隔符第一次出现处拆分字符串s.str.slice(start, stop, step)对每个字符串切片s.str.replace(pat, rep)用正则替换每个字符串中的模式s.str.isalnum()检查每个元素是否全是字母数字十、全局选项Options五个函数与 display.* 配置速查表把 pandas 的“全局行为控制”列为独立一节pandas 提供若干 option用于全局控制其行为、显示等选项可通过pd.options.option_name查询和设置例如pd.options.display.max_rows 20 # 将 display.max_rows 设为 20选项管理五函数PPT 第三页“Functions”小节代码作用get_option(option)获取指定选项的值set_option(option)设置指定选项的值reset_option(options)将所给选项重置为默认值describe_option(options)打印所给选项的描述option_context(options)在临时选项设置下执行代码执行完毕后自动还原常用显示选项PPT“Frequently Used Options”小节的完整清单选项含义display.max_rows美观打印时显示的最大行数display.max_columns美观打印时显示的最大列数display.expand_frame_repr控制 DataFrame 表示是否跨页展开display.large_repr控制超过最大行/列数的 DataFrame 是被截断truncated还是摘要显示summarizeddisplay.precision输出显示的小数精度display.max_colwidth列的最大宽度超长的单元格会被截断display.max_info_columns调用info()后显示的最大列数display.chop_threshold显示 Series/DataFrame 时把接近零的值舍入为零的阈值display.colheader_justify控制列标题的对齐方式源码佐证上述display.*选项在 pandas/_config/display.py 中通过cf.register_option(...)逐一注册文件以with cf.config_prefix(display):组织选项查询/设置/临时上下文的机制实现于 pandas/_config/config.py其中option_context定义见 config.py。因此pd.options.display.max_rows 20本质是向该注册表写入值而option_context可作为上下文管理器在代码块内临时改值、出块即还原。十一、绘图Plottingdf.plot 家族PPT 第三页将绘图分为“基础图型”与“参数调整”两组基础图型代码作用df.plot()为 DataFrame 绘制折线图df.plot.scatter(xw, yh)散点图df.plot.hist()直方图df.plot.pie()饼图df.plot.bar()柱状图df.plot.boxplot()箱线图df.plot.area()面积图df.plot.hexbin()六边形分箱图hexbin常用参数代码作用df.plot(subplotsTrue)每个列绘制到独立的子图df.plot(titleGraph of A against B)设置图标题df.plot(stackedTrue)将各列数据堆叠仅 bar、barh、area 有效df.plot(alpha0.5)透明度设为 50%df.plot(cumulativeTrue)生成累积图df.plot(bins30)设置直方图的分组箱数PPT 还特别强调参数可组合例如对 3 列 DataFrame 各画一条独立折线并分别设标题df.plot(subplotsTrue, title[col1, col2, col3]) # 标题列表中第一个字符串对应最左侧第一列的图十二、输入/输出Input/Output速查表给出的读写对照如下代码作用df pd.read_csv(filepath)从 CSV 文件读入df pd.read_html(filepath)从 HTML 文件读入df pd.read_excel(filepath)从 xls及相关格式文件读入df pd.read_sql(filepath)从 SQL 读入pd.read_clipboard()从系统剪贴板读入文本df.to_parquet(filepath)写出为 Parquet 文件df.to_feather(filepath)写出为 Feather 文件df.to_hdf(filepath)写出为 HDF 文件df.to_clipboard()把对象复制到系统剪贴板PPT 对输入输出做了重要区分常见的输入格式CSV、JSON、HTML偏人类可读常见的输出格式feather、parquet、HDF则更偏向性能与可扩展性的优化。这些read_*/to_*的实现在 pandas/io/ 目录下按格式分文件组织如 pandas/io/parsers/ 处理 CSV 解析、pandas/io/parquet.py、pandas/io/pytables.py 等可作为深入阅读的入口。使用建议与延伸阅读打印随身查按 doc/cheatsheet/README.md 的说法直接用 Pandas_Cheat_Sheet.pptx 打开后可“另存为 PDF”重新排版打印三个语言版本中英文版内容最全需要最全条目时以英文版为准进阶README 提到 DataCamp 维护的 Pandas Cheat Sheet 提供 PDF / Google Colab / Streamlit 三种形态可作为交互式补充README 附有对应入口本文不转载外链深入源码本文各节引用的实现落点——melt/pivot/concat在 pandas/core/reshape/选项注册在 pandas/_config/display.py 与 pandas/_config/config.pyI/O 在 pandas/io/——配合 doc/source/user_guide/ 下的官方用户指南可以把速查表上的一条命令展开成完整的手册式讲解。【免费下载链接】pandasFlexible and powerful data analysis / manipulation library for Python, providing labeled data structures similar to R data.frame objects, statistical functions, and much more项目地址: https://gitcode.com/gh_mirrors/pa/pandas创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考